数据:一个大块,还是一堆小块?

时间:2013-03-26 15:27:58

标签: c# stream uart

我目前正在BlueTooth连接器上发送128包64字节。

这来自嵌入式系统,并提供给C#GUI,用图表显示数据。我在嵌入式系统上做代码。我没有在GUI上编写代码;但我很确定它正在为UART的东西和图形化的东西使用多个线程。每个样本都是64字节长。

我们现在要将USB添加到可用数据路径的选项中。 (目前我们有蓝牙和UART)。

我可以复制该方案并发送相同的128个字节的128个blob。

我还可以重新排列数据(我认为)并在一次旋转中发送一个8,192字节的blob。

无论哪种方式都需要相当大的工作量。

问题:单个更大的blob会让我对吞吐量有所改善吗?或者我应该坚持使用一大堆较小的blob并让所有线程有时间完成他们的家务活?

1 个答案:

答案 0 :(得分:1)

使用奈奎斯特采样定理解决了这个问题。

Nyquist Sampling Theorem

基本上,如果您的屏幕每秒只更新60次,并且您的系统能够在60秒内接收足够的数据以实时正确更新图表 - 那么获得更高的吞吐量并不能真正为您带来任何好处。您只需在绘图的曲线上获得更精细的粒度。如果您目前获得的内容足够准确,那么提高吞吐量只是额外的工作。

如果您需要非常准确地分析线路,更高的吞吐量将有助于获取所有这些额外的数据点。这基本上是图表的分辨率,屏幕刷新的速度以及数据从芯片发送到计算机的速率之间的杂耍问题。

作为一个好的经验法则,对于大多数直接信号上的视觉效果而言,每秒超过200个数据点的任何事物都会被杀死,而这些信号并没有疯狂的高频尖峰。根据对数据的处理方式,它可能会或可能不会过度。这实际上取决于您正在分析的信号。如果它具有极高的频率,则需要更频繁地采样以捕获数据点中的信号。