C# 串行端口是否具有相同的输入和输出缓冲区?

C# 串行端口是否具有相同的输入和输出缓冲区?,c#,serial-port,C#,Serial Port,Visual studio 2010 express,Windows窗体应用程序 我的应用程序中有这两段代码。首先,应该每秒在串行端口上发送一些数据。第二个应该从串行端口接收数据目前,我没有连接到串行端口的设备。因此,不应触发DataReceived处理程序,也不应接收任何数据。 我的问题是,我收到了我在第一段代码中发送的数据。这是正常的行为吗?有没有办法防止这种行为?如果我将设备连接到串行端口会有所不同吗 private void timer1_Tick(object sender, Even

Visual studio 2010 express,Windows窗体应用程序

我的应用程序中有这两段代码。首先,应该每秒在串行端口上发送一些数据。第二个应该从串行端口接收数据目前,我没有连接到串行端口的设备。因此,不应触发DataReceived处理程序,也不应接收任何数据。 我的问题是,我收到了我在第一段代码中发送的数据。这是正常的行为吗?有没有办法防止这种行为?如果我将设备连接到串行端口会有所不同吗

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!");
    }

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

例如,尝试发送“hello”,然后等待确认。如果出现超时,则表示没有连接任何设备


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

如果端口上没有任何连接,并且您正在接收回音,则表示您很可能打开了一个错误的COM端口(如蓝牙端口、调制解调器或类似端口之一),默认情况下该端口已启用回音


在Windows控制面板中打开设备管理器,查看“端口”下的内容,确保打开了正确的COM端口。

什么是
e.EventType
?这可能是EOF吗?对不起,我还是这方面的初学者……我不理解您的
datareceivedhandler
中的一个问题,您得到的
SerialDataReceivedEventArgs e
;在
e
上有一个值
e.EventType
,用于帮助您了解事件。简单地说。。。如果添加断点;什么是
e.EventType
?type--System.IO.Ports.SerialData,value--Charsthanks。。。我不必测试设备是否已连接…我知道不是因为我没有将其连接到端口。我只是认为,如果没有连接设备,则永远不应该引发DataReceived处理程序。我说的对吗?谢谢,这似乎是个问题……当我连接设备并打开另一个端口时,一切都正常;)