【问题标题】:Sending data from serial port从串口发送数据
【发布时间】:2016-02-16 09:26:24
【问题描述】:

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

我有两个树莓派 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 开始。在这个输出中,我有单独的单词“world”...

但我只想用这段代码发送一个字符串:

import serial

ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=.5)

ser.write('Hello world ! \r\n')

现在我什么也没收到……我不知道为什么。

大家都知道我的问题吗?

【问题讨论】:

    标签: python serial-port raspberry-pi2 zigbee


    【解决方案1】:

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

    在 9600 波特(大约 960 cps)下,如果您丢失 190 个字符(10 个序列 0 到 9,每 19 个字符包括空格和 CRLF),您需要大约 190/960 = 0.2 秒的延迟。如果您不着急,可以将其提高到 0.5 秒,看看是否能解决问题。

    【讨论】:

      【解决方案2】:

      一些可能性:

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

      如果其中任何一个有效,请更新。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-31
        • 1970-01-01
        • 2011-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多