UDP连接:“警告[mavlink]忽略具有相同SYS / COMP(1/1)的CMD”如何解决

时间:2019-03-25 12:39:35

标签: node.js udp mavlink px4 dgrams

我正在使用PX4固件(最后一个)和JmavSim作为模拟器。 我已启用UDP端口

INFO  [mavlink] mode: Normal, data rate: 4000000 B/s on udp port 14570 remote port 14550
INFO  [mavlink] mode: Onboard, data rate: 4000000 B/s on udp port 14580 remote port 14540

我在这里找到了一个有趣的nodejs项目: https://github.com/kvenux/nodegcs

使用此库解码mavlink消息

https://github.com/omcaree/node-mavlink#readme

,并且我尝试使用dgram库(而不是“ net”)重写它,以便使用UDP连接。

它似乎可以很好地用作数据列表器。

我创建套接字(此处为connection_port:14570):

mav_port_receive = dgram.createSocket("udp4")
mav_port_receive.bind( connection_port,connection_path);
mav_parser.on( 'ready', function () {
  mav_port_receive.on("message", (msg, rinfo) => {
    if(msg[0]!= 0 && msg[1]!= 7){
      var radio_status = {
        rssi: parseInt(msg[2]),
     };
    } 
    mav_parser.parse(msg);
  });
..
}

但是当我尝试使用此代码发送命令时 ->此处端口:14550

mav_parser.createMessage("COMMAND_LONG", {
"param1": param1,
"param2": param2,
"param3": param3,
"param4": param4,
"param5": param5,
"param6": param6,
"param7": param7,
"command": command,
"target_system":1,
"target_component": 1,
"confirmation": confirmation
},
function (message) {
   mav_port_receive.send(message.buffer, 0, message.buffer.length, PORT, HOST, function(err, bytes) {
    if (err)  {
      LOG(err)
    }

  });

  return;
});
}

它在px4控制台中返回一个错误

"WARN [mavlink] ignoring CMD with same SYS/COMP (1/1)"

我试图改变它创建缓冲区的方式,但是问题仍然存在。 我尝试使用不同的数值来更改““ target_system”:1,“ target_component”:1“,但它什么也不做(甚至没有消息错误)

我尝试使用其他udp套接字(一个新的)...同样的问题

即使将基本命令用作“ arm”,它也无法工作并返回相同的错误。

function port_send_message(message) {


    mav_port_receive.send(message.buffer, 0, message.buffer.length, PORT, HOST, function(err, bytes) {
      if (err) throw err;

      // mav_port_send.close();
    });

    return;

}

你能帮我解决吗?

0 个答案:

没有答案