【发布时间】:2010-05-16 18:25:05
【问题描述】:
假设只要有 100 个字节可用,我就从 SerialPort 读取数据,否则什么都不做。这意味着,剩余的数据仍将在 SerialPort 缓冲区中可用。此读取在 DataReceived 的事件处理程序中完成。
现在假设出现一种情况,即 SerilaPort 缓冲区中有 50 个字节,但没有更多数据进来。据我了解,只要有一定数量的字节可用于从缓冲区读取,就会触发 DataReceived 事件。
现在,在给定的场景中,如果我从不读取这 50 个字节,是否会因为这些未读取字节的存在而连续激活事件?
【问题讨论】:
-
我怀疑您使用的是 .Net 2.0 SerialPort 对象。您期望如何触发 DataReceived 事件?通过 SerialPort.ReadTimeout?通过 SerialPort.PinChanged?
-
我使用的是.NET 3.5,但我猜内部实现与2.0版本相同。我所做的只是使用委托 SerialDataReceivedEventHandler 向 DataReceived 事件注册一个函数。
-
没有。从文档“当从 SerialPort 对象接收到数据时,在辅助线程上引发 DataReceived 事件。”阅读此social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/…
标签: c# events serial-port buffer