我想同時接收兩個串口傳過來的資料,現在定義了兩個SerialPort,寫了兩個接收函式,兩個接收函式托管給兩個輔助執行緒SerialDataReceivedEventArgs。
serialPort1.DataReceived +=new SerialDataReceivedEventHandler( serialPort1_DataReceived);
serialPort2.DataReceived += new SerialDataReceivedEventHandler(serialPort2_DataReceived);
如果我只開一個串口,資料接收沒有問題。但是同時開兩個串口,接收程序變得十分緩慢,有時候甚至會停止接收。
我嘗試將兩個SerialDataReceivedEventArgs放入執行緒中,但是效果并不好,請問有沒有什么解決辦法?
現貼出兩個接收函式
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
String res = null;
Thread.Sleep(100);
int length = 4;
num1 += length;
byte[] buf = new byte[length];
serialPort1.Read(buf, 0, length);
this.Invoke((EventHandler)(delegate
{
button1.Text = num1.ToString();
textBox1.Text += res;
}));
}
catch(Exception)
{
MessageBox.Show("正在關閉...");
}
}
private void serialPort2_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
String s = null;
s = serialPort2.ReadLine();
num2++;
serialPort2.DiscardInBuffer();
this.Invoke((EventHandler)(delegate
{
textBox2.Text += s + " ";
button3.Text = num2.ToString();
}));
} catch(Exception ee)
{
MessageBox.Show(ee.ToString());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/171598.html
標籤:C#
下一篇:寫一個正則表達
