0

我正在尝试与使用 python 和 pySerial 以 ASCII 格式进行通信的秤进行通信。我从来没有使用过 ASCII 格式的经验。所以我有基本的问题。例如,我将如何使用 pySerial 发送一个字符 T 并使用 ASCII 格式使用 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 格式的数据,并发送它......但我不知道它为什么不工作。任何帮助,将不胜感激。

4

2 回答 2

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)
于 2013-01-23T23:45:48.337 回答
0

问题是 USB 到串行转换器的接地连接(引脚 7 需要接地)。如果您有同样的问题,请检查您的引脚。(Fisher Scintific 秤使用引脚 7 作为接地,这是不正常的,因为引脚 5 接地......奇怪......)谢谢大家。

于 2013-02-05T22:16:03.317 回答