我目前正在通过蓝牙连接器发送128个包,每个包64字节。
这来自嵌入式系统,并传递给c# GUI,该GUI用图形显示数据。我正在做嵌入式系统上的代码。我没有在GUI上编写代码;但我很确定它使用多线程来处理UART和绘图。每个样本长度为64字节。
我们现在将USB添加到可用数据路径的选项中。(目前我们有蓝牙和UART)。
我可以复制这个方案并发送相同的64字节128 blob集合。
我也可以重新排列数据(我认为),并一次性发送一个8,192字节的blob。
这两种方法都需要我做大量的工作。
问题:单个更大的blob是否会提高吞吐量?或者我应该坚持用一堆小的斑点,让所有的线程都有时间完成它们的家务?
用Nyquist抽样定理解决了这个问题。
奈奎斯特抽样定理
基本上,如果你的屏幕每秒只更新60次,而你的系统能够在60秒内接收到足够的数据来正确地实时更新图形,那么获得更高的吞吐量并没有真正给你带来任何东西。你只是在你绘制的曲线上得到了更细的粒度。如果您当前获得的数据足够准确,那么追求更高的吞吐量只是额外的工作。
如果您需要非常准确地分析线路,更高的吞吐量将有助于获得所有这些额外的数据点。这基本上是图形分辨率、屏幕刷新速度和数据从芯片发送到计算机的速率之间的一个杂糅问题。
作为一个很好的经验法则,任何超过200个数据点每秒是超过视觉效果的最直接的信号,没有疯狂的高频尖峰无处不在。这取决于对数据做了什么,它可能是或可能不是过度的。这取决于你分析的信号。如果它具有极高的频率,则需要更频繁地采样以捕获数据点中的信号。