1. 程式人生 > >淺談SerialPort控制元件的使用(C#)

淺談SerialPort控制元件的使用(C#)

最近的一個小專案中需要從串列埠讀取攝像機的應答指令,因此在程式中用到了SerialPort控制元件(使用SerialPort類也可以)。
在SerialPort控制元件的屬性列表中主要注意3個地方:
(1)PortName:表示要開啟的通訊埠名稱;
(2)BaudRate:表示埠的波特率;
(3)ReceivedBytesThreshold:表示觸發SerialPort控制元件的DataReceived事件前輸入緩衝區裡的位元組數;
在這個小專案中,PortName的值為攝像機與電腦連線的埠(可通過裝置管理器檢視);BaudRate的值與攝像機串列埠設定的值一致;ReceivedBytesThreshold預設為1,表示當輸入緩衝區中有1個位元組就觸發SerialPort控制元件的DataReceived事件(在該事件中使用SerialPort.Read讀取輸入緩衝區中的資料)。
//初始化窗體
private void Form1_Load(object sender, EventArgs e)
        {
            serialPort1.ReceivedBytesThreshold = 1;
            serialPort1.PortName = "COM3";
            serialPort1.BaudRate = 9600;
            serialPort1.Open();//開啟串列埠
            serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort1_DataReceived);
        }
//serialPort1控制元件的DataReceived事件
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            serialPort1.Read(Data,0,4);//data陣列用於儲存讀取的資料
        }

在這個窗體程式中我使用一個Button控制元件來向攝像機發送查詢指令

private void btnSend_Click(object sender, EventArgs e)
        {
            if
(serialPort1.IsOpen == true) { serialPort1.Write(Power, 0, 5);//Power陣列用於儲存傳送給攝像機的查詢指令 } }

在載入程式後點擊Button按鈕,使用斷點除錯即可看到data陣列中的攝像機應答指令。
我這裡僅僅簡單介紹了SerialPort控制元件的使用,更加具體的串列埠通訊可以參考這篇部落格(http://blog.csdn.net/xwnxwn/article/details/44995045),謝謝大家的閱覽。