[英]receiving and sending mavlink messages using pymavlink library
我在Python中創建了QGC(地面控制站)和車輛之間的代理。 這是代碼:
gcs_conn = mavutil.mavlink_connection('tcpin:localhost:15795')
gcs_conn.wait_heartbeat()
print("Heartbeat from system (system %u component %u)" %(gcs_conn.target_system, gcs_conn.target_system))
vehicle = mavutil.mavlink_connection('tcp:localhost:5760')
vehicle.wait_heartbeat() # recieving heartbeat from the vehicle
print("Heartbeat from system (system %u component %u)" %(vehicle.target_system, vehicle.target_system))
while True:
gcs_msg = gcs_conn.recv_match()
if gcs_msg == None:
pass
else:
vehicle.mav.send(gcs_msg)
print(gcs_msg)
vcl_msg = vehicle.recv_match()
if vcl_msg == None:
pass
else:
gcs_conn.mav.send(vcl_msg)
print(vcl_msg)
我需要接收來自QGC的消息,然后將它們轉發到車輛,還需要接收來自車輛的消息,並將它們轉發給QGC。 當我運行代碼時,出現此錯誤 。
有誰可以幫助我嗎?
如果在發送之前打印消息,您會發現嘗試發送BAD_DATA
消息類型時,消息總是失敗。
因此,這應該可以解決(與vcl_msg
相同):
if gcs_msg and gcs_msg.get_type() != 'BAD_DATA':
vehicle.mav.send(gcs_msg)
PD:我注意到您沒有將tcp
指定為輸入或輸出,它默認為input
。 比意味着兩個連接都是輸入。 我建議將GCS連接設置為輸出:
gcs_conn = mavutil.mavlink_connection('tcp:localhost:15795', input=False)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.