在pySerial中发送和读取ASCII值

时间:2013-01-23 23:04:52

标签: python pyserial

我正在尝试使用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格式接收数据,并发送它...但我迷失了为什么它不起作用。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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