0

我正在尝试实现以下代码,以捕获通过串行连接传入我的信息。我使用 .NET SerialPort 类:

//serial port initialization           
serialPort = new SerialPort();    

serialPort.PortName = "COM7";
serialPort.BaudRate = 19200;
serialPort.Parity = Parity.Even;
serialPort.DataBits = 8;
serialPort.StopBits = StopBits.One;
serialPort.Handshake = Handshake.None;
serialPort.ReceivedBytesThreshold = 1;



//this is how the handler is added in Form1.Designer.cs
this.serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.DataReceivedHandler);


//Handler
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
    {
        Console.WriteLine("Got Here");
        while (serialPort.BytesToRead > 0)
        {
            byteBuffer.Add((byte)serialPort.ReadByte());
            ProcessByteBuffer(byteBuffer);
        }

    }

我在 RS232 端口上物理连接了我的 Rx 和 Tx 引脚,我试图写一条消息来触发事件以查看它是否工作。我似乎无法让事件触发“到达这里”文本从未出现在我的控制台中。我知道数据将进入我的接收缓冲区,因为我可以调用 serialPort.ReadExisting() 并查看我最初输入的消息。

谁能告诉我为什么这个事件可能不会触发?

4

1 回答 1

3
 serialPort = new SerialPort();  

你错了。您覆盖了设计器创建的 SerialPort 对象引用。分配了 DataReceived 事件的那个。您的对象没有分配该事件。所以它永远不会着火。

只需删除该行。

于 2013-07-19T08:51:46.757 回答