从串口发送数据

时间:2016-02-16 09:26:25

标签: python serial-port raspberry-pi2 zigbee

我想通过串口发送一个字符串:

我有两个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')

现在我没收到任何东西......我不知道为什么。

每个人都知道我的问题?

2 个答案:

答案 0 :(得分:1)

在开始向其发送数据之前,打开串口后添加延迟。在打开串口之前,XBee模块可能无法启动,并且需要一些时间来启动并重新建立到另一个模块的链接。

9600波特(大约960 cps),如果你丢失190个字符(10个序列0到9,每个19个字符包括空格和CRLF),你需要大约190/960 = 0.2秒的延迟。如果你不赶时间,最多可以将它压缩0.5秒,看看是否可以解决问题。

答案 1 :(得分:0)

一些可能性:

  • 由于它不再是一个连续的循环,当你在第一个Pi上运行脚本时,与另一个Pi的连接应该是持久的。连接是否持久?
  • 串口ttyUSB0是否正确?使用dmesg检查串行端口。
  • 连接可能松动,或Pi的电源可能不足。

如果有任何效果,请更新。