我正在开发一个应用程序,该应用程序从通过蓝牙传输数据的 DAQ 读取数据。数据包大小可以改变,采样率(1Hz - 512Hz)也可以改变,我可以使用缓冲区循环并从设备读取数据。
我的问题是,当数据包大小和采样率存在这样的变量时,如何正确处理数据?如何确定缓冲区大小?
目前我只是打开一个套接字,打开一个输入流,然后使用 while 循环(当套接字打开 == true 时)从流中读取,并处理数据(简单解码,而不是无关的任务)。
例如,一个数据包中有 23 个字节,而我目前的采样率非常低,为 1Hz。我有一个 256 字节的缓冲区,这意味着它不会在缓冲区的末尾容纳一个完整的数据包,我已经编写了代码让它运行到下一个缓冲区。读取数据后,从缓冲区中抓取一个数据包,解码并存储它,执行下一个数据包,等等。
我应该如何正确传输和处理数据?最终,我将在 512Hz 的 44 个数据包区域中抓取一些东西,正好处于蓝牙传输限制,我希望能够尽可能有效地处理它,并在过程中丢弃数据包时显示错误等。
TL;DR:我如何使用缓冲区和/或中断正确地流式传输数据。