【问题标题】:Sending a 64 byte packet through serial port with C#使用C#通过串口发送一个64字节的数据包
【发布时间】:2017-10-09 15:17:32
【问题描述】:

我正在尝试使用 c# 通过 USB 端口向 MCP2221 微芯片发送命令。所述命令长64字节,主要由0x00组成,除了第一个字节为0xB0。我创建一个字节数组,设置所述字节,并使用 serialport.write 命令写入它。 在使用 ellysis usb explorer 检查发送的字节后,我注意到它以 16 字节长的 ACK 信号的形式发送命令,中间有数百个等长的空 NAK 信号块。 我可以以单个 64 字节包的形式正确执行该命令吗?串行端口使用波特率 9600、无奇偶校验和一个停止位的默认设置,微芯片应该可以使用。 如果能提供任何形式的帮助,我将不胜感激。


【问题讨论】:

  • 请分享您的代码。
  • 别忘了批准我的回答朋友;-)

标签: c# serial-port usb


【解决方案1】:

我以前遇到过这个问题,它发生在事件运行之前完全接收文件所以在事件中的第一个命令运行 Thread.Sleep(200) 所以做你想做的。 两面做比较好

【讨论】:

    【解决方案2】:

    您的串行端口似乎已配置为使用流量控制(默认情况下)。而且您的控制器可能不支持流量控制,或者未配置为支持它。如果您不想要流量控制,您可以尝试简单地禁用它:

    port.Handshake = Handshake.None;
    

    【讨论】:

    • 感谢您的回答,看起来确实很合理。恐怕我从 11 号起就得了高烧,一直无法离开家,也没有手头的硬件来测试它。我会尽快给你结果。感谢您的支持。
    • 原来Handshake默认是禁用的,这让我很困惑
    猜你喜欢
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2018-05-23
    • 2011-10-15
    相关资源
    最近更新 更多