Я работаю с прошивкой 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;
}
Можете ли вы помочь мне исправить