gpt4 book ai didi

wpf - 是什么导致 .NET SerialPort 类 DataReceived 事件触发?

转载 作者:行者123 更新时间:2023-12-04 23:33:07 25 4
gpt4 key购买 nike

我从 MSDN 文档中了解到,事件 DataReceived 不一定会每字节触发一次。

但是有谁知道导致事件触发的机制到底是什么?

每个字节的接收是否会重新启动一个计时器,该计时器必须在事件触发之前达到,例如字节之间的 10 毫秒?

我问是因为我正在尝试编写一个应用程序来读取从串行端口传入的 XML 数据。

因为我的笔记本电脑没有串口,所以我使用虚拟串口模拟器。 (我知道,我知道——我对 ATM 无能为力)。

当我通过模拟端口将数据传递到我的应用程序时,每个 XML 记录(大约 1500 字节)都会触发一次事件。完美的。但是,当另一个办公室的同事尝试使用通过实际电缆连接的两台计算机时,DataReceived 事件会在每 10 个左右的 XML 字节之后重复触发,这完全使应用程序崩溃。

最佳答案

DataReceived 可以随时触发一个或多个字节准备读取。确切的触发时间取决于操作系统和驱动程序,并且在接收到的数据和在 .NET 中触发的事件之间也会有一个小的延迟。

您不应该依赖 DataReceived 事件的时间来控制流。

相反,解析底层协议(protocol),如果您没有收到完整的消息,请等待更多。如果您收到多条消息,请确保不要解析第一条消息,因为它们将成为下一条消息的开始。

关于wpf - 是什么导致 .NET SerialPort 类 DataReceived 事件触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2299187/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com