gpt4 book ai didi

c# - 不完整的串口读取 C#

转载 作者:行者123 更新时间:2023-12-03 13:20:32 25 4
gpt4 key购买 nike

我正在尝试将连接到 COM 端口的扫描仪中的字节读取到字节数组中。 C# 中的串行端口库已经有一个读取函数,这是我用来尝试读取的函数。我进行了设置,以便将读入的字节输出到控制台。我正在使用一个非常可预测的协议(protocol),所以当我在代码中传递该行时,我知道我期待什么样的字节数组。但是,如果我运行程序,我只会读入一个字节。如果我重新运行程序的同一个实例(通过发送相同的读取命令),我会得到其余的预期字节。只有在我第三次运行它之后,我才能得到我期望的所有字节。如果我只是在读取行上插入断点并跨过该行,则可以完全避免此问题。如果我这样做,我每次都会得到完整的阅读。我的问题是,如何在不插入断点的情况下每次都完整读取?我尝试使用系统暂停方法来停止执行并让 COM 端口扫描足够快,但没有奏效。我也尝试过使用线程(参见下面的代码)。这也没有奏效。有什么建议么?

    t = new Thread(() => device.Read(buffer));
t.Start();
t.Join();

同样,我的预期输出仅在重新发送 Read 命令几次或通过断点遍历上述命令后才以完整数据包的形式出现。否则,我会以小的“字节大小的样本”获得预期的输出。任何帮助表示赞赏!

最佳答案

这是字节流的预期行为。循环读取并将接收到的许多字节一个接一个地泵入您的 ProtocolUnit 类实例(或其他),直到它完成并经过验证。

关于c# - 不完整的串口读取 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17575705/

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