确保将字节物理写入串行端口

时间:2014-11-08 11:28:38

标签: c# .net serial-port .net-4.5

我有一个使用此通信协议的串行设备:

  1. 开启DTR
  2. 写请求(4个字节)
  3. 关闭DTR
  4. 读取响应(4个字节)
  5. DTR引脚用于切换设备模式。

    我试过写:

    serialPort.DtrEnable = true;
    serialPort.Write(request, 0, 4);
    serialPort.DtrEnable = false;
    serialPort.Read(response, 0, 4);
    

    但它没有按预期工作。我打开DTR,然后立即关闭DTR,然后传输4个字节(我用示波器来确定这个)。我在BaseStream.Flush()电话后试图拨打Write()但没有成功。此外,简单的while循环while(serialPort.BytesToWrite > 0) Thread.Sleep(1);给出相同的否定结果。串口速度很慢,只有600 b / s。如果我在Thread.Sleep之后添加Write来电 - 一切正常,但我认为这非常难看,我需要在写完后立即切换DTR

    那么,如何在.NET程序中确定何时将串口缓冲区物理传输到设备?

0 个答案:

没有答案