国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于VB.net的串口通信方法設計

2012-04-29 18:06:37劉東
電腦知識與技術 2012年34期
關鍵詞:串口通信

劉東

摘要:串口通信廣泛應用于工業(yè)控制領域,是一種最常見的通信技術,開發(fā)串口通信軟件是必不可少的。由于編程語言VisualStudio的不斷升級,VisualStudio.Net中采用功能較強的SerialPort類替換低版本中的MSComm控件。該文以開發(fā)實例詳細介紹VB.net編程環(huán)境中采用SerialPort類如何開發(fā)串口通信軟件。

關鍵詞:串口通信;VB.net;SerialPort;巡檢系統(tǒng)

中圖分類號:TP273 文獻標識碼:A 文章編號:1009-3044(2012)34-8304-04

1概述

串口通信(SerialCommunications),是指外設和計算機間,通過數(shù)據(jù)信號線、地線、控制線等,按位進行傳輸數(shù)據(jù)的一種通訊方式。串口通信是計算機上一種常用的設備通信協(xié)議,串行接口按電氣標準及協(xié)議來分包括RS-232C、RS-422、RS485等,串口通信方便易行,廣泛應用于工業(yè)測控領域。

在.NET平臺下使用VB.NET語言實現(xiàn)串口通信主要有三種方法:一是采用VB6.0中的MSComm控件;二是采用微軟在.NET2.0及其以后版本提供的內(nèi)置的串口操作類SerialPort;三是采用第三方API函數(shù)。該文主要介紹NETFramework2.0類庫包含了SerialPort類。

2串口通信原理

串口通信是按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且能夠?qū)崿F(xiàn)遠距離通信。IEEE488定義串口通信長度可達1200米。串口用于ASCII碼字符的傳輸。通信使用3根線完成,分別是地線、發(fā)送、接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。其他線用于握手,但不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。對于兩個進行通信的端口,這些參數(shù)必須匹配。

3SerialPort類介紹

在VB6.0中編寫串口通訊程序,一般都使用MicrosoftCommunicationControl(簡稱MSComm)的通訊控件實現(xiàn)。隨著微軟VisualStudio不斷升級,VisualStudio.Net沒有將MSComm控件加入控件庫,而是在NETFramework2.0類庫包含了SerialPort類,實現(xiàn)串口通訊的多種功能。該文詳細介紹VB.net語言中的SerialPort類,實現(xiàn)上、下位機串口通信軟件的設計方法。SerialPort類具體介紹如下:

3.1命名空間

System.IO.Ports命名空間包含了控制串口重要的SerialPort類,該類提供了同步I/O和事件驅(qū)動的I/O、對管腳和中斷狀態(tài)的訪問以及對串行驅(qū)動程序?qū)傩缘脑L問,所以在程序代碼起始位置需加入UsingSystem.IO.Ports。

3.2串口的通訊參數(shù)

串口通訊最常用的參數(shù)就是通訊端口號及通訊格式(波特率、數(shù)據(jù)位、停止位和校驗位)

PortName屬性:獲取或設置通信端口,包括但不限于所有可用的COM端口,該屬性返回類型為String,PortName返回的值為COM1、COM2……。

BaudRate屬性:獲取或設置串行波特率。它表示每秒鐘傳送的bit的個數(shù),一般為9600、19200等。

Parity屬性:獲取或設置奇偶校驗檢錯方式。Parity類型中枚舉了Odd(奇)、Even(偶)、Mark、None、Space。

DataBits屬性:獲取或設置每個字節(jié)的標準數(shù)據(jù)位長度。這是衡量通信中實際數(shù)據(jù)位的屬性,取值一般為6、7、8。

StopBits屬性:獲取或設置每個字節(jié)的標準停止位數(shù)。取值為None、One、OnePointFive、Two。

Encoding屬性:獲取或設置傳輸前后文本轉(zhuǎn)換的字節(jié)編碼。SerialPort默認的Encoding是ASCII方式,這種方式傳輸漢字存在亂碼問題,所以在實際應用中,采用Unicode編碼方式。

3.3串口的打開和關閉方法

Open()方法:打開一個新的串行端口連接。

Close()方法:關閉端口連接,將IsOpen屬性設置為false,并釋放內(nèi)部Stream對象。

3.4數(shù)據(jù)的發(fā)送和讀取常用方法

Write()方法:將數(shù)據(jù)寫入串行端口輸出緩沖區(qū)。

WriteLine()方法:將指定的字符串和NewLine值寫入輸出緩沖區(qū),即為輸出并換行。

ReadLine()方法:一直讀取到輸入緩沖區(qū)中的NewLine值,即為讀入并換行。

ReadTo()方法:一直讀取到輸入緩沖區(qū)中的指定Value的字符串。

讀取串口緩沖區(qū)的方法有,其中除了ReadExisting和ReadTo,其余的方法都是同步調(diào)用,線程被阻塞直到緩沖區(qū)有相應的數(shù)據(jù)或大于ReadTimeOut屬性設定的時間值后,引發(fā)ReadExisting異常。

3.5常用事件

DataReceived事件:表示將處理SerialPort對象的數(shù)據(jù)接收事件的方法。在接收到了[ReceivedBytesThreshold]設置的字符個數(shù)或接收到了文件結(jié)束字符并將其放入了輸入緩沖區(qū)時被觸發(fā)。

ErrorReceived事件:表示處理SerialPort對象的錯誤事件的方法。

3.6SerialPort的使用

串口通訊的流程:先設置串口號及波特率、數(shù)據(jù)位、停止位和校驗位,再打開端口連接,發(fā)送數(shù)據(jù),接收數(shù)據(jù),最后關閉端口連接這樣幾個步驟。實時采集或巡檢系統(tǒng)只需要配置一次串口通信參數(shù),就循環(huán)發(fā)送指令和讀取串口數(shù)據(jù)。

數(shù)據(jù)接收的設計方法比較重要,采用輪詢的方法比較高效,但是得精確計算輪詢延時時間,在VB中的延時方法中一般調(diào)用API中DOEvents方法處理。也可采用DataReceived事件觸發(fā)的方法,合理的設置ReceivedBytesThreshold的值,若接收的是定長的數(shù)據(jù),則將ReceivedBytesThreshold設為接收數(shù)據(jù)的長度,若接收數(shù)據(jù)的結(jié)尾是固定的字符或字符串則可采用ReadTo的方法或在DataReceived事件中判斷接收的字符是否滿足條件。

4設計開發(fā)實例

4.1串口通信參數(shù)設置界面設計

下面以“十六路采集元巡檢系統(tǒng)為例”介紹串口通信的開發(fā)過程。首先設計串口通信設置界面,如圖1所示:

實例中通信延時為對多路信息采集的時間間隔,100即為0.1秒。并設置了巡檢的起始通道與終止通道,將通信配置信息寫入set.ini文件中,方便后期通信重復調(diào)用。

4.2串口通信實現(xiàn)

4.2.1串口配置

利用函數(shù)讀取set.ini中的配置信息,并初始化SerialPort控件。

4.2.2串口巡檢采集

利用串口循環(huán)采集16路通道中的數(shù)據(jù)采集儀表的實時采集數(shù)據(jù),并實時顯示,程序及界面如圖2所示。

函數(shù)realtime()函數(shù),完成了對串口十六通道采集儀表數(shù)據(jù)的循環(huán)采集,TimeDelay()函數(shù)完成對通道巡檢采集的延時程序,具體延時時間可根據(jù)具體儀表通信響應時間在通信設置界面可修改。現(xiàn)在的筆記本等電腦都無穿行接口,需要外接usb轉(zhuǎn)串口的轉(zhuǎn)接頭或無線通信模塊,無線通信因通信距離、環(huán)境的影響會出現(xiàn)通信錯誤,因此在通信程序中加入了數(shù)據(jù)合法性檢驗,對通信錯誤數(shù)據(jù)實行丟棄處理。

5結(jié)束語

從十六路串口巡檢系統(tǒng)可以看出,利用VB.net語言中的SerialPort類可開發(fā)串口通信程序,比調(diào)用外部第三方串口控件或API函數(shù)更方便、快捷,而且用較少代碼實現(xiàn)相同功能,比VB6.0環(huán)境中的MSComm控件功能更強大,且VB.net開發(fā)軟件界面更美觀。

參考文獻:

[1]曾立武,黃曉鋒,蘭紫娟,何凌燕,欒勝基.基于VB6.0串口通信的環(huán)境空氣質(zhì)量自動監(jiān)測系統(tǒng)[J].現(xiàn)代電子技術,2012(20):155-158.

[2]許俊鋒,馬春草,劉暢.基于VB6.0的串口通信數(shù)據(jù)采集系統(tǒng)設計[J].儀表技術,2012(4):7-11,15.

[3]陳學軍.Windows平臺下串口通信數(shù)據(jù)實時獲取與監(jiān)測[J].自動化儀表,2012(3):66-69.

[4]田添.利用控件MSComm實現(xiàn)計算機的串口通信[J].數(shù)字通信,2012(2):95-97.

[5]鄭武,肖寶森.串口通信新模型的研究與C#實現(xiàn)[J].電腦編程技巧與維護,2012(11):29-30,35.

[6]潘方.RS232串口通信在PC機與單片機通信中的應用[J].現(xiàn)代電子技術,2012(13):69-71.

[7]王雪,王紅印,田正凱,周春枚,曾軍.基于CAN總線的實時數(shù)據(jù)采集串口通信的實現(xiàn)[J].電子質(zhì)量,2012(6):16-17,25.

[8]王毅,萬英,胡福成.基于串口通信的溫度測量系統(tǒng)的設計[J].電力與電工,2012(2):33-37.

[9]劉金梅,王東穎,劉立超,嚴稱靈.基于LabVIEW串口通信的多路數(shù)據(jù)采集系統(tǒng)設計[J].北華航天工業(yè)學院學報,2012(4):16-18.

猜你喜歡
串口通信
基于Qt和Flash的嵌入式Linux軟件架構設計
串口通信在智能家居監(jiān)控系統(tǒng)中的應用
基于OpenCV的室內(nèi)照明智能控制系統(tǒng)設計與實現(xiàn)
科技視界(2016年13期)2016-06-13 22:01:19
错那县| 舞阳县| 泸水县| 彰化县| 华蓥市| 漳浦县| 定州市| 道孚县| 建平县| 梁平县| 内丘县| 广州市| 东辽县| 龙口市| 湖北省| 昌都县| 陈巴尔虎旗| 丁青县| 龙胜| 保定市| 灵丘县| 永康市| 西青区| 安平县| 秦安县| 吉隆县| 应城市| 阿尔山市| 丰原市| 息烽县| 望江县| 日土县| 喀喇沁旗| 大英县| 酒泉市| 木里| 锡林浩特市| 云阳县| 新津县| 民权县| 光山县|