我正在尝试实现以下代码,以便捕获通过串行连接传入的信息。我正在使用.NET串行端口类:
//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引脚,我试图写一条消息来触发事件,看看它是否工作。我似乎无法让事件触发"Got Here"文本从未出现在我的控制台中。我知道数据将进入我的接收缓冲区,因为我可以调用serialPort.ReadExisting()并查看我最初输入的消息。
有人能告诉我为什么这个活动可能不会启动吗?
serialPort = new SerialPort();
你错了。您覆盖设计器创建的SerialPort对象引用。已分配DataReceived事件的。您的新对象没有分配该事件。所以它永远不会着火。
删除那一行。