python - 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,但它没有用。
解决方案
该片段对我有用,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
推荐阅读
- haskell - Haskell 中的模块签名是什么?
- c++ - 嵌套在二维数组中的for循环
- java - @WebMvcTest creating more than one Controller for some reason
- css - 如何使用自定义主题更改 mat-button 中的文本颜色
- javascript - 使用 JavaScript/Angular/TypeScript 从另一个选择列表中选择一个选项
- r - 使用 emmeans 的 Box-Cox 反变换无法正常工作
- javascript - 有没有可行的解决方案在Vue js中将组件模板拆分为多个部分?
- jasper-reports - 在子数据集中引用 Main_Dataset
- html - 使用 unicode 字符输入自动完成问题
- kubernetes - Helm 图表之间的依赖关系是否应该反映微服务之间的依赖关系?