我想通过串口发送一个字符串:
我有两个raspberry pi 2.每个都有一个xbee模块。我想将数据从一个发送到另一个。它们连接正确。
为了测试发送数据我有这个小小的python脚本:
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=.5)
cpt = 0
while True:
ser.write('{}'.format(cpt))
ser.write(' Hello world ! \r\n')
cpt = cpt + 1
我与minicom相关的其他树莓派收到了这些数据
world !
8 Hello world !
9 Hello world !
10 Hello world !
11 Hello world !
12 Hello world !
13 Hello world !
14 Hello world !
15 Hello world !
...
输出很奇怪,有时它从10开始,有时是5。在这个输出中,我有“#34; world"这是独自的...
但我只想用这段代码发送一个字符串:
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=.5)
ser.write('Hello world ! \r\n')
现在我没收到任何东西......我不知道为什么。
每个人都知道我的问题?
答案 0 :(得分:1)
在开始向其发送数据之前,打开串口后添加延迟。在打开串口之前,XBee模块可能无法启动,并且需要一些时间来启动并重新建立到另一个模块的链接。
9600波特(大约960 cps),如果你丢失190个字符(10个序列0到9,每个19个字符包括空格和CRLF),你需要大约190/960 = 0.2秒的延迟。如果你不赶时间,最多可以将它压缩0.5秒,看看是否可以解决问题。
答案 1 :(得分:0)
一些可能性:
如果有任何效果,请更新。