在pySerial中发送和读取ASCII值

0 投票
2 回答
14591 浏览
提问于 2025-04-17 13:28

我正在尝试用Python和pySerial与一个使用ASCII格式通信的秤进行交流。虽然我没有使用ASCII格式的经验,但我有一些基本的问题。

比如,我想用pySerial发送一个字符'T',并用CRLF结束,这该怎么做呢?我试过

 myserialport.write('TCRLF')
 myserialport.write('T\r\n')
 myserialport.write('T\n\r')

我还想从秤上读取数据,我期待的数据格式是像'208.01 g'这样的。但当我使用

myserialport.read(10)

或者

myserialport.readline(10)

时,我从秤上得到的是这些

]ëýýÿ]W
ÿ]u_u]ÿ]uÕ
ýWýWë]uÝõW
ÿ½õÿ½WW]Ýý
WýW]Wÿ½ÿ×ë

我在网上查了一下,似乎pySerial默认应该可以接收ASCII格式的数据,并且也能发送……但我不知道为什么它不工作。任何帮助都会很感激。

2 个回答

0

问题出在USB转串口转换器的接地连接上(第7脚需要接地)。如果你也遇到同样的问题,检查一下你的引脚排列。(Fisher Scintific的秤把第7脚当作接地,这不太正常,因为通常是第5脚接地……挺奇怪的……谢谢大家。)

1

这是将字符通过CRLF发送到串口的正确方法:

myserialport.write('T\r\n')

关于混乱的响应 - 确保你正确设置了波特率、数据位数、停止位和校验位。你可以在秤的说明书中找到所需的值。

例如:

from serial import Serial, SEVENBITS, STOPBITS_ONE, PARITY_EVEN
myserialport = Serial('/dev/ttyS0', baudrate=9600, bytesize=SEVENBITS, parity=PARITY_EVEN, stopbits=STOPBITS_ONE)

撰写回答