以多种形式从串行端口读取

本文关键字:读取 串行端口 多种形式 | 更新日期: 2023-09-27 18:26:57

我正在开发一个用于管理人员流动的应用程序。该应用程序有一个显示谁要去的主表单和一个tu注册卡表单。我从串行端口读取数据没有问题。我的问题是当从主窗体转到注册窗体并使用串行端口,然后返回到主窗体时,发生了这个错误:

在创建窗口句柄之前,不能对控件调用Invoke或BeginInvoke

我的代码在这里:

void mySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    try
    {
        if (RFIDActive)
        {
            SerialPort sp = (SerialPort)sender;
            RFIDSerial = sp.ReadLine();
            this.Invoke(new EventHandler(ShowID));
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

和:

private void ShowID(object sender, EventArgs e)
{
   //Some Code to display personnel data
}

以多种形式从串行端口读取

试试这个,

public delegate void GetData(string receivedData);
void mySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    try
    {
        if (RFIDActive)
        {
            SerialPort sp = (SerialPort)sender;
            RFIDSerial = sp.ReadLine();
            this.Invoke(new GetData(ShowID),RFIDSerial);
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

和:

private void ShowID(string RFIDSerial)
{
   //Some Code to display personnel data
}

希望有帮助,

问候。