【发布时间】:2012-09-27 08:30:30
【问题描述】:
我正在使用绑定到 COM 端口的 Reactive Extensions Observable 数据流,并且我正在显示来自该数据流的缓冲区,该数据流在一段时间内被占用。
这是我的基本 Rx 代码,其中以 25 毫秒的块返回字节数据。我想在第一次达到特定阈值时触发缓冲区的生成,然后仅在收集前一个缓冲区后再次执行。
var o = serialData.Buffer(TimeSpan.FromMilliseconds(25))
.ObserveOn(SynchronizationContext.Current);
var mySerialObserver = o.Subscribe<IList<byte>>(SubscribeAction());
serialData 对象是来自 USB COM 端口的连续字节值流的 IObservable。代码改编自 Bart De Smet 帖子:
How to implement SerialPort parser with Rx
使用 Rx Buffer(TimeSpan) 方法,我可以对 serialData 进行采样并在图表上显示缓冲区值(在我的 SubscribeAction 方法中使用 DynamicDataDisplay)。
我想将功能扩展为类似于示波器触发器,这可能涉及在 serialData 值超过给定阈值时调用 Rx Buffer 方法,但不收集重叠缓冲区(这类似于示波器时基在一定的输入电压下触发,但直到扫描完成才再次触发)
请有人给我一些关于如何实施的想法?
【问题讨论】:
-
我认为您需要多解释一下您的问题/要求。 “临界点”? “集”?等等……
-
我有一个来自 COM 端口的 IObservable 流 - 我从 Bart de Smet 的代码示例中获得的 serialData
-
对不起,谜团,我在主要帖子中提供了更多细节
标签: .net c#-4.0 system.reactive