用C#編寫上位機,基本流程是【1】串口配置,【2】串口發送數據,【3】串口接收數據。
【1】串口配置
串口的屬性配置包括:
No.1串口端口號
No.2串口波特率
No.3串口數據位
No.4串口停止位
N0.5串口校驗位
串口的上述屬性,分別將值存儲進combobox里邊,然后帶用戶根據實際情況自己進行選擇,設置也比較簡單。
串口的打開和關閉,采用try-catch這對組合,可以自動打開和關閉處理過程中出現的問題。
【2】串口發送數據
串口發送數據,采用串口的write屬性,該屬性有三種重載方式,string,byte,char三種,分別是字符串,字節,字符三種。
1 if (serialPort1.IsOpen == true) 2 { 3 try
4 { 5 Byte[] mes = new Byte[3] { 1,2,3}; 6 char[] chr = new char[3] { 'a','b','c'}; 7 serialPort1.Write(mes,0,1); 8 serialPort1.Write(chr,0,1); 9 serialPort1.Write("Hello"); 10 MessageBox.Show("發送成功"); 11 } 12 catch
13 { 14 MessageBox.Show("發送失敗"); 15 } 16 }
Write的Byte和char函數接口解釋為,首先告訴write用的哪一個數組,從數組第幾個位開始發數據,發幾個數據。
如此,下位機,講分別收到1,a,Hello數據。
【3】串口接收數據
1 Control.CheckForIllegalCrossThreadCalls = false; 2 serialPort1.DataReceived += new SerialDataReceivedEventHandler(SP1REV); 3 serialPort1.ReceivedBytesThreshold = 1;
1 void SP1REV(object sender, SerialDataReceivedEventArgs e) 2 { 3 if (serialPort1.IsOpen == true) 4 { 5 try 6 { 7 Byte[] REV = new Byte[serialPort1.BytesToRead]; 8 serialPort1.Read(REV, 0, REV.Length); 9 serialPort1.DiscardInBuffer(); 10 textBox1.Text += Encoding.ASCII.GetString(REV); 11 } 12 catch 13 { 14 MessageBox.Show("接收出錯"); 15 } 16 } 17 }