英創(chuàng)ARM9工控主板均提供了多個串口供客戶進(jìn)行通訊控制使用,包括標(biāo)準(zhǔn)的RS232和TTL電平的COM接口(經(jīng)過簡單的電平轉(zhuǎn)換即可成為標(biāo)準(zhǔn)的RS232/RS485或者RS422)。由于英創(chuàng)ARM9嵌入式主板采用WinCE操作系統(tǒng),很多客戶都選擇了界面友好、開發(fā)便利的C#語言(使用Visual Studio 2005.NET集成開發(fā)環(huán)境)。在VS2005中,為了實現(xiàn)串口的操作,英創(chuàng)提供了操作串口的COM組件接口,用戶只需要在目標(biāo)平臺上進(jìn)行組件注冊,然后在C#程序開發(fā)的時候,對該COM組件添加引用,即可在程序里面自由地通過對象操作來使用英創(chuàng)提供的串口函數(shù)。英創(chuàng)提供的串口組件可以提供RTS控制的功能,方便客戶在進(jìn)行工業(yè)現(xiàn)場通訊的時候?qū)TS進(jìn)行設(shè)置(參見《C#使用COM組件接口進(jìn)行串口操作》一文);對于不需要RTS控制的客戶,微軟在VS2005里提供了一個標(biāo)準(zhǔn)的串口類SerialPort供客戶使用,該串口類可以靈活方便地進(jìn)行串口設(shè)置、收發(fā)等操作,功能更多,使用相對更靈活。英創(chuàng)也提供了一個使用SerialPort串口類的例程供用戶參考,本文就對SerialPort串口類的使用作一個簡單的講解。
首先要添加包含SerialPort串口類的引用:
using System.IO.Ports;
在程序的開始定義一個SerialPort串口類對象:
SerialPort myserialPort = new SerialPort();
串口的參數(shù)值可以通過如下方式來定義:
myserialPort.PortName = “COM1”; // 定義為COM1
myserialPort.BaudRate = 9600; // 波特率為9600
打開串口的操作:
myserialPort.Open();
要實現(xiàn)數(shù)據(jù)的接收,必須要監(jiān)控串口的接口緩沖,實現(xiàn)一旦有數(shù)據(jù)進(jìn)來,就能立刻處理。為此,SerialPort類提供了一個DataRecieved事件,方便對數(shù)據(jù)的接收進(jìn)行處理:
myserialPort.DataReceived += new SerialDataReceivedEventHandler(myserialPort_DataReceived);
// 當(dāng)串口有數(shù)據(jù)收到時,啟動myserialPort_DataRecieved事件函數(shù)
一旦產(chǎn)生DataReceived事件,就由myserialPort_DataReceived函數(shù)來處理。
在進(jìn)行數(shù)據(jù)接收處理的時候,SerialPort類提供了很多接收方法,包括:Read()、ReadExisting()、ReadByte()、ReadChar()、ReadLine()、ReadTo()等等,客戶可以根據(jù)自己的要求進(jìn)行選用,如:
private void myserialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//。。。。。。
string whatRecieved = myserialPort.ReadExisting();
//。。。。。。
}
相對來說,數(shù)據(jù)發(fā)送就簡單多了,SerialPort提供了兩個數(shù)據(jù)發(fā)送的方法Write()和WriteLine(),如:
string whatSending = “Emtronix”;
myserialPort.Write( whatSending );
關(guān)閉串口的操作如下:
myserialPort.Close();
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6084瀏覽量
35162
發(fā)布評論請先 登錄
相關(guān)推薦
評論