串行端口值不是有效的ascii

时间:2013-08-01 10:08:39

标签: python serial-port hex ascii pyserial

我有python pyserial脚本从串口读取值(比例)
设置正确的波特率等后。
在putty上它返回一个值:

0.00 Kg  
0.00 Kg

但是来自pyserial readline() / read()的值会返回包含无效ascii的bytearray

b'  \xb0\xae\xb0\xb0 kg \r\x8a  '
  • \xb0\xae等于176,174十进制。
  • 十进制的字符0应为48,而0x30
  • 字符。十进制应为46,0x2E

这里有什么问题?

2 个答案:

答案 0 :(得分:3)

请注意,176-128 = 48,而174-128 = 46。因此,您看到的某些数字大于您所期望的数字128.这意味着为某些字符设置了最高有效位(第7位),这反过来意味着某些通信设置(奇偶校验,长度) ,停止位)是错误的。试试7E1:

serial.Serial(..., bytesize=serial.SEVENBITS,
    parity=serial.PARITY_EVEN, stopbits=serial.STOPBITS_ONE)

我无法确定这些参数当然是正确的;你必须找到正确的。

答案 1 :(得分:0)

  
    
      

print chr(0xb0-0x80)       0       print chr(0xae-0x80)       。       等 - 我怀疑你的数据长度设置不正确,(数据位)。