如何关闭Com端口的读取功能

时间:2017-08-31 14:43:19

标签: c#

我尝试在单线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++;
            }
        }
    }

0 个答案:

没有答案