【问题标题】:Serial Port value not a valid ascii串行端口值不是有效的 ascii
【发布时间】:2013-08-02 04:47:04
【问题描述】:

我有 python pyserial 脚本从串行端口(刻度)读取值
设置正确的波特率等后..
在腻子上,它返回一个值:

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

这里有什么问题?

【问题讨论】:

    标签: python serial-port hex ascii pyserial


    【解决方案1】:

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

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

    我当然不能确定这些参数是否正确;你必须找到正确的。

    【讨论】:

    • 我的pyserial的配置好像有问题,稍后我会看看更新,谢谢
    【解决方案2】:

    打印字符(0xb0-0x80) 0 打印字符(0xae-0x80) . 等等 - 我怀疑你的数据长度设置不正确,(数据位)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2021-08-24
      • 2019-04-03
      相关资源
      最近更新 更多