【发布时间】:2012-07-21 09:13:57
【问题描述】:
我有以下代码需要从端口读取数据,然后显示在文本框中。我为此目的使用 DataReceived 事件处理程序,但不知道如何在文本框中显示此数据。从各种来源我了解到 Invoke 方法应该用于此,但不知道如何使用它。请提出建议...
private void Form1_Load(object sender, EventArgs e)
{
//SerialPort mySerialPort = new SerialPort("COM3");
mySerialPort.PortName = "COM3";
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(mySerialPort_DataReceived);
mySerialPort.Open();
}
private void mySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string s= sp.ReadExisting();
// next i want to display the data in s in a textbox. textbox1.text=s gives a cross thread exception
}
private void button1_Click(object sender, EventArgs e)
{
mySerialPort.WriteLine("AT+CMGL=\"ALL\"");
}
【问题讨论】:
-
我已经尝试了您的示例代码并基于此线程构建了简单的 C# 解决方案。我无法在我的调制解调器中读取
DataReceived。我正在使用 wavecom 调制解调器检查余额。请帮我解决它?
标签: c# multithreading serial-port