84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
如图,想从接收到的数据里的频率信息和幅度信息读出来。但是这个命令头里的数据点数怎么读出来呢?还有后面的数据?
后端是这样跟我说的,用sizeof读头大小,然后定义个XX,XX.datanum把数据点数知道了,然后内存复制频率信息,再来读取。。。。一脸蒙逼。。。
之前做过读tcp数据的,所以用什么样的方法接收我知道,但是怎么解析呢,之前没有定义的这个命令头,而且数据字节标了的,仅用readInt方法就把数据读出来了。
这个应该怎么弄呢?求大神帮助。
闭关修行中......
没太明白你的意思,不过不管tcp 还是 udp 在node里面处理起来都还是比较容易的。
以下代码贴的是官方手册的。获取数据在画线的这一段
const dgram = require('dgram'); const server = dgram.createSocket('udp4'); server.on('error', (err) => { console.log(`server error:\n${err.stack}`); server.close(); }); ---------- ##接收数据 server.on('message', (msg, rinfo) => { console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`); }); ##接收数据 ---------- server.on('listening', () => { var address = server.address(); console.log(`server listening ${address.address}:${address.port}`); }); server.bind(41234);
拿到数据后估计就是按你和后台商量好的结构解析数据了把。
楼上的方法是对的,不过之前用tcp方式的时候我已经知道了。我让后台把命令头读出是8个字节的。init 4字节,bool也是4字节。然后就简单了,readFloat直接读数据(以我的为例,这里面读出来是800),.length读出来长度为6408,这就好办了,排除前面的8字节,后面800乘以4+800乘以4=6400刚好分别对应频率和幅度信息,一个readInt32LE循环读出数据就行了。
没太明白你的意思,不过不管tcp 还是 udp 在node里面处理起来都还是比较容易的。
以下代码贴的是官方手册的。
获取数据在画线的这一段
拿到数据后估计就是按你和后台商量好的结构解析数据了把。
楼上的方法是对的,不过之前用tcp方式的时候我已经知道了。
我让后台把命令头读出是8个字节的。init 4字节,bool也是4字节。
然后就简单了,readFloat直接读数据(以我的为例,这里面读出来是800),.length读出来长度为6408,
这就好办了,排除前面的8字节,后面800乘以4+800乘以4=6400刚好分别对应频率和幅度信息,
一个readInt32LE循环读出数据就行了。