【发布时间】:2017-10-23 15:03:45
【问题描述】:
遇到了一个让我发疯的串行阅读问题。当前设置是连接到 RaspberryPi(标准 USB 连接)的 Arduino。尝试读取 Arduino 在 /dev/ttyACM0
上通过串行发送到 Raspberry 的串行信息当尝试一个非常基本的监控时,原始读取:
$ (stty raw; cat) < /dev/ttyACM0
RFBee ready to receive!
: 03 Packet: 80 0F EA 1D D9 00 F3 15 FF FF RSSI: -60 LQI: 30 Error: 7 Next: 64 Packets: 4
RFBee ready to receive!
Index: 00 Packet: E0 0E F2 C6 01 02 B1 91 FF FF RSSI: -60 LQI: 2F Error: 7 Next: 64 Packets: 1
Index: 01 Packet: 50 0D E7 FF 73 04 56 C4 FF FF RSSI: -60 LQI: 2F Error: 7 Next: 64 Packets: 2
Index: 02 Packet: 80 0D F6 1D D8 0C 11 BE FF FF RSSI: -61 LQI: 2F Error: 7 Next: 64 Packets: 3
Index: 03 Packet: 20 0D E7 D4 C1 86 AC CA FF FF RSSI: -61 LQI: 2E Error: 7 Next: 64 Packets: 4
Index: 04 Packet: E0 0D EF C6 03 0C FA CE FF FF RSSI: -61 LQI: 2F Error: 7 Next: 64 Packets: 5
Index: 00 Packet: 50 0B DF FF 71 06 74 4B FF FF RSSI: -60 LQI: 2E Error: 0 Next: 64 Packets: 6
Index: 01 Packet: 80 0B EA 1D D8 06 29 E4 FF FF RSSI: -60 LQI: 2E Error: 0 Next: 64 Packets: 7
Index: 02 Packet: 70 0A F8 AC 03 8C D4 16 FF FF RSSI: -61 LQI: 2E Error: 0 Next: 64 Packets: 8
这一切似乎或多或少都运行良好(除了准备接收线的双 RFBee),但随后开始逐行打印数据。 Minicom 以同样的方式工作,读取数据,一切正常。
使用 PySerial,使用以下代码:
#!/usr/bin/python -u
import serial
while True:
with serial.Serial('/dev/ttyACM0', 115200) as ser:
line = ser.readline()
if line != '':
print(line)
它只是打印出这些行:
$ python davis_collect.py
B DF CA FF FF RSSI: -60 LQI: 2E Error: 0 Next: 64 Packets: 9
RFBee ready to receive!
RFBee ready to receive!
RFBee ready to receive!
RFBee ready to receive!
RFBee ready to receive!
所以它首先捕获了缓冲区的任何部分,但由于某种原因,它无法停止打印那条漂亮的线条。
在上面添加一些基本信息:在我的笔记本上试过这个,PySerial 工作。串行通信显然也可以通过 RasPi 工作,因为它可以通过标准实用程序读取。
Python3 输出:
python3 davis_collect.py
b'RFBee ready to receive!\r\n'
b'RFBee ready to receive!\r\n'
b'RFBee ready to receive!\r\n'
b'RFBee ready to receive!\r\n'
b'RFBee ready to receive!\r\n'
目前没有找到类似的东西。任何想法,链接? (这里是第一次发帖,如果有什么需要补充的,请各位有经验的大侠给点建议)
【问题讨论】:
-
为什么每次循环都连接到串口?
-
嘿,好问题 :-) - 现在为什么这在所有可能的平台上都有效?我认为控制流和停止位很好,但不知何故错过了这一点。当我回到我的设置时,我会在 48 小时内尝试这个。感谢您指出这一点。
标签: python arduino raspberry-pi serial-port