在pySerial中发送和读取ASCII值
我正在尝试用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)