pyserial EOT как терминатор - PullRequest
0 голосов
/ 23 января 2019

Я прочитал некоторые метки RFID с <STX>RFID String<EOT>

как я могу использовать read_until с этим символом EOT. Я попробовал это:

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

не работает, я получил строку после таймаута

[EDIT]

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, но это не сработало.

1 Ответ

0 голосов
/ 23 января 2019

этот фрагмент работал для меня, eol как bytearray, а затем считал один за другим в bytearray и проверил, является ли последний байт 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
...