在2个python代码上调用vehicle = connect()导致连接断开

时间:2018-08-21 14:25:09

标签: dronekit-python dronekit

我有2个在子进程中运行的python代码,都分别针对不同的任务(用于无线电控制器的通道记录,自动化等)调用vehicle = connect('/ dev / ttyS0',heartbeat_timeout = 30,baud = 57600)。

代码按预期工作,但是Raspberry Pi和PixHawk之间通过串行连接有时会丢失,然后自动重新连接。这让我很担心,因为它可能会影响数据记录的准确性。

我尝试将vehicle变量传递给其他python,并将vehicle包装到模块中,但两者均无效。有什么方法可以在2个python代码之间共享车辆变量,还是我坚持将我的代码组合起来以利用线程来获取全局变量?

谢谢。

1 个答案:

答案 0 :(得分:1)

要通过2个程序(在您的情况下为2个python脚本)连接到一辆车,您可以使用Mavproxy(http://ardupilot.github.io/MAVProxy/html/index.html),您可以将车辆连接到Mavproxy,然后在Mavproxy中添加2个输出,然后连接两个python脚本转换为Mavproxy。但是我建议使用多线程或多处理,而不是将其分成两个不同的脚本。


编辑: 您可以从终端启动Mavproxy,如下所示:

mavproxy.py --master=/dev/ttyAMA0 --baudrate 57600 --out 127.0.0.1:14550 --out 127.0.0.1:14551

其中/dev/ttyAMA0是您的车辆地址,然后将python脚本连接到127.0.0.1:14550127.0.0.1:14551