Windows環境下PC機與單片機串行通信的實現
由通信協議可知,數據包中的數是以十六進制字符表示,因此在發送數據時,對數據還需做一定的處理。即先將需要發送的字符串轉換為相應的十六進制字節串,然后再經COleVariant類將其轉換為通用的VARIANT型變量,再通過控件的SetOutput()函數把數據從串口發出去。以發送1幀數據為例,其實現的主要代碼如下:

至于數據的接收,我們通過讓MSComm控件響應OnComm事件來完成,通過ClassWizard加入其對事件的響應,當有數據到達時便會通知 OnComm()函數去處理,從而實現數據的異步接收。由于接收的數據為變體數據VARIANT,因此,還必須做一些處理,具體實現代碼如下:

根據以上的方法,我們無需花很大的工作量,就能編寫出一個功能較強的串口通信程序。
4 結 語
按以上方法編寫的程序在Windows XP下由Microsoft VisualC++6.0編譯通過,并在PC機與遙控CCD相機控制子系統的串行通信過程中獲得了滿意的效果。同時串行通信的這種軟、硬件實現方法也可以用于PC機與其他外設之間的通信,實用范圍非常廣泛。
參考文獻
[1]希望圖書創作室.Visual C++6.0技術內幕[M].第5版.北京:北京希望電子出版社,1999.
[2]何立明.單片機中級教程[M].北京:北京航空航天大學出版社,1999.
[3]嘯峰工作室.在VCA++中利用ActiveX控件開發串行通信程序[DB].http://www.gjwtech.com/serialcomm.htm,2002.















評論