<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Windows CE.NET 4.2下PC與單片機的串行通信

Windows CE.NET 4.2下PC與單片機的串行通信

作者: 時(shí)間:2012-03-07 來(lái)源:網(wǎng)絡(luò ) 收藏

在工業(yè)控制中,常需要將采集到的數據傳送給機處理、顯示,并且根據處理結果給發(fā)送控制命令。雖然傳送速度相對較慢,但是傳送成本低,對實(shí)現監視和控制,具有足夠的帶寬,并且沒(méi)有過(guò)于復雜的編解碼,實(shí)現自定義的協(xié)議也不復雜,因而在工業(yè)自動(dòng)化、和軍事等領(lǐng)域的應用十分廣泛。隨著(zhù) CE嵌入式操作系統在工業(yè)控制中的廣泛應用,設計和實(shí)現 CE下具有重要的意義。

本文引用地址:http://dyxdggzs.com/article/171935.htm

1 簡(jiǎn)介

Windows CE 是一個(gè)面向移動(dòng)計算和嵌入式應用的操作系統,其突出優(yōu)點(diǎn)是模塊化、可定制性、完備性、實(shí)時(shí)性、通信能力強大和基于Win32應用程序編程接口。 Windows CE.N ET 是為嵌入式市場(chǎng)重新設計的Windows CE 3.0的后繼產(chǎn)品,為快速建立下一代智能移動(dòng)和小內存占用的設備提供了一個(gè)健壯的實(shí)時(shí)操作系統。他包括創(chuàng )建一個(gè)基于定制設備的Wi ndows CE所需的一切。

2Windows 下的通信技術(shù)

串行端口在Windows 4.2(以下簡(jiǎn)稱(chēng)Windows CE)下屬于流接口設備,他是串行設備接口常規I/O驅動(dòng)程序的調用與通信相關(guān)的具體函數的結合。串行設備被視為用于打開(kāi)、關(guān)閉和讀寫(xiě)串行端口的常規的可安裝的流設備。Windows CE的串口函數和Windows的串口函數基本相同,但有幾點(diǎn)值得注意:

(1)Windows CE只支持Unicode字符集,在編程時(shí)必須特別注意。

(2) Windows CE不支持重疊的I/O操作。

2.1打開(kāi)和關(guān)閉串行端口

在所有的流設備驅動(dòng)程序中,均使用CreateFile來(lái)打開(kāi)串行端口設備,如果這個(gè)端口不存在,CreateFile返回 ERROR_FILE_NOT_FOUND。因此,用戶(hù)指定的端口必須是存在并且可用的,而且要遵循Windows CE流接口設備驅動(dòng)程序的命名規則,即COM后接要打開(kāi)的端口號再緊跟一個(gè)冒號。
HANDLE hPort = CreateFile (_T(COM1:),
GENERIC_READ|GENERIC_WRITE, 0,NULL,
OPEN_EXISTING,0,NULL);

關(guān)閉串行端口比較簡(jiǎn)單,調用CloseHandle函數就能關(guān)閉一個(gè)打開(kāi)的串行端口。CloseHandle只有一個(gè)參數,即調用CreateFile函數打開(kāi)端口時(shí)返回的句柄,方法如下:

CloseHandle (hPort);

2.2讀寫(xiě)串行端口

正如使用CreateFile打開(kāi)串行端口一樣,可以使用ReadFile和WriteFile函數來(lái)讀寫(xiě)串行端 口。假設已經(jīng)調用CreateFile成功地打開(kāi)了串行端口,那么只需調用ReadFile即可從串行端口讀取數據:

37.jpg

由于Windows CE不支持重疊的I/O操作,所以第5個(gè)參數必須設置為NULL。寫(xiě)串行端口也很 簡(jiǎn)單。調用過(guò)程如下:

38.jpg

如果從主線(xiàn)程讀、寫(xiě)大量的串行數據,主線(xiàn)程就會(huì )因為等待相對較慢的串行讀或串行寫(xiě)操作而阻塞,不能即時(shí)處理其他的消息。因此最好用單獨的線(xiàn)程來(lái)讀寫(xiě)串行端口。

2.3配置串行端口

讀和寫(xiě)串行端口比較簡(jiǎn)單,但是還需要對端口配置好正確的波特率、字符長(cháng)度、奇偶校驗、傳輸模式等,端口才能正確通信??梢哉{用I/O設備控制(IOCTL)來(lái)配置串行驅動(dòng)程序,但此操作需要一些底層的知識,并且要有相應的“嵌入工具包”(ETK),而SDK不能實(shí)現該操作。除此之外,還有一種更簡(jiǎn)單的方法,就是調用GetCommState和SetCommState函數配置串行端口。由于配置端口的DCB結構內容較多,所以使用起來(lái)比較麻煩。錯誤地初始化 DCB結構是配置串行端口常見(jiàn)的問(wèn)題。如果一個(gè)串行通信函數沒(méi)有產(chǎn)生預期的效果,那么錯誤很可能是在DCB結構體的賦值。在與單片機實(shí)現串行通信的時(shí)候,由于只用到了RS 232串行口的RXD,TXD和GND三個(gè)引腳,而其他的引腳均舍棄不用,所以DCB的成員變量應該如下設置,否則不能正常通信:

39.jpg

2.4設置超時(shí)值

對于串行端口來(lái)說(shuō),還必須配置超時(shí)值,否則程序可能陷入到一個(gè)等待來(lái)自串口字符的死循環(huán)。通常,配置超時(shí)值和配置串口類(lèi)似。首先用 GetCommTimeouts函數獲取當前串口的超時(shí)值,然后修改CommTimeouts成員變量的值,最后用SetCommTimeouts設置新的超時(shí)值。

通信相關(guān)文章:通信原理



上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 串行 通信 單片機 PC CE.NET 4.2 Windows

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>