串行端口相同的输入和输出缓冲区
本文关键字:输出 缓冲区 输入 串行端口 | 更新日期: 2023-09-27 18:18:28
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!");
}
如果没有任何东西连接到端口,而您正在接收回声,这意味着您很可能打开了错误的COM端口(如蓝牙端口之一,调制解调器或类似的东西),默认情况下启用了回声。
打开Windows控制面板中的设备管理器,查看端口并确保打开正确的COM端口
您必须首先测试设备是否与您用于与设备通信的协议相连接。
例如,尝试发送"hello",然后等待ACK。如果你得到一个超时,这意味着没有设备连接。
如果您的设备不支持"hello/ack"类型的消息,请尝试读取数据并查看是否超时。