UDP-соединение: «WARN [mavlink] игнорируя CMD с тем же SYS / COMP (1/1)», как исправить - PullRequest
0 голосов
/ 25 марта 2019

Я работаю с прошивкой 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;

}

Можете ли вы помочь мне исправить

...