1、關於DataReceive事件。
主程序必須有
outserialPort.DataReceived +=new SerialDataReceivedEventHandler(outserialPort_DataReceived);//註冊received事件
建立 SerialDataReceivedEventHandler 委託即把接受數據的時間關聯到相應的事件去。不然接收事件發生時沒法觸發對應的方法。
+=表示增長註冊一種方法,而-=則相反。
html
2、讀取串口數據的兩種方法
第一種是採用read方法讀取
int n = outserialPort.BytesToRead;
byte[] buf = new byte[n];
outserialPort.Read(buf, 0, n);
string receivedata = System.Text.Encoding.ASCII.GetString(buf);
第二種是採用readline方法讀取
string receivedata = outserialPort.ReadLine();
注意:
一、ReadLine()方法一直會讀到有一個新的行纔會返回,因此若是發送數據中沒有換行符則該方法不會返回,會一直停留在readline程序裏不會執行以後的程序,而read()是調用者本身定義一個byte數組來接收串口中緩存裏的數據,byte多長就讀多長
參考:http://bbs.csdn.net/topics/330233058 數組
二、 string receivedata=System.Text.Encoding.ASCII.GetString(buf);
注意串口接收的編碼是ASCII型而不是Unicode不然沒法讀出接收的數據 緩存
3、Invoke的兩種書寫方法: 函數
第一種
4、如何知道當前電腦有哪一個串口 this
方法1:comboBox1.Items.AddRange(System.IO.Ports.SerialPort.GetPortNames()); 編碼
方法2:string[] portList = System.IO.Ports.SerialPort.GetPortNames(); spa
for (int i = 0; i < portList.Length; ++i)
{
string name = portList[i];
comboBox1.Items.Add(name);
} .net