问题就在这里。传感器板以各种 UDP 数据包大小每秒发送 3 次 31 字节数据。例如:
1st packet 6 bytes
2nd packet 8 bytes
3rd packet 1 byte
4th packet 5 bytes
5th packet 5 bytes
6th packet 6 bytes
1st packet 4 bytes
2nd packet 5 bytes
3rd packet 1 byte
4th packet 7 bytes
5th packet 3 bytes
6th packet 6 bytes
7th packet 5 bytes
有多个传感器板从不同位置发送数据。
我遇到的问题是如何在接收到多个传感器板数据时对其进行排序检测。我可以顺序检测一 block 板,因为它是连续的。但不知道如何顺序检测每个传感器板的数据,然后将每个传感器板的每100组数据平均存储。如果没有一个结构来收集每个唯一发送者的数据,直到收到 31 字节的缓冲区以形成整个数据包,然后将其存储在另一个结构中,直到为每个发送者收到 100 组数据,我不知道如何做到这一点。
正如我所说,使用一个设备,我可以对接收一整套 31 字节进行序列检测。数据存储在mysql数据库中。
程序是用C语言编写的。
任何想法将不胜感激。
谢谢
杰森
最佳答案
这是UDP,源端口号不应该是数据包的一部分吗?您可以根据数据包的来源,依次为每个数据包建立 31 字节的数据集。
但是,由于它是 UDP,因此您无法保证数据包会按顺序发送。路由问题可能会导致数据包丢失、延迟和各种问题。如果它实际上不是通过互联网传输,而是只有一跳,那么这些问题将是最小的。
如果您没有方法修改这些传感器的输出,那么我认为您将必须拥有多个接收器,以便您可以顺序构建一个 31 字节数据包,然后将其传递给组合的东西来自所有传感器的数据。
关于c++ - 传感器数据收集 C 守护进程困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10540185/