我对 HereLink 和 Pymavlink 还很陌生。
我有一个连接到 Linux 机器的 HereLink RC 控制器。 RC 与 Airunit 配对:
Air-unit ← - - - - - - → RC ↔ Linux 机器(运行 pymavlink)
在 Linux 机器内,我有一个非常简单的 Python 脚本:
master = mavutil.mavlink_connection('udp:192.168.144.133:14550', baud=57600)
master.wait_heartbeat()
while True:
try:
print(master.recv_match().to_dict())
except:
pass
time.sleep(0.1)
我的代码卡在
wait_heartbeat()
函数上。如果我在 Linux 机器上打开 QGC 应用程序,这个 wait_heartbeat()
功能就会开始工作,然后我开始接收消息。看起来 QGC 正在幕后施展我不知道的魔法。
如果有人能帮助找出这背后的原因和逻辑,我将非常感激:)
有同样的问题。
Ubuntu 22.04.4。 Python 3.12.2。 HolyBro Pixhawk 6C。 PX4 1.14.0 固件。电缆:PC 上的 USB-A 到 Pixhawk 上的 USB-C。
udev 文件:
SUBSYSTEM=="tty", ATTRS{idVendor}=="3185", ATTRS{idProduct}=="0038", SYMLINK+="ttyPixhawk"
代码:
from pymavlink import mavutil
master = mavutil.mavlink_connection("/dev/ttyPixhawk", 115200)
master.wait_heartbeat()
永远不会从 wait_heartbeat() 调用中返回。如果我运行 QGroundControl (4.3.0) 然后退出,我上面的代码就可以工作。
用户 MerseyViking 去年也经历过这种情况(为什么我的 Pixhawk 4 拒绝通过 USB 串行通信?)
我已经尝试了大部分 pymavlink 示例脚本。同样的问题。