SerialPort是否有相同的输入和输出缓冲区?

时间:2011-12-19 10:00:31

标签: c# serial-port

Visual Studio 2010 express,WindowsFormsApplication

我的应用程序中有这两段代码。第一个应该每秒在串口上发送一些数据。第二个应该从串口接收数据。 目前,我没有连接到串口的设备。因此,永远不应触发已识别数据的处理程序,并且不应接收任何数据。 我的问题是我收到了我在第一段代码中发送的数据。这是正常的行为吗?有没有办法阻止这种行为?如果我将设备连接到串口会不一样?

private void timer1_Tick(object sender, EventArgs e)
    {
        serialPort.Write(dataToSend, 0, 1);
    }

private void datarecievedhandler(object sender, SerialDataReceivedEventArgs e)
    {
        serialPort.Read(dataToRead, 0, 1);
        MessageBox.Show("Something is recieved!");
    }

1 个答案:

答案 0 :(得分:1)

您必须首先测试设备是否与用于与设备通信的协议连接。

例如,尝试发送“hello”,然后等待ACK。如果超时,则意味着没有设备连接。

如果您的设备不支持“hello / ack”类型的消息,只需尝试读取数据并查看是否超时。