我有一个使用此通信协议的串行设备:
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程序中确定何时将串口缓冲区物理传输到设备?