Windows環(huán)境下PC機與單片機串行通信的實現(xiàn)
由通信協(xié)議可知,數(shù)據(jù)包中的數(shù)是以十六進制字符表示,因此在發(fā)送數(shù)據(jù)時,對數(shù)據(jù)還需做一定的處理。即先將需要發(fā)送的字符串轉換為相應的十六進制字節(jié)串,然后再經(jīng)COleVariant類將其轉換為通用的VARIANT型變量,再通過控件的SetOutput()函數(shù)把數(shù)據(jù)從串口發(fā)出去。以發(fā)送1幀數(shù)據(jù)為例,其實現(xiàn)的主要代碼如下:
至于數(shù)據(jù)的接收,我們通過讓MSComm控件響應OnComm事件來完成,通過ClassWizard加入其對事件的響應,當有數(shù)據(jù)到達時便會通知 OnComm()函數(shù)去處理,從而實現(xiàn)數(shù)據(jù)的異步接收。由于接收的數(shù)據(jù)為變體數(shù)據(jù)VARIANT,因此,還必須做一些處理,具體實現(xiàn)代碼如下:
根據(jù)以上的方法,我們無需花很大的工作量,就能編寫出一個功能較強的串口通信程序。
4 結 語
按以上方法編寫的程序在Windows XP下由Microsoft VisualC++6.0編譯通過,并在PC機與遙控CCD相機控制子系統(tǒng)的串行通信過程中獲得了滿意的效果。同時串行通信的這種軟、硬件實現(xiàn)方法也可以用于PC機與其他外設之間的通信,實用范圍非常廣泛。
參考文獻
[1]希望圖書創(chuàng)作室.Visual C++6.0技術內(nèi)幕[M].第5版.北京:北京希望電子出版社,1999.
[2]何立明.單片機中級教程[M].北京:北京航空航天大學出版社,1999.
[3]嘯峰工作室.在VCA++中利用ActiveX控件開發(fā)串行通信程序[DB].http://www.gjwtech.com/serialcomm.htm,2002.
評論