【发布时间】:2019-04-23 23:53:09
【问题描述】:
我正在处理一个现有项目。 到目前为止,PC 软件控制着 Arduino Due。 PC 软件向 Arduino Due 发送串行命令。
我想做的是用python脚本替换PC软件。蟒蛇 3.5。
所以我正在使用pyserial。
问题似乎是 python 脚本没有将所有字符发送到 Arduino Due。它遗漏了一些最后的字符。
比较难理解的部分如下:
- 当我将字符从 python 脚本发送到另一个 PC 终端而不是 Arduino 时,我可以成功地从终端收集所有字符,我使用的是 Bray 的终端。
- 当我从终端向 Arduino Due 发送相同的字符串时,Arduino Due 成功收集了发送的数据。 似乎只有 Python 到 Arduino 不起作用,而 Python 到 PC 终端正在工作并且 Arduino 的 PC 终端正在工作
我这样打开串口:
my_port = serial.Serial('COM6', 115200)
while connected != True:
if my_port.is_open == 1:
connected = True
谁能提供任何见解? 谢谢。
编辑:我刚刚注意到,当 python 脚本发送数据时,我正在使用的调试串行端口发送损坏的数据。
【问题讨论】:
-
您是不是发送字符太快了?您可能希望在发送的字符之间暂停。您将无法在终端上快速键入它们。 115Kib/s 对于串行连接来说非常快。如果这是它想要的速度,你显然不会压倒串行端口,但你可能会压倒它另一端的程序。
-
python程序自动发送数据,我希望它快。
-
我知道您希望它更快,但您真的需要每秒发送超过 10,000 个字符吗?这就是 115.2Kib/s 的含义,即 8 个数据位、1 个起始位、1 个停止位和 1 个奇偶校验位。而且我并不是建议 Python 程序不自动发送数据,只是不要以如此快的速度发送数据。
-
不,你是对的,它不一定要很快,但是由于我正在开发一个应该与旧版本一起运行的版本,我无法更改,所以我必须坚持使用 115200。
-
您的串行电缆有多少根导线?如果不是完整的 RS232,那么您依赖于软件握手,这很容易导致高速丢失字符。