首页 > 解决方案 > pyserial EOT 作为终结者

问题描述

我读了一些RFID标签<STX>RFID String<EOT>

我如何将 read_until 与这个 EOT 字符一起使用。我试过这个:

serResponse = self.ser.read_until(chr(4))

没用,超时后我得到了字符串

[编辑]

while True:
    for c in ser.read():
        line.append(c)
        if c == '\n':
            print("Line: " + ''.join(line))
            line = []
            break

如何更改 '\n' 以检查 EOT 或 STX 字符。

一个标签的 print(c) 输出:2 82 51 48 52 50 70 65 50 49 65 49 4

我以为我可以检查 c=='4' 或 c==4,但它没有用。

标签: pythonpyserial

解决方案


该片段对我有用,eol 作为字节数组,然后一个接一个地读入字节数组并检查最后一个字节是否是 eol

eol = bytearray([4])
    leneol = len(eol)
    line = bytearray()
    while True:
         c = self.ser.read(1)
          if c:
              line += c
              if line[-leneol:] == eol:
                  break
          else:
              break

推荐阅读