在C#中實作串口通訊的方法

大家讲道理
發布: 2016-11-10 10:20:59
原創
1869 人瀏覽過

通常,在C#中實現串口通信,我們有四種方法:  
第一:透過MSCOMM控制這是最簡單的,最方便的方法。可功能上很難做到控制自如,同時這個控制並不是系統本身所帶,所以還得註冊,不在本文討論範圍。可以上http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=320 ,一個國外網友的寫的教程,作者很熱心,我曾有發郵件給他,很快就回復了。
   
第二:微軟在.NET新推出了一個串口控件,基於.NET的P/Invoke調用方法實現,詳細的大家可以訪問微軟網站http://msdn.microsoft.com/msdnmag/issues/02/ 10/NETSerialComm/default.aspx,方便取得更多資料。
   
第三:就是用第三方控件啦,可一般都要付費的,不太合實際,不作考慮 
   
第四:自己用API寫串口通信,這樣難度高點,但對於我們來說,可以方便實現自己想要的各種功能 
   
在本文,我們採用第四種方法來實現串口通信,不過不是自己寫,用一個國外網友現成的已經封裝好的類庫,不過功能簡單點,相對我們來說已經夠用了。  
   
在整個終端簡訊的操作過程中,與串口的通信,只用到了四個功能,開啟、寫入、讀取、關閉串口。以下是類別庫對這四個功能的定義:  
   
開啟串列埠:  
   
函數原型:public void Open()  
   


寫串口: 

   

函數原型:public void Write(byte[] WriteBytes) 

   

WriteBytes 就是你的寫入的字節,注意,字符串要轉換成字節數組才能進行通信 

   

示例:

   

ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMIr")); //取得手機品牌 

   

點串音

by NumBytes)

   

NumBytes 讀入快取數,注意讀取來的是位元組數組,而實際應用中要進行字元轉換 

   

範例: 

   

port.Read (128)); //讀取128個位元組快取 

   

關閉字串口: 

   

ss_port.Close(); 

   

由於篇幅,以及串口通訊涉及內容廣泛,我在這裡只講這些。 

   

在上面我們已經把終端簡訊所需的各種原始技巧有所了解,是可以小試牛刀的時候了。

using JustinIO; 
   
static JustinIO.CommPort ss_port = new JustinIO.CommPort(); 
ss_port.PortNum = COM1; //端口号 
ss_port.BaudRate = 19200; //串口通信波特率 
ss_port.ByteSize = 8; //数据位 
ss_port.Parity = 0; //奇偶校验 
ss_port.StopBits = 1;//停止位 
ss_port.ReadTimeout = 1000; //读超时 
try 
{ 
 if (ss_port.Opened) 
 { 
  ss_port.Close(); 
  ss_port.Open(); //打开串口 
 } 
 else 
 { 
  ss_port.Open();//打开串口 
 } 
 return true; 
} 
catch(Exception e)  
{ 
 MessageBox.Show("错误:" + e.Message); 
 return false; 
}
登入後複製

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!