摘要:單片機與PC機的串行通信在許多領域得到了廣泛的應用。通常單片機完成數(shù)據(jù)的采集,然后用異步串行通信方式傳給PC機。文章主要介紹在VB6.0環(huán)境下,利用通信控件MSComm來實現(xiàn)單片機與PC機串行通信的方法。
關鍵詞:串行通信;通信控件Mscomm;單片機;PC機;VB6.0
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2010)21-5827-02
Serial Communication between Single-chip Computer and PC Based on Mscomm
LIU Yan, ZHANG Wen-chao, LONG Yun-ling
(Faculty of Life Science and Technology, Xinxiang Medical University, Xinxiang 453003, China)
Abstract: Serial communication between Single-Chip computer and PC has been widely used in many areas. It demands Single-Chip computers to acquire and convert data to PC using asynchronous serial communication. This paper mainly describes the method of serial communication between Single-Chip computer and PC based on communication control MScomm in VB6.0.
Key words: serial communication; sommunication control Mscomm; single chip computer; PC; VB6.0
目前,采用單片機與PC構成的自動化控制系統(tǒng),被廣泛用于工業(yè)控制、智能儀器儀表、遠程控制等領域。單片機價格低、體積小、控制功能強,靈活性高,將其用于控制過程中,可提高系統(tǒng)的自動化程度。通常由單片機采集數(shù)據(jù),再用異步串行通訊方式傳給PC機進行控制。利用VB中的通信控件MsComm可實現(xiàn)單片機與PC機間的串行通信。
1 串行通信
串行通信是將傳輸?shù)臄?shù)據(jù)分解成二進制位,用一條信號線,一位一位順序傳輸?shù)姆绞健>哂芯€路簡單、使用靈活方便、遵循統(tǒng)一的標準、數(shù)據(jù)傳輸可靠等優(yōu)點。大多數(shù)PC機都提供兩個串行端口COM1和COM2,采用RS-232邏輯電平,-3~-25V的電平表示邏輯1;+ 3~+ 25V的電平表示邏輯0。由于單片機采用TTL電平,與PC機的RS-232電平不兼容,因此要實現(xiàn)單片機與PC機之間的數(shù)據(jù)通信,需進行電平轉(zhuǎn)換。采用MAXIM公司的MAX232芯片可方便實現(xiàn)電平轉(zhuǎn)換。單片機的串口經(jīng)MAX232轉(zhuǎn)換后, 與PC串口相連,簡單連接只采用RS–232接口中的3根線,即RXD,TXD,GND。一方RXD與另一方TXD交叉互連,通信雙方共地,就可實現(xiàn)二者間的串行通信。
2 MSComm通信控件
在PC機中采用VB6. 0作為上位機開發(fā)軟件,VB6. 0提供了功能強大的通信控件MSComm,可實現(xiàn)串行數(shù)據(jù)的發(fā)送和接收。該控件屏蔽了大部分串行通信的底層操作,編程人員只需操作MSComm控件即可,使用非常方便。
2.1 通信方式
MSComm控件提供下列兩種處理通訊的方式,事件驅(qū)動方式和查詢方式。
1)事件驅(qū)動方式:當串口發(fā)送數(shù)據(jù)、接收數(shù)據(jù)或產(chǎn)生錯誤時,觸發(fā)MSComm控件,產(chǎn)生OnComm事件。采用這種方式程序響應及時, 從而降低了數(shù)據(jù)傳輸?shù)腻e誤發(fā)生率,是處理串行通信問題的一種非常有效的方法。
2)查詢方式:在程序中通過查詢MSComm控件的屬性值是否發(fā)生變化,來檢測通信事件和錯誤,從而進行相應的處理。此方式常用于較簡單的程序設計中。
2.2 Mscomm控件的屬性
利用MSComm控件實現(xiàn)串行通信的關鍵是正確設置其屬性,常用的屬性介紹如下。
1)Commport: 設置并返回PC機串行端口號。
2)Portopen: 設置并返回串行端口的狀態(tài),用于打開或關閉串口。
3)Settings: 以字符串形式設置并返回串行通信參數(shù),即波特率、奇偶校驗、數(shù)據(jù)位、停止位。
4)Input: 從接收緩沖區(qū)中讀取數(shù)據(jù)并清空該緩沖區(qū)。
5)InputMode: 設置并返回接收數(shù)據(jù)的類型可以是二進制格式或文本形式。
6)Output: 向發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù)。
7)Rthreshold: 引發(fā)接收事件的字節(jié)數(shù),為0時不引發(fā)接收事件。當接收緩沖區(qū)中字符數(shù)達到該值時,MSComm控件設置Commevent屬性為ComEvReceive,并產(chǎn)生OnComm事件。若Rthreshold屬性設置為0,則不會產(chǎn)生OnComm事件。
8)Sthreshold: 引發(fā)發(fā)送事件的字節(jié)數(shù),為0時不引發(fā)發(fā)送事件。當發(fā)送緩沖區(qū)中字符數(shù)小于該值時,MSComm控件設置CommEvent屬性為ComEvSend,并產(chǎn)生OnComm事件。若Sthreshold屬性設置為0,也不會產(chǎn)生OnComm事件。
9)CommEvent: 當串口發(fā)生通信事件或產(chǎn)生錯誤時,CommEvent屬性值將被改變,同時產(chǎn)生OnComm事件。
3 單片機與PC機串口的通信
單片機通過串口與PC機進行通信,采用RS-232標準接口。單片機端通過它的串口,將數(shù)據(jù)傳到PC機串口,PC機端通過VB程序中的MSComm控件接收來自串口的數(shù)據(jù)。PC機程序控制的核心問題是對MSComm串行通信控件的控制。
3.1 MSComm控件的初始化
首先在Form-Load窗體加載程序中實現(xiàn)串口的初始化,包括選擇和打開串口,設置串口波特率和通信方式。初始化代碼如下:
Private Sub Form- Load ( )
MSComm1.CommPort = 1 ’選擇串口1
MSComm1.PortOpen = True’打開串口
MSComm1.Settings =“9600 , n ,8 ,1” ’設定波特率為9600,無校驗,8位數(shù)據(jù)位
MSComm1.Inputmode = comInputModeBinary’返回數(shù)據(jù)為二進制形式
MSComm1.InputLen = 0’讀取接收緩沖區(qū)的所有字符
End Sub
3.2 數(shù)據(jù)的接收和發(fā)送
用VB6.0實現(xiàn)串行通信,主要是利用Mscomm控件的Input和Output屬性進行數(shù)據(jù)的接收和發(fā)送。用Input屬性從通信控件的緩沖區(qū)中獲取數(shù)據(jù),每接收一個字節(jié)的數(shù)據(jù),InBufferCount屬性值加1,以便獲得所接收的字節(jié)總數(shù)。若InBufferCount的值設為0,將清空接收緩沖區(qū)。在接收數(shù)據(jù)時,當接收緩沖區(qū)有Rthreshold個數(shù)據(jù),CommEvent屬性被置為comEvReceive,并觸發(fā)OnComm事件,用戶可捕獲該事件進行處理。
4 結論
采用VB6.0為開發(fā)工具,在通信控件Mscomm屬性設置和事件響應的基礎上,實現(xiàn)單片機與PC機間的串行通信。把單片機采集的數(shù)據(jù)經(jīng)過RS–232串行口傳到PC機,再利用PC機強大的數(shù)據(jù)分析、處理、存儲及顯示能力,構成功能完善的現(xiàn)代自動化測控系統(tǒng)。
參考文獻:
[1] 范逸之,陳之元,孫德萱.利用Visual Basic實現(xiàn)串并行通信技術[M].北京:清華大學出版社,2002.
[2] 劉艷美,姜波.VB實現(xiàn)PC與單片機的串行通信[J].自動化技術與應用,2007,26(11):94-96
[3] 唐娟,郭文成.基于VB6.0的PC與單片機的串行通信[J].現(xiàn)代計算機,2007,6:89-90.
[4] 李江全,張麗,岑紅蕾.Visual Basic串口通信與測控應用技術實戰(zhàn)詳解[M].北京:人民郵電出版社,2008.
[5] 馬壯,吳錚,王永強.基于VB的PC與單片機串行通信系統(tǒng)研究與實現(xiàn)[J].唐山學院學報,2008(7):23-24.
[6] 張友生.系統(tǒng)分析與設計[M].北京:清華大學出版社,2005.
[7] 王圓妹,許勁,李濤.基于VB實現(xiàn)PC 機與單片機的串行通信[J].中國科技信息,2006(22):127-128.
[8] 黃興琦,陳初開,丁一軍.單片機與WINDOWS下PC機的串口通信研究[J].儀器儀表用戶,2007,14(4):79-80.