我尝试在单线UART(半双工)上的com端口进行通信。它是8位MCU的C#应用程序。
这里,Application是主设备,MCU是从设备。在MCU上,TX正在发送时禁用RX。
要求是在从应用程序发送数据时使com端口禁用读取功能。
为了做到这一点,我试图在发送它传输的字节数后从RX的缓冲区拔出,但是MCU响应太快,TX的最后字节介于两者之间。 / p>
注意:我无法更改MCU中的任何内容
这是我的代码:
public int serialRX()
{
int b;
if (serialPort.IsOpen && (serialPort.BytesToRead > 0))
{
try
{
b = serialPort.ReadByte();
}
catch (TimeoutException)
{
b = -1;
}
return b;
}
else
{
return -1;
}
}
public void serialTX(byte[] data)
{
if (serialPort.IsOpen)
{
serialPort.Write(data, 0, data.Length);
byte i = 0;
int read = -1;
while (i < data.Length)
{
while (read == -1)
{
read = serialRX();
}
read = -1;
i++;
}
}
}