DataReceived事件处理程序不接收消息

时间:2010-04-09 01:22:38

标签: c#-3.0 serial-port

我正在使用以下代码使用串行端口事件处理程序接收消息。但它接受任何。我没有得到错误。代码中断“string msg = comport.Readline()”我做错了吗?

public partial class SerialPortScanner : Form
{
    private SerialPort comPort = new SerialPort();

    public SerialPortScanner()
    {
        InitializeComponent();
        comPort.Open();
        comPort.DataReceived += new SerialDataReceivedEventHandler(comPort_DataReceived);

    }


    void comPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        if (comPort.IsOpen == true)
        {
            string msg = comPort.ReadLine();
            MessageBox.Show(msg);
        }
    }
}

2 个答案:

答案 0 :(得分:1)

从SerialPort对象接收数据时,在辅助线程上引发DataReceived事件。因为此事件是在辅助线程而不是主线程上引发的,所以尝试修改主线程中的某些元素(例如UI元素)可能会引发线程异常。

来源:Check this

答案 1 :(得分:1)

ReadLine取决于拥有NewLine字符。使用Read方法可能会更好运。另请参阅BytesToRead属性。