最近在做一个实验,接收udp信号发送过来的卫星航迹数据,在后台解算出它的航迹数据,然后将航迹数据发送到浏览器前端,将卫星的航迹图在浏览器前端可视化出来。
一、接收udp信号数据,在后台对原始数据解析解算
上图看到的是是一个udp信号发送模拟器,它发送的是卫星的航迹数据,发送端是在本机的6001端口,接收客户端是在本机的6000端口。(即发送器将udp信号数据从6001端口发送到6000端口)
在node.js中,可用“dgram”数据报模块绑定本机的6000端口,接收到发送过来的udp数据。代码如下:
// 创建服务端,6000端口
const dgram = require('dgram');
let server = dgram.createSocket('udp4');
//绑定端口和主机地址
server.bind(6000);
上面三行代码中,第一行引入了“dgram”数据报模块,引入了该模块就能创建一个声明为“server”的对象,然后用“server”的“bind()”方法,绑定6000端口,就为后面接收到udp数据做准备
//有新数据包被接收时,触发
var pp=[]; //定义一个数组,存放一帧数据中四个航迹点的数据
server.on('message', function (msg, rinfo) {
const buf1=msg.slice(0,2); //切分出航迹信息的HEAD
const buf2=msg.slice(2,4); //切分出航迹信息的N
const buf3=msg.slice(4,6); //切分出航迹信息的TYPE
const buf4=msg.slice(6,42); //切分出第一个航迹点的所有数据
const buf5=msg.slic