gpt4 book ai didi

c# - 没有收到所有串行数据

转载 作者:太空狗 更新时间:2023-10-29 22:00:31 25 4
gpt4 key购买 nike

<分区>

我已经尝试了我在网上找到的所有方法,但没有任何帮助,所以我不得不向你们这些好心人寻求一点启发。

我使用的是 Visual C# 2013、.NET Framework 4.5(我希望我的标签是正确的)

我编写嵌入式代码已经有一段时间了,对此我感到非常自在。这个 c# 东西是完全不同的动物。

我有一个在 ARM 微 Controller 上编写的程序,它正在与 C# 程序串行通信。我 99.9% 确定微 Controller 正在正确发送所有内容。我已经使用 Realterm 查看数据,一切看起来都很好,但我无法让我的 C# 程序以我认为应该的方式接收所有数据。

微 Controller 和 c# 程序都设置为相同的设置(57600 波特、8 个数据位、无握手、无奇偶校验、一个停止位)这没什么大不了的。

我的问题是,如果我将 ReceiveByteThreshold 设置为 1,并且程序获取一个字节并发送到 ISR(不确定 ISR 是否是 c# 中的正确术语,但我将这么调用它)。这就是我理解它应该工作的方式。

我有以下代码来获取字节。

GlobalVars.data_byte 是一个 100 字节的数组bytes_to_read 设置为 100。

serialPort1.Read(GlobalVars.data_byte, 0, bytes_to_read)

我的问题是,如果我查看 serialPort1.Read 函数的返回值,它会在 5 到 13 个字节之间跳动,但我从微 Controller 发送了 21 个字节。出于某种原因,它并没有让他们全部。

现在,如果我设置 ReceiveByteThreshold = 13,则返回值在 13 和 16 之间波动。如果我设置 ReceiveByteThreshold = 14(或任何不超过 21 的值),则返回值是一个很好的稳定的 21,这是应该的。

我错过了什么吗?我认为这应该工作的方式是如果 ReceiveByteThreshold = 1 程序将在读取第一个字节后立即发送到 ISR

  serialPort1.Read(GlobalVars.data_byte, 0, bytes_to_read) 

将读取所有字节,直到它看到一个停止位。这意味着它应该读取所​​有 21 个字节。

我不能简单地设置 ReceiveByteThreshold = 14 因为并非我发送的所有数据都是 21 字节长。有时只有 2 个字节,ISR 永远不会被触发。

我希望我说得够清楚了。

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