使用等价调用将C#SerialPort应用程序移植到Python和PySerial

2024-05-14 00:22:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前有一些旧的测试应用程序,它是用C语言编写的,我想用其他功能扩展它,但要利用Python/PySerial来完成

总的来说,我发现其他一些有用的SO线程(例如:C# .NET serial port connects, doesn't read or write)以及PySerial文档都很有用,但是我在通信方面遇到了一些问题。下面是如何传递内容的简化示例(IP消息中有一些更改):

_serialPort = new SerialPort("COM1", 115200, Parity.None, 8, StopBits.One);
_serialPort.Handshake = Handshake.None;
_serialPort.DtrEnable = true;
                        
_serialPort.WriteLine("login_string");
_serialPort.WriteLine("debug_string");

_serialPort.WriteLine("a message");

在Python中,我有:

import serial

port = serial.Serial(
            port="COM1",
            baudrate=115200,
            bytesize=serial.EIGHTBITS,
            parity=serial.PARITY_NONE,
            stopbits=serial.STOPBITS_ONE,
            dsrdtr=True,
        )

port.write(b'login_string\n')
port.write(b'debug_string\n')

port.write(b'a message\n')

我相信这是正确的,因为我必须在末尾添加\n换行符,并使用字符串上的前缀b将其转换为字节

我确实尝试过研究,我想我看到字符串在C#中表示为UTF-16?它转换成UTF-8了吗?这是有意义的,因为字节大小设置为8位

我还认为dsrdtr标志是必需的,因为使用了_serialPort.DtrEnable = true;

我觉得这应该行得通,但我不确定,我觉得我只是在回声室里旋转轮子。谢谢你的帮助


Tags: debugnonetruemessagestringportseriallogin