天天看點

基于嵌入式ROMWindows CE下的串行通信

在學習程式設計的過程中,我覺得不止要獲得課本的知識,更多的是解決問題的方法,面對新問題該怎麼解決,這樣我們才能走在最前方,我是達内的學員,感謝你對本部落格的支援(轉載于:http://www.tarenagz.com);

  Windows CE是一種小型的、基于ROM的、具有Win32子集API的作業系統。它的優勢在于小尺寸、Win32 API子集和對多平台的支援能力。在Windows CE下程式設計需要注意的是,Windows CE裝置的資源很少,存儲器、顯示器都很小,接口也比較少,而且根據實際情況變化很大。另外,Windows CE隻支援Unicode,這在程式設計中要格外注意。在Windows CE中,除了一些基本的Windows通用控件以外,還有一些專門設計的控件,比如CommandBar。Windows CE體積雖小,但是它的功能并不少,記憶體管理、檔案操作、多線程、網絡功能等等它都支援,可以說是麻雀雖小,五髒俱全。

  2 Windows CE下的串行通信

  串行端口在Windows CE下屬于流接口裝置,它是串行裝置接口的正常I/O驅動程式調用和與通信相關的具體函數的結合。串行裝置被視為用于打開、關閉、讀寫串行端口的正常、可安裝的流裝置。Windows CE的通信函數和其它大多數Windows的通信函數相同。特别要注意的是,Windows CE不支援直接對串行端口的寄存器進行程式設計。常用的串行端口函數介紹如下:

  (1)打開和關閉串行端口

  CreateFile函數用于打開串行口。

  hPort=CreateFile(TEXT(“COM1:”),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL)。注意COM1後要有一個冒号。最後一個參數dwFlagsAndAttributes必須為0,因為Windows CE隻支援非重疊I/O。第3個參數dwShareMode也必須為0,通信端口不能像檔案一樣被共享。這個函數的傳回值是已打開的串行端口的句柄或者是INVALID_HANDLE_VALUE。

  關閉串行口可以調用CloseHandle(hPort)。

  (2)配置串行端口

  配置串行口主要是用DCB結構配置端口設定,包括波特率、停止位、資料位長度、校驗位、流量控制等等,還有配置逾時值。首先打開串行端口,用GetCommState函數獲得目前打開序列槽配置,然後根據需要修改DCB成員,最後用SetCommState函數設定新的序列槽配置。

  DCB PortDCB; //建立DCB變量

  Port.DCB.DCBlength=sizeof(DCB);

  GetCommState(hPort,&PortDCB); //擷取目前序列槽配置修改DCB成員

  PortDCB.BaudRate=9600; //波特率

  PortDCB.Parity=NOPARITY; //校驗位

  PortDCB.StopBits=ONESTOPBIT; //停止位

  PortDCB.ByteSize=8;

  .   SetCommState(hPort,&PortDCB); //設定新的序列槽配置

知識就是力量,别人學用知識來賺錢的成本低,在達内學習到程式設計是鑄造夢想的地方,如果你喜歡程式設計,這裡,有我們共同語言,共同的故事,共同的夢想!

(責任編輯:廣州達内教育訓練)