C#串口編程實例代碼。本站提示廣大學習愛好者:(C#串口編程實例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C#串口編程實例代碼正文
因為任務須要,第一次接觸串口編程.所以不能不在網上查閱各類編程實例.最初聯合本身的懂得與理論,終究有了以下代碼.
本代碼只經由了簡略的軟件測試,與簡略的硬件測試.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using System.Threading; using System.IO.Ports; namespace PacketsTest { class ComSR { private SerialPort serialPort; private bool status = false;//接收停止狀況,true為勝利吸收到數據. private byte[] reciveData = null;//接收到的數據存儲到這裡. public bool Status { set { status = value; } get { return status; } } public byte[] RecivedData { get { return reciveData; } } public SerialPort _SerialPort { get { return serialPort; } } public ComSR(string portName,int baudRate,int dataBits,Parity parity,StopBits stopbits) { serialPort = new SerialPort(); serialPort.PortName = portName;//設置端口 serialPort.BaudRate = baudRate;//設置波特率 serialPort.DataBits = dataBits;//設置數據長度 serialPort.Parity = parity;//設置奇偶校驗協定 serialPort.StopBits = stopbits;//停滯位 serialPort.ReceivedBytesThreshold = 1;//這裡是讀事宜觸發前提,1代表一個字節 serialPort.DtrEnable = true;//啟用數據終端停當旌旗燈號 serialPort.RtsEnable = true;//要求發送停當旌旗燈號 serialPort.DataReceived += new SerialDataReceivedEventHandler(Data_Recive);//綁定處置讀事宜的函數. } public void SendBuff(byte[] data) { try { serialPort.Write(data, 0, data.Length);//這裡是寫 } catch (Exception e) { if (serialPort != null && serialPort.IsOpen) { status = false; //這個status是我在下層類中斷定端口讀寫狀況的屬性,可以去失落 serialPort.Close(); } } } void Data_Recive(object o, EventArgs e)//這個是讀端口,事宜處置函數 { try { Thread.Sleep(3); int length = serialPort.BytesToRead; reciveData = new byte[length]; serialPort.Read(reciveData, 0, length); while (serialPort.BytesToRead != 0)//因為數據長度讀寫紛歧,並且時光很難肯定,所以在這裡做了如許的處置 { Thread.Sleep(1); } if (serialPort.IsOpen) { status = true; //serialPort.Close();//這裡不該該封閉,應該在更高條理的法式上封閉端口. } } catch (Exception ex) { if (serialPort != null && serialPort.IsOpen) { status = false; serialPort.Close(); } } } public void PortOpen() { if (!serialPort.IsOpen) { serialPort.Open(); } else { serialPort.Close(); serialPort.Open(); } } /// <summary> /// 封閉端口 /// </summary> public void PortClose() { if (serialPort != null && serialPort.IsOpen) { serialPort.Close(); } } } }
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。