開(kāi)發(fā)在WINDOWS下的串口異步通信程序—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)_第1頁(yè)
開(kāi)發(fā)在WINDOWS下的串口異步通信程序—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)_第2頁(yè)
開(kāi)發(fā)在WINDOWS下的串口異步通信程序—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)_第3頁(yè)
開(kāi)發(fā)在WINDOWS下的串口異步通信程序—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)_第4頁(yè)
開(kāi)發(fā)在WINDOWS下的串口異步通信程序—計(jì)算機(jī)畢業(yè)設(shè)計(jì)(論文)_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1 用用 vcvc 開(kāi)發(fā)在開(kāi)發(fā)在 windowswindows 下的串口異步通信程序下的串口異步通信程序 學(xué) 生: 指導(dǎo)老師: 2 用用 vcvc 開(kāi)發(fā)在開(kāi)發(fā)在 windowswindows 下的串口異步通信程序下的串口異步通信程序 摘要 異步串行通信在現(xiàn)在的生產(chǎn)生活中被得到廣泛的應(yīng)用,在 pc 機(jī)上一 般至少有兩個(gè)串行口 com1 和 com2,常用的串行外設(shè)有電傳打字機(jī)、 crt 終端設(shè)備、傳真機(jī)以及遠(yuǎn)程數(shù)據(jù)采集設(shè)備、通信設(shè)備等。串行通信接 口標(biāo)準(zhǔn)經(jīng)過(guò)使用和發(fā)展,目前已經(jīng)有多種。但都是在 rs-232 標(biāo)準(zhǔn)的基礎(chǔ) 上經(jīng)過(guò)改進(jìn)而形成的。如何在 windows 平臺(tái)下實(shí)現(xiàn)串口通信,也越來(lái)越來(lái)

2、越多地被得到研究,實(shí)現(xiàn)的方法重要有利用 mscomm 控件和直接用 windows api 編程。利用 mscomm 控件編程相對(duì)來(lái)說(shuō)更簡(jiǎn)單一些,而直 接使用 windows api 編程更靈活一些。本文主要討論了使用 mscomm 控 件來(lái)開(kāi)發(fā)串口通信程序,而界面是利用 vc+ 6.0 mfc 來(lái)做的,這樣編程 靈活性大,并且能夠?qū)⒅饕ぷ骷性诖诰幊谭矫?。程序可以?shí)現(xiàn)利用 pc 機(jī)的兩個(gè) com 口實(shí)現(xiàn)異步通信,并能根據(jù)設(shè)置調(diào)整異步傳行通信參數(shù)。 【關(guān)鍵詞關(guān)鍵詞】串口通信、異步通信、終端、句柄 3 abstract serial communication is used more an

3、d more in our job and livings. there are two serial communication port at least in the pc,com1 and com2. typewriter, crt terminal device, electrograph , remote dada receiver, and communication device are depended on serial port. with the development of serial communication port standard, there are m

4、any kinds of port standard, but they are developed from the rs-232 standard. how to program serial communication based on the windows platform is studied more and more. there are two methods of programming , using windows api and using msccomm. using msccomm to program is discussed in the article ,t

5、he graphical interface is carried out using mfc. so this method is flexible and we can set focus in programming serial communication. two pc can communicate to each other by com port and you can change the serial port parameter with the program. keywords: serial port communication, asynchronous comm

6、unication, terminal device, handle 4 目錄 摘要摘要.2 abstract.3 引言引言.2 第第 1 1 章章 緒論緒論.3 1.1問(wèn)題的提出.3 1.2研究的意義.3 第第 2 2 章章 相關(guān)技術(shù)簡(jiǎn)介相關(guān)技術(shù)簡(jiǎn)介.6 2.1 串行接口標(biāo)準(zhǔn).6 2.2 rs-232 串行接口標(biāo)準(zhǔn).8 2.3 其他 eia 標(biāo)準(zhǔn)接口.13 2.4vc+ 的串口通訊.15 2.4.1 microsoft communications control .16 2.4.2 直接用 vc+訪問(wèn)串口。.18 2.5 mscomm控件介紹.24 2.5.1 mscomm 控件的通訊的方

7、式.24 2.5.2 mscomm 控件的屬性.25 第第 3 章章 系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì).31 3.1 系統(tǒng)功能設(shè)計(jì).31 3.2 算法分析.33 第第 4 章章 系統(tǒng)調(diào)試與運(yùn)行系統(tǒng)調(diào)試與運(yùn)行.38 4.1 系統(tǒng)調(diào)試.38 4.2 系統(tǒng)測(cè)試與運(yùn)行.38 4.2.1 測(cè)試方法.38 4.2.2 測(cè)試內(nèi)容.39 4.2.3 測(cè)試結(jié)果.39 第第 5 章章 結(jié)論結(jié)論.40 致謝致謝.41 參考文獻(xiàn)參考文獻(xiàn).42 5 6 引言 在 windows 應(yīng)用程序的開(kāi)發(fā)過(guò)程中,相互之間常常需要通信。而串口是工 業(yè)控制中計(jì)算機(jī)與外部串行設(shè)備之間常用的數(shù)據(jù)傳輸通道,由于串行通信方便 易行,其應(yīng)用非常廣泛。本文將介紹

8、串行通信的基本原理、在 windows 平臺(tái)下 的工作機(jī)制和用 vc 實(shí)現(xiàn)串行通信的方法。 串口是工業(yè)控制中計(jì)算機(jī)與外部設(shè)備之間常用的數(shù)據(jù)傳輸通道。但在 windows 環(huán)境下,計(jì)算機(jī)系統(tǒng)完全接管了各 種硬件資源,不允許用戶(hù)直接控制 串口的中斷管理,用戶(hù)只能通過(guò)一些 windows 開(kāi)發(fā)軟件,如 visual basic、visual c+等才能控制計(jì)算機(jī)的底層資源。visual c+因其高性能編譯技 術(shù)、面向?qū)ο笤O(shè)計(jì)方法、可視化開(kāi)發(fā)環(huán)境等特點(diǎn)得到廣泛的應(yīng)用,它包含了豐 富的編程工具,具有很高的代碼效率,提供了與 windows 系統(tǒng)更緊密的接口, 易于進(jìn)行硬件訪問(wèn),是一個(gè)靈活度和集成化都很高

9、的軟件開(kāi)發(fā)環(huán)境,非常適合 開(kāi)發(fā) windows 應(yīng)用程序。本文以 windows 環(huán)境下串口的通信為基礎(chǔ),主要介 紹串行通信的基本原理,并探討用 visual c+ 6.0 開(kāi)發(fā)串口通信程序的幾種方 法。 7 第 1 章 緒論 1.1 問(wèn)題的提出 在 windows 應(yīng)用程序的開(kāi)發(fā)中,我們常常需要面臨與外圍數(shù)據(jù)源設(shè)備通信 的問(wèn)題。計(jì)算機(jī)和單片機(jī)(如 mcs-51)都具有串行通信口,可以設(shè)計(jì)相應(yīng)的 串口通信程序,完成二者之間的數(shù)據(jù)通信任務(wù)。 串口是計(jì)算機(jī)上一種非常通用設(shè)備通信的協(xié)議(不要與通用串行總線 universal serial bus 或者 usb 混淆) 。大多數(shù)計(jì)算機(jī)包含兩個(gè)基于 r

10、s232 的串 口。串口同時(shí)也是儀器儀表設(shè)備通用的通信協(xié)議;很多 gpib 兼容的設(shè)備也帶 有 rs- 232 口。同時(shí),串口通信協(xié)議也可以用于獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。 1.2 研究的意義 串口通信的概念非常簡(jiǎn)單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字 節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一 根線接收數(shù)據(jù)。它很簡(jiǎn)單并且能夠?qū)崿F(xiàn)遠(yuǎn)距離通信。比如 ieee488 定義并行通 行狀態(tài)時(shí),規(guī)定設(shè)備線總長(zhǎng)不得超過(guò) 20 米,并且任意兩個(gè)設(shè)備間的長(zhǎng)度不得超 過(guò) 2 米;而對(duì)于串口而言,長(zhǎng)度可達(dá) 1200 米。典型地,串 口用于 ascii 碼字 符的傳輸。通信使用

11、3 根線完成:(1)地線, (2)發(fā)送, (3)接收。由于串口 通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時(shí)在另一 根線上接收數(shù)據(jù)。其 他線用于握手,但是不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、 停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通行的端口,這些參數(shù)必須匹配: a,波特率,波特率:這是一個(gè)衡量通信速度的參數(shù)。它表示每秒鐘傳送的 bit 的個(gè) 數(shù)。例如 300 波特表示每秒鐘發(fā)送 300 個(gè) bit。當(dāng)我們提到時(shí)鐘周期時(shí),我們就 是指波特率例如如果協(xié)議需要 4800 波特率,那么時(shí)鐘是 4800hz。這意味著串 口通信在數(shù)據(jù)線上的采樣率為 4800hz。通常電話線的波特率為 14400,2

12、8800 和 36600。波特率可以遠(yuǎn)遠(yuǎn)大于這些值,但是波特率和距離成反比。高波特率 常常用于放置的很近的儀器間的通信,典型的例子就是 gpib 設(shè)備的通信。 8 b,數(shù)據(jù)位,數(shù)據(jù)位:這是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù)。當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包, 實(shí)際的數(shù)據(jù)不會(huì)是 8 位的,標(biāo)準(zhǔn)的值是 5、7 和 8 位。如何設(shè)置取決于你想傳送 的信 息。比如,標(biāo)準(zhǔn)的 ascii 碼是 0127(7 位) 。擴(kuò)展的 ascii 碼是 0255(8 位) 。如果數(shù)據(jù)使用簡(jiǎn)單的文本(標(biāo)準(zhǔn) ascii 碼) ,那么每個(gè)數(shù)據(jù)包 使用 7 位數(shù)據(jù)。每個(gè)包是指一個(gè)字節(jié),包括開(kāi)始/停止位,數(shù)據(jù)位和奇偶校驗(yàn)位。 由于實(shí)際數(shù)據(jù)位取決

13、于通信協(xié)議的選取,術(shù)語(yǔ)“ 包”指任何通信的情況。 c,停止位,停止位:用于表示單個(gè)包的最后一位。典型的值為 1,1.5 和 2 位。由 于數(shù)據(jù)是在傳輸線上定時(shí)的,并且每一個(gè)設(shè)備有其自己的時(shí)鐘,很可能在通信 中兩臺(tái)設(shè) 備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并 且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì)。適用于停止位的位數(shù)越多,不同時(shí)鐘同步 的容忍程度越大, 但是數(shù)據(jù)傳輸率同時(shí)也越慢。 d,奇偶校驗(yàn)位,奇偶校驗(yàn)位:在串口通信中一種簡(jiǎn)單的檢錯(cuò)方式。有四種檢錯(cuò)方式:偶、 奇、高和低。當(dāng)然沒(méi)有校驗(yàn)位也是可以的。對(duì)于偶和奇校驗(yàn)的情況,串口會(huì)設(shè) 置校驗(yàn)位 (數(shù)據(jù)位后面的一位) ,用一個(gè)值確保傳輸?shù)臄?shù)

14、據(jù)有偶個(gè)或者奇?zhèn)€邏 輯高位。例如,如果數(shù)據(jù)是 011,那么對(duì)于偶校驗(yàn),校驗(yàn)位為 0,保證邏輯高的 位數(shù)是偶數(shù) 個(gè)。如果是奇校驗(yàn),校驗(yàn)位位 1,這樣就有 3 個(gè)邏輯高位。高位和 低位不真正的檢查數(shù)據(jù),簡(jiǎn)單置位邏輯高或者邏輯低校驗(yàn)。這樣使得接收設(shè)備 能夠知道一個(gè)位的狀 態(tài),有機(jī)會(huì)判斷是否有噪聲干擾了通信或者是否傳輸和接 收數(shù)據(jù)是否不同步。 9 第 2 章 相關(guān)技術(shù)簡(jiǎn)介 2.1 串行接口標(biāo)準(zhǔn) 在計(jì)算機(jī)網(wǎng)絡(luò)數(shù)據(jù)通信中,有幾個(gè)接口標(biāo)準(zhǔn)是經(jīng)常見(jiàn)到和用到的,那就是 通常所說(shuō)的 rs-232、rs-422 與 rs-485 標(biāo)準(zhǔn)。它們都是串行數(shù)據(jù)接口標(biāo)準(zhǔn),最 初都是由電子工業(yè)協(xié)會(huì)(eia)制定并發(fā)布的。 rs

15、-232 接口(又稱(chēng) eia rs-232)是目前最常用的一種串行通信接口。它是 在 1970 年由美國(guó)電子工業(yè)協(xié)會(huì)(eia)聯(lián)合貝爾系統(tǒng)公司、調(diào)制解調(diào)器廠家及 計(jì)算機(jī)終端生產(chǎn)廠家共 同制定的用于串行通信的標(biāo)準(zhǔn)。它的全名是“數(shù)據(jù)終端 設(shè)備(dte)和數(shù)據(jù)通信設(shè)備(dce)之間串行二進(jìn)制數(shù)據(jù)交換接口技術(shù)標(biāo)準(zhǔn)”。 該標(biāo)準(zhǔn)規(guī)定采用一個(gè) 25 腳的 db25 連接器,對(duì)連接器的每個(gè)引腳的信號(hào)內(nèi)容 加以規(guī)定,還對(duì)各種信號(hào)的電平加以規(guī)定。 rs-422 由 rs-232 發(fā)展而來(lái),它是為彌補(bǔ) rs-232 之不足而提出的。為改進(jìn) rs-232 通信距離短、速率低的缺點(diǎn),rs-422 定義了一 種平衡通信接

16、口,將傳 輸速率提高到 10mb/s,傳輸距離延長(zhǎng)到 4 000 英尺(速率低于 100kb/s 時(shí)) ,并 允許在一條平衡總線上連接最多 10 個(gè)接收器。rs-422 是一種單機(jī)發(fā)送、多機(jī) 接收的單向、平衡傳輸規(guī)范,后 來(lái)被命名為 tia/eia-422a 標(biāo)準(zhǔn)。為擴(kuò)展應(yīng)用 范圍,eia 又于 1983 年在 rs-422 基礎(chǔ)上制定了 rs-485 標(biāo)準(zhǔn),增加了多點(diǎn)、雙 向通信能 力,即允許多個(gè)發(fā)送器連接到同一條總線上,同時(shí)增加了發(fā)送器的驅(qū) 動(dòng)能力和沖突保護(hù)特性,擴(kuò)展了總線共模范圍,后命名為 tia/eia-485a 標(biāo)準(zhǔn)。 由于 eia 提出的建議標(biāo)準(zhǔn)都是以“rs”作為前綴的,所以在通信

17、工業(yè)領(lǐng)域,仍然 習(xí)慣將上述標(biāo)準(zhǔn)以 rs 作前綴稱(chēng)謂,也就是上面說(shuō)到的 3 個(gè)串行接口標(biāo)準(zhǔn)。 rs-232、rs-422 與 rs-485 標(biāo)準(zhǔn)只對(duì)接口的電氣特性作出規(guī)定,而不涉及 接插件、電纜或協(xié)議,在此基礎(chǔ)上用戶(hù)可以建立自己的高層通信協(xié)議。因此在 視頻界的應(yīng)用,許多廠家都建立了一套高層通信協(xié)議,或公開(kāi)或廠家獨(dú)家使用。 表 2-1 是以上 3 種串行接口電氣性能參數(shù)的綜合比較。 表 2-1 rs-232、rs-422 與 rs-485 串行接口電氣性能參數(shù)綜合比較 10 性 能 參 數(shù)rs232rs422r485 工作方式單端差分差分 節(jié)點(diǎn)數(shù)1 收 1 發(fā)1 發(fā) 10 收1 發(fā) 32 收 最大

18、傳輸電纜長(zhǎng)度50 英尺400 英尺400 英尺 最大傳輸速率20kb/s10mb/s10mb/s 最大驅(qū)動(dòng)輸出電壓+/-25v-0.25v+6v-7v+12v 驅(qū)動(dòng)器輸出信號(hào)電平(負(fù) 載最小值) +/-5+/-15v+/-2.0v+/-1.5v 驅(qū)動(dòng)器輸出信號(hào)電平(空 載最大值) +/-25v+/-6v+/-6v 驅(qū)動(dòng)器負(fù)載阻抗(w)3k7k10054 擺率(最大值)30v/sn/an/a 接收器輸入電壓范圍+/-15v-10v+10v-7v+12v 接收器輸入門(mén)限+/-3v+/-200mv+/-200mv 接收器輸入電阻(w)3k7k4k(最?。?12k 驅(qū)動(dòng)器共模電壓-3v+3v-1v+3

19、v 接收器共模電壓-7v+7v-7v+12v 2.2 rs-232 串行接口標(biāo)準(zhǔn) 目前 rs-232 是 pc 與通信工業(yè)中應(yīng)用最廣泛的一種串行接口,其中 eia(electronic industry association)代表美國(guó)電子工業(yè)協(xié)會(huì),rs 代表推薦標(biāo) 準(zhǔn),232 是標(biāo)識(shí)號(hào)。rs-232 被定義為一種在低速率串行通信中增加通信距離的 單端標(biāo) 準(zhǔn)。rs-232 采取不平衡傳輸方式,即所謂單端通信。一個(gè)完整的 rs- 232 接口有 22 根線,采用標(biāo)準(zhǔn)的 25 芯插頭座(db-25) 。除此之處,目前廣 泛 應(yīng)用的還有一種 9 芯的 rs-232 接口(db-9) 。它們的外觀都是

20、一個(gè) d 形的,不 過(guò),對(duì)接的兩個(gè)接口又分為針式的“公頭”和孔式的“母頭”兩 種,db-9“母頭”和 “公頭”與 db-25 的“母頭”和“公頭”分別如圖 2-1 所示。 11 圖 2-1 db-9/db-25 的“公頭”和“母頭” 在 rs-232 標(biāo)準(zhǔn)中定義了邏輯 1 和邏輯 0 電壓級(jí)數(shù),以及標(biāo)準(zhǔn)的傳輸速率和 連接器類(lèi)型。信號(hào)大小在正的和負(fù)的 315v 之間。rs-232 規(guī)定接近 0 的電平 是無(wú)效的,邏輯 1 規(guī)定為負(fù)電平,有效負(fù)電平的信號(hào)狀態(tài)稱(chēng)為傳號(hào)(marking) , 它的功能意義為 off;邏輯 0 規(guī)定為正電平,有效正電平的信號(hào) 狀態(tài)稱(chēng)為空號(hào) (spacing) ,它的功能

21、意義為 on。根據(jù)設(shè)備供電電源的不同,正負(fù) 5、正負(fù) 10、正負(fù) 12 和正負(fù) 15 這樣的電平都是可能的。 在 rs-232 標(biāo)準(zhǔn)中規(guī)定的設(shè)備可以分為數(shù)據(jù)終端設(shè)備(dte)和數(shù)據(jù)通信設(shè) 備(dce)兩類(lèi),這種分類(lèi)定義了不同的線路用來(lái)發(fā)送和接收信號(hào)。一般來(lái)說(shuō), 計(jì)算機(jī)和終端設(shè)備有 dte 連接器,調(diào)制解調(diào)器和打印機(jī)有 dce 連接器。 rs-232 標(biāo)準(zhǔn)中指定了 20 個(gè)不同的信號(hào)連接,由 25 個(gè) d-sub(微型 d 類(lèi)) 管腳構(gòu)成的 db-25 連接器。但很多設(shè)備只用了其中的一小部分管腳,出于節(jié)省 資金和空間的考慮不少機(jī)器采用較小的連接器,特別是 9 管腳的 d-sub 或者是 db-9

22、 型連接器被廣泛使用。 因?yàn)?rs-232 到目前為止經(jīng)歷了好多個(gè)不同版本,最近的版本號(hào)為 e,它相 對(duì)目前廣泛應(yīng)用的 c 版本來(lái)說(shuō),電氣性能改進(jìn)了不少,也對(duì)連接器中的 25 個(gè) 管腳進(jìn)行了充分利用(只有 2 個(gè)予以保留) 。表 2-2 列出的是 25 芯 rs-232e 接 口的信號(hào)和管腳分配,而表 2-3 所示的則是在 pc 機(jī)、調(diào)制解調(diào)器和路由 器等 網(wǎng)絡(luò)設(shè)備中使用的 9 芯 rs-232 接口的信號(hào)和管腳分配。 表 2-2 25 芯 rs-232 接口的信號(hào)和管腳分配 引 腳 號(hào)縮 寫(xiě) 符信 號(hào) 方 向說(shuō) 明 1pe公共端連接器外殼 2txd輸出發(fā)送數(shù)據(jù) 3rxd輸入接收數(shù)據(jù) 12 4

23、rts輸出請(qǐng)示發(fā)送 5cts輸入清除發(fā)送 6dsr輸入數(shù)據(jù)設(shè)備準(zhǔn)備好 7sg公共端信號(hào)地 8dcd輸入載波檢測(cè) 9 保留 10 保留 11stf輸出選擇傳送通道 12dcd輸入載波檢測(cè) 13cts輸入清除發(fā)送 14txd輸出發(fā)送數(shù)據(jù) 15tck輸入發(fā)送時(shí)鐘 16rxd輸入接收數(shù)據(jù) 17rck輸入接收器定時(shí) 18ll輸出本地回路控制 19rts輸出請(qǐng)示發(fā)送 20dtr輸出數(shù)據(jù)終端準(zhǔn)備好 21rl輸出遠(yuǎn)程回路控制 22ri輸入振鈴指示器 23dsr輸入數(shù)據(jù)裝置準(zhǔn)備好 24xck輸出發(fā)送器定時(shí) 25ti輸入測(cè)試指示器 表 2-3 9 芯 rs-232 接口的信號(hào)和管腳分配 引 腳 號(hào)縮 寫(xiě) 符信 號(hào)

24、 方 向說(shuō) 明 1dcd輸入載波檢測(cè) 2rxd輸入接收數(shù)據(jù) 3txd輸出發(fā)送數(shù)據(jù) 4dtr輸出數(shù)據(jù)終端準(zhǔn)備好 13 5gnd公共端信號(hào)地 6dsr輸入數(shù)據(jù)裝置準(zhǔn)備好 7rts輸出請(qǐng)示發(fā)送 8cts輸入清除發(fā)送 9ri輸入振鈴指示 在 rs-232c 版本中,db-25 的 25 個(gè)引腳(4 個(gè)數(shù)據(jù)引腳、11 個(gè)控制信號(hào) 引腳、3 個(gè)定時(shí)引腳、7 個(gè)備用和未定義引腳)實(shí)際上只用了表 2-2 中的 9 個(gè), 分別是:1、2、3、4、5、6、8、20、22 腳。它們的作用分別如下。 (1)控制信號(hào)引腳(4、5、6、8、20 和 22 號(hào) 6 個(gè)引腳) 數(shù)據(jù)裝置準(zhǔn)備好(data set ready,d

25、sr):有效時(shí)(on)狀態(tài),表明接 口處于可以使用的狀態(tài)。 數(shù)據(jù)終端準(zhǔn)備好(data terminal ready,dtr):有效時(shí)(on)狀態(tài),表 明數(shù)據(jù)終端可以使用。 這兩個(gè)信號(hào)有時(shí)連到電源上,一上電就立即有效。但這兩個(gè)設(shè)備狀態(tài)信號(hào) 有效,只表示設(shè)備本身可用,并不說(shuō)明通信鏈路可以開(kāi)始進(jìn)行通信了,能否開(kāi) 始進(jìn)行通信要由下面的控制信號(hào)決定。 請(qǐng)求發(fā)送(request to send,rts):用來(lái)表示 dte 請(qǐng)求 dce 發(fā)送數(shù)據(jù), 即當(dāng)終端要發(fā)送數(shù)據(jù)時(shí),使該信號(hào)有效(on 狀態(tài)) ,向 dte 設(shè)備請(qǐng)求發(fā)送。 允許發(fā)送(clear to send,cts):用來(lái)表示 dce 準(zhǔn)備好接收 d

26、te 發(fā)來(lái) 的數(shù)據(jù),是對(duì)請(qǐng)求發(fā)送信號(hào) rts 的響應(yīng)信號(hào)。 當(dāng) modem 之類(lèi)設(shè)備已準(zhǔn)備好接收終端傳來(lái)的數(shù)據(jù)并向前發(fā)送時(shí),使該信 號(hào)有效,通知終端開(kāi)始沿發(fā)送數(shù)據(jù)線 txd 發(fā)送數(shù)據(jù)。這對(duì) rts/cts 請(qǐng)求應(yīng)答 聯(lián)絡(luò)信 號(hào)是用于半雙工 modem 系統(tǒng)中發(fā)送方式和接收方式之間的切換。在 全雙工系統(tǒng)中作發(fā)送方式和接收方式之間的切換。在全雙工系統(tǒng)中,因配置雙 向通道,故不需 要 rts/cts 聯(lián)絡(luò)信號(hào)使其變高。 數(shù)據(jù)載波檢出(data carrier dectection,dcd):也叫“接收線信號(hào)檢出” (received line dectection,rlsd) ,用來(lái)表示 dce 已

27、接通通信鏈路,告知 dte 準(zhǔn)備接收數(shù)據(jù)。當(dāng)本地的 modem 收到由通信鏈路另一端(遠(yuǎn)地)的 modem 送來(lái)的載波信號(hào)時(shí),使 rlsd 信號(hào)有效,通知終端準(zhǔn)備接收,并且由 14 modem 將接收下來(lái)的載波信號(hào)解調(diào)成數(shù)字?jǐn)?shù)據(jù)后,沿接收數(shù)據(jù)線 rxd 送到終 端。 振鈴指示(ringing,ri):當(dāng) modem 收到交換臺(tái)送來(lái)的振鈴呼叫信號(hào) 時(shí),使該信號(hào)有效(on 狀態(tài)) ,通知終端,已被呼叫。 (2)數(shù)據(jù)發(fā)送與接收線(2 和 3 號(hào) 2 個(gè)引腳) 發(fā)送數(shù)據(jù)(transmitted data,txd):通過(guò) txd 終端將串行數(shù)據(jù)發(fā)送到 modem, (dtedce) 。 接收數(shù)據(jù)(rec

28、eived data,rxd):通過(guò) rxd 線終端接收從 modem 發(fā) 來(lái)的串行數(shù)據(jù), (dcedte) 。 (3)地線 sg(7 腳) 、pe(1 腳)分別用來(lái)接信號(hào)地和保護(hù)地信號(hào)線,無(wú)方向。 上述控制信號(hào)線何 時(shí)有效,何時(shí)無(wú)效的順序表示了接口信號(hào)的傳送過(guò)程。 例如,只有當(dāng) dsr 和 dtr 都處于有效(on)狀態(tài)時(shí),才能在 dte 和 dce 之 間進(jìn)行傳送操作。若 dte 要發(fā)送數(shù)據(jù),則預(yù)先將 dtr 線置成有效(on)狀 態(tài),等 cts 線上收到有效(on)狀態(tài)的回答后,才能在 txd 線上發(fā)送串行數(shù) 據(jù)。這種順序的規(guī)定對(duì) 半雙工的通信線路特別有用,因?yàn)橹挥邪腚p工的通信能 確定

29、dce 已由接收方向改為發(fā)送方向,這時(shí)線路才能開(kāi)始發(fā)送。 使用 db-9 連接器,作為提供多功能 i/o 卡或主板上 com1 和 com2 兩個(gè) 串行接口的連接器,它只提供異步通信的 9 個(gè)信號(hào)。db-25 型連接器的引腳分 配與 db-25 型引腳信號(hào)完全不同。因此,若與配接 db-25 型連接器的 dce 設(shè) 備連接,必須使用專(zhuān)門(mén)的電纜線。 在連接距離上,如果通信速率低于 20kbit/s 時(shí),rs-232c 所直接連接的最 大物理距離為 15m。 2.3 其他 eia 標(biāo)準(zhǔn)接口 除了前面介紹的 eia-232 接口外,在 eia 接口標(biāo)準(zhǔn)中,常見(jiàn)的串行接口協(xié) 議還有諸如 eia-422

30、、eia-449、eia-485、eia-530 等,本節(jié)予以簡(jiǎn)單介紹。 eia-422(過(guò)去稱(chēng)為 rs-422)是采用 4 線、全雙工、差分傳輸、多點(diǎn)通信 的數(shù)據(jù)傳輸接口協(xié)議。與下面將要介紹的 eia-485 不同的是 eia-422 不允許出 15 現(xiàn)多個(gè)發(fā)送端,而只能有多個(gè)接收端(eia-232 接口也可以有多個(gè)接收端) 。如 eia-232 型可以有兩端口、四端口和八端口等 幾種型號(hào),而 eia-422 型接口可 以有四端口、八端口,甚至十端口等幾種型號(hào)。eia-422 解決方案?jìng)鬏斝盘?hào)的 距離和速度比標(biāo)準(zhǔn) eia-232 通信更 遠(yuǎn)、更快,并且一般都能抗電子干擾和電涌。 當(dāng)電纜線的長(zhǎng)

31、度為 12m(40 碼)時(shí)傳輸速率可以達(dá)到 10mb/s。由于 eia-422 解 決方案具有上述優(yōu)點(diǎn), 因此成為工業(yè)和制造應(yīng)用及分布廣泛的銷(xiāo)售經(jīng)營(yíng)企業(yè)的 首選產(chǎn)品。 eia-422 的通常用途是作為 rs-232 的擴(kuò)展,曾在蘋(píng)果麥金托什(mac)上 大量使用。 eia-422 接口的機(jī)械特性由 eia-530 或 eia-449 規(guī)定,然而設(shè)備僅有在發(fā) 送方和接收方成對(duì)出現(xiàn)時(shí)才存在。電纜的最高傳輸速率為在 1.2m 時(shí)為 10mb/s,1 200m 時(shí) 100kb/s。eia-422 不能實(shí)現(xiàn)像 eia-485 那樣的真正的多點(diǎn) 通信,盡管一個(gè)發(fā)送端就可連接最多 10 個(gè)接收端。 eia-

32、449(過(guò)去也稱(chēng) rs-449)接口協(xié)議是于 1992 年 9 月制定的。它規(guī)定了 數(shù)據(jù)終端設(shè)備和數(shù)據(jù)通信設(shè)備之間的接口的功能特性和機(jī)械特性。 規(guī)定 rs- 449 采用平衡傳輸時(shí)的電氣特性協(xié)議是 rs-422。規(guī)定非平衡傳輸時(shí)的電氣特性 協(xié)議是 rs-423,數(shù)據(jù)的傳輸率可達(dá) 200kbit/s。協(xié) 議規(guī)定了兩個(gè) d-sub 連接時(shí) 第一個(gè)為 37 腳,第二個(gè)為 9 腳。盡管這種協(xié)議沒(méi)有在個(gè)人電腦上使用,這種接 口在大型數(shù)據(jù)交換服務(wù)器上還是很常見(jiàn)的。 eia-485(過(guò)去叫做 rs-485 或者 rs485)接口協(xié)議是電力特性規(guī)定為 2 線、 全雙工、多點(diǎn)通信的標(biāo)準(zhǔn),它的電力特性和 rs-2

33、32 大不一 樣,用纜線兩端的 電壓差值來(lái)表示傳遞信號(hào)。1 端的電壓標(biāo)識(shí)為邏輯 1,另一端標(biāo)識(shí)為邏輯 0。兩 端的電壓差最小為 0.2v 以上時(shí)有效,任何不大于 12v 或者不 小于7v 的差值 對(duì)接收端都被認(rèn)為是正確的。 eia-485 僅僅規(guī)定了接收端和發(fā)送端的電力特性,沒(méi)有規(guī)定或推薦任何數(shù) 據(jù)協(xié)議。eia-485 可以應(yīng)用于配置便宜的廣域網(wǎng)和采用單機(jī)發(fā)送,多機(jī) 接收通 信連接,可提供高速的數(shù)據(jù)通信速率(10m 時(shí) 35mb/s,1 200m 時(shí) 100 kb/s) 。 eia-485 和 eia-422 一樣使用雙絞線進(jìn)行高電壓差分平衡傳輸,可以進(jìn)行大面 積長(zhǎng)距離傳輸(最長(zhǎng)為 1 200

34、m) 。與 eia-422 不同的是,eia-422 采用不可轉(zhuǎn)換 16 的單發(fā)送端,eia-485 的發(fā)送端需要設(shè)置為發(fā)送模式,這使得 eia-485 可以使 用雙線模式實(shí)現(xiàn)真正的多點(diǎn)雙向通信。 eia-485 推薦使用在點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中,線型是總線型,不能是星型和環(huán)型網(wǎng) 絡(luò)。在理想情況下 eia-485 需要 2 個(gè)終接電阻,其阻值要求等于傳輸電 纜的特 性阻抗。沒(méi)有特性阻抗的話,當(dāng)所有的設(shè)備都靜止或者沒(méi)有能量的時(shí)候就會(huì)產(chǎn) 生噪聲。沒(méi)有終接電阻的話,會(huì)使得較快速的發(fā)送端產(chǎn)生多個(gè)數(shù)據(jù)信號(hào)的邊緣, 這其中的一些是不正確的。eia-485 不能使用星型或者環(huán)型的拓?fù)浣Y(jié)構(gòu),主要 是由于在這些結(jié)構(gòu)中,e

35、ia-485 接口過(guò)低或者過(guò)高的終接電阻可以產(chǎn)生電 磁干 擾。 eia-485 在使用 4 線時(shí)可以和 eia-422 一樣實(shí)現(xiàn)全雙工,還可實(shí)現(xiàn)真正的 多點(diǎn)通信。在某些限制條件下 eia-485 和 eia-422 可以實(shí) 現(xiàn)相互的連接。如 scsi-2 和 scsi-3 控制卡通常使用這種標(biāo)準(zhǔn)的設(shè)備來(lái)作為物理層。eia-485 接口 同樣可以在一些工廠的項(xiàng)目控制機(jī)器上看到,來(lái) 實(shí)現(xiàn)工廠不同樓層之間的數(shù)據(jù) 通信。它可以抵抗機(jī)械設(shè)備和焊接設(shè)備的電磁干擾。 eia-485 還可以在大型音頻系統(tǒng)中使用,如在音樂(lè)廳或劇院中通過(guò)這種接 口設(shè)備就可以使用普通的計(jì)算機(jī)來(lái)運(yùn)行一些特殊的軟件,實(shí)現(xiàn)遠(yuǎn)距離音頻設(shè)備

36、 的控制。eia-485 通過(guò) xlr 標(biāo)準(zhǔn)的線纜連接設(shè)備大量用于麥克風(fēng)上,從而實(shí)現(xiàn) 舞臺(tái)和控制臺(tái)之間的連接而不需要預(yù)設(shè)線路。 表 2-4 列出了 eia-485 的一些特性和引腳的分配及和 rs-232 的比較。 表 2-4 eia-485 的一些特性和引腳的分配及和 rs-232 的比較 eia-485rs-232db-25de-9 common groundcarrier detect(dcd)81 clear to send +(cts+)received data(rd)32 ready to send +(rts+) transmitted data(td)23 received

37、data +(rxd+) data terminal ready(dtr) 204 received data -(rxd-)common ground75 clear to send -(cts-)data set ready(dsr)66 17 ready to send -(rts-)request to send(rts)47 transmitted data +(txd+) clear to send(cts)58 2.4vc+ 的串口通訊 c+語(yǔ)言是當(dāng)今最流行的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,而 visual c+是 microsoft 公司開(kāi)發(fā)的基于 windows 操作系統(tǒng)的 c+語(yǔ)言程

38、序的可視化編程工 具。visual c+的執(zhí)行速度快,對(duì)操作系統(tǒng)的訪問(wèn)權(quán)限高,這些是其他許多編 程工具所無(wú)法比擬的。因此,visual c+成為眾多程序員在 windows 操作系統(tǒng) 下編程的首選工具。 我們選擇 visual c+6.0(以下簡(jiǎn)稱(chēng) vc6)作為我們的編程工具。它提供了 強(qiáng)大的編譯能力以及良好的界面操作性。能夠?qū)?windows 95/98、windows nt 以及 windows 2000 下的 c+程序設(shè)計(jì)提供完善的編程環(huán)境。同時(shí) vc6 對(duì)網(wǎng)絡(luò)、 數(shù)據(jù)庫(kù)等方面的編程也都提供相應(yīng)的環(huán)境支持。 在 vc+中有兩種方法可以進(jìn)行串口通訊。一種是利用 microsoft 公司提供

39、 的 activex 控件 microsoft communications control。另一種是直接用 vc+訪問(wèn) 串口。下面將簡(jiǎn)述這兩種方法。 2.4.1 microsoft communications control microsoft 公司在 windows 中提供了一個(gè)串口通訊控件,用它,我們可以 很簡(jiǎn)單的利用串口進(jìn)行通訊。在使用它之前,應(yīng)將控件加在應(yīng)用程序的對(duì)話框 上。然后再用 classwizard 生成相應(yīng)的對(duì)象?,F(xiàn)在我們可以使用它了。 該控件有很多自己的屬性,你可以通過(guò)它的屬性窗口來(lái)設(shè)置,也可以用程 序設(shè)置。我推薦用程序設(shè)置,這樣更靈活。 setcommport:指定使

40、用的串口。 getcommport:得到當(dāng)前使用的串口。 setsettings:指定串口的參數(shù)。一般設(shè)為默認(rèn)參數(shù)9600,n,8,1。這 樣方便與其他串口進(jìn)行通訊。 getsettings:取得串口參數(shù)。 18 setportopen:打開(kāi)或關(guān)閉串口,當(dāng)一個(gè)程序打開(kāi)串口時(shí),另外的程序?qū)o(wú) 法使用該串口。 getportopen:取得串口狀態(tài)。 getinbuffercount:輸入緩沖區(qū)中接受到的字符數(shù)。 setinputlen:一次讀取輸入緩沖區(qū)的字符數(shù)。設(shè)置為 0 時(shí),程序?qū)⒆x取緩 沖區(qū)的全部字符。 getinput:讀取輸入緩沖區(qū)。 getoutbuffercount:輸出緩沖區(qū)中待發(fā)

41、送的字符數(shù)。 setoutput:寫(xiě)入輸出緩沖區(qū)。 一般而言,使用上述函數(shù)和屬性就可以進(jìn)行串口通訊了。以下是一個(gè)范例。 #define#define messagelengthmessagelength 100100 classclass cmydialogcmydialog : : publicpublic cdialogcdialog protected:protected: variantvariant inbuffer;inbuffer; variantvariant outbuffer;outbuffer; cmscommcmscomm m_com;m_com; public:pub

42、lic: . boolbool cmydialog:oninitdialog()cmydialog:oninitdialog() cdialog:oninitdialog();cdialog:oninitdialog(); m_com.setcommport(1);m_com.setcommport(1); ifif (!m_com.getportopen()(!m_com.getportopen() m_com.setsettings(57600,n,8,1);m_com.setsettings(57600,n,8,1); m_com.setportopen(true);m_com.setp

43、ortopen(true); m_com.setinbuffercount(0);m_com.setinbuffercount(0); settimer(1,10,null);settimer(1,10,null); inbuffer.bstrval=newinbuffer.bstrval=new unsignedunsigned shortmessagelength;shortmessagelength; outbuffer.bstrval=newoutbuffer.bstrval=new unsignedunsigned shortmessagelength;shortmessagelen

44、gth; outbuffer.vt=vt_bstr;outbuffer.vt=vt_bstr; returnreturn true;true; 19 voidvoid cmydialog:ontimer(uintcmydialog:ontimer(uint nidevent)nidevent) ifif (m_com.getinbuffercount()=messagelength)(m_com.getinbuffercount()=messagelength) inbuffer=m_com.getinput();inbuffer=m_com.getinput(); / handlehandl

45、e thethe inbuffer.inbuffer. / fillfill thethe outbuffer.outbuffer. m_com.setoutput(outbuffer);m_com.setoutput(outbuffer); cdialog:ontimer(nidevent);cdialog:ontimer(nidevent); 用該控件傳輸?shù)臄?shù)據(jù)是 unicode 格式。關(guān)于 unicode 和 ansi 的關(guān)系和轉(zhuǎn)換 請(qǐng)參看 msdn。 關(guān)于該控件的其他詳細(xì)資料請(qǐng)查看 msdn 關(guān)于 comm control 部分。 2.4.2 直接用直接用 vc+訪問(wèn)串口。訪問(wèn)串口。

46、在 vc+中,串口和磁盤(pán)文件可以統(tǒng)一的方式來(lái)簡(jiǎn)單讀寫(xiě)。這兩者幾乎沒(méi)有 什么不同,只是在 windows 9x 下磁盤(pán)文件只能做同步訪問(wèn),而串口只能做異步 訪問(wèn)。 createfile:用指定的方式打開(kāi)指定的串口。通常的方式為 m_hcom = createfile( com1, generic_read | generic_write, 0, null, open_existing, file_attribute_normal | file_flag_overlapped, null ); m_hcom 為文件句柄。generic_read | generic_write 指定可以對(duì)串口進(jìn)行

47、讀寫(xiě)操作。第三個(gè)參數(shù) 0 表示串口為獨(dú)占打開(kāi)。open_existing 表示當(dāng)指定串 口不存在時(shí),程序?qū)⒎?回失敗。 file_attribute_normal | file_flag_overlapped 則表示文件屬性。當(dāng)打開(kāi)串口時(shí),必須指定 file_flag_overlapped,它表示文件或設(shè)備不會(huì)維護(hù)訪問(wèn)指針,則在讀寫(xiě)時(shí), 必須使用 overlapped 結(jié)構(gòu)指定訪問(wèn)的文件偏移量。 readfile:讀取串口數(shù)據(jù)。 writefile:向串口寫(xiě)數(shù)據(jù)。 20 closehandle:關(guān)閉串口。 commtimeouts:commtimeouts 主要用于串口超時(shí)參數(shù)設(shè)置。commt

48、imeouts 結(jié)構(gòu)如下: typedeftypedef structstruct _commtimeouts_commtimeouts dworddword readintervaltimeout;readintervaltimeout; dworddword readtotaltimeoutmultiplier;readtotaltimeoutmultiplier; dworddword readtotaltimeoutconstant;readtotaltimeoutconstant; dworddword writetotaltimeoutmultiplier;writetotalti

49、meoutmultiplier; dworddword writetotaltimeoutconstant;writetotaltimeoutconstant; commtimeouts,*lpcommtimeouts;commtimeouts,*lpcommtimeouts; readintervaltimeout:兩字符之間最大的延時(shí),當(dāng)讀取串口數(shù)據(jù)時(shí),一旦 兩個(gè)字符傳輸?shù)臅r(shí)間差超過(guò)該時(shí)間,讀取函數(shù)將返回現(xiàn)有的數(shù)據(jù)。設(shè)置為 0 表 示該參數(shù)不起作用。 readtotaltimeoutmultiplier:讀取每字符間的超時(shí)。 readtotaltimeoutconstant:一次讀取串口數(shù)

50、據(jù)的固定超時(shí)。所以在一次 讀取串口的操作中,其超時(shí)為 readtotaltimeoutmultiplier 乘以讀取的字節(jié) 數(shù)再加上 readtotaltimeoutconstant。將 readintervaltimeout 設(shè)置為 maxdword,并將 readtotaltimeoutmultiplier 和 readtotaltimeoutconstant 設(shè)置為 0,表示讀取操作將立即返回存放在輸入緩沖區(qū)的字符。 writetotaltimeoutmultiplier:寫(xiě)入每字符間的超時(shí)。 writetotaltimeoutconstant:一次寫(xiě)入串口數(shù)據(jù)的固定超時(shí)。所以在一次 寫(xiě)

51、入串口的操作中,其超時(shí)為 writetotaltimeoutmultiplier 乘以寫(xiě)入的字節(jié) 數(shù)再加上 writetotaltimeoutconstant。 setcommtimeouts 函數(shù)可以設(shè)置某設(shè)備句柄的超時(shí)參數(shù),要得到某設(shè)備句 柄的超時(shí)參數(shù)可以用 getcommtimeouts 函數(shù)。 dcb:dcb 結(jié)構(gòu)主要用于串口參數(shù)設(shè)置。該結(jié)構(gòu)太龐大,這里就不一一講述 了,有興趣者可查看 msdn 關(guān)于 dcb 的描述。其中下面兩個(gè)是比較重要的屬性。 baudrate:串口的通訊速度。一般設(shè)置為 9600。 bytesize:字節(jié)位數(shù)。一般設(shè)置為 8。 dcb 結(jié)構(gòu)可以用 setcomm

52、state 函數(shù)來(lái)設(shè)置,并可以用 getcommstate 來(lái)得 21 到現(xiàn)有串口的屬性。 setupcomm:設(shè)置串口輸入、輸出緩沖區(qū)。 overlapped:保存串口異步通訊的信息。具體結(jié)構(gòu)如下: typedeftypedef structstruct _overlapped_overlapped dworddword internal;internal; dworddword internalhigh;internalhigh; dworddword offset;offset; dworddword offsethigh;offsethigh; handlehandle hevent;

53、hevent; overlapped;overlapped; internal,internalhigh 是保留給系統(tǒng)使用的,用戶(hù)不需要設(shè)置。 offset,offsethigh 是讀寫(xiě)串口的偏移量,一般設(shè)置 offsethigh 為 null,可以支持 2gb 數(shù)據(jù)。 hevent 讀寫(xiě)事件,因?yàn)榇谑钱惒酵ㄓ?,操作可能被其他進(jìn)程堵塞,程序 可以通過(guò)檢查該時(shí)間來(lái)得知是否讀寫(xiě)完畢。事件將在讀寫(xiě)完成后,自動(dòng)設(shè)置為 有效。 通過(guò)以上這些函數(shù)和結(jié)構(gòu),我們就可以通過(guò)串口進(jìn)行通訊了,現(xiàn)在我們具 體看下面的實(shí)例: boolbool cserial:open(cserial:open( intint npo

54、rt,nport, intint nbaudnbaud ) ) if(if( m_bopenedm_bopened ) ) return(return( truetrue );); charchar szport15;szport15; dcbdcb dcb;dcb; wsprintf(wsprintf( szport,szport, com%d,com%d, nportnport );); m_hcomdevm_hcomdev = = createfile(createfile( szport,szport, generic_readgeneric_read | | generic_writ

55、e,generic_write, 0,0, null,null, open_existing,open_existing, file_attribute_normalfile_attribute_normal | | file_flag_overlapped,file_flag_overlapped, nullnull );); if(if( m_hcomdevm_hcomdev = nullnull ) ) return(return( falsefalse );); memset(memset( ); memset(memset( ); commtimeoutscommtimeouts c

56、ommtimeouts;commtimeouts; commtimeouts.readintervaltimeoutcommtimeouts.readintervaltimeout = = 0 xffffffff;0 xffffffff; commtimeouts.readtotaltimeoutmultipliercommtimeouts.readtotaltimeoutmultiplier = = 0;0; 22 commtimeouts.readtotaltimeoutconstantcommtimeouts.readtotaltimeoutconstant = = 0;0; commt

57、imeouts.writetotaltimeoutmultipliercommtimeouts.writetotaltimeoutmultiplier = = 0;0; commtimeouts.writetotaltimeoutconstantcommtimeouts.writetotaltimeoutconstant = = 5000;5000; setcommtimeouts(setcommtimeouts( m_hcomdev,m_hcomdev, ); m_overlappedread.heventm_overlappedread.hevent = = createevent(cre

58、ateevent( null,null, true,true, false,false, nullnull );); m_overlappedwrite.heventm_overlappedwrite.hevent = = createevent(createevent( null,null, true,true, false,false, nullnull );); dcb.dcblengthdcb.dcblength = = sizeof(sizeof( dcbdcb );); getcommstate(getcommstate( m_hcomdev,m_hcomdev, ); dcb.b

59、audratedcb.baudrate = = nbaud;nbaud; dcb.bytesizedcb.bytesize = = 8;8; if(if( !setcommstate(!setcommstate( m_hcomdev,m_hcomdev, getlasterror(); if(if( m_overlappedread.heventm_overlappedread.hevent !=!= nullnull ) ) closehandle(closehandle( m_overlappedread.heventm_overlappedread.hevent );); if(if(

60、m_overlappedwrite.heventm_overlappedwrite.hevent !=!= nullnull ) ) closehandle(closehandle( m_overlappedwrite.heventm_overlappedwrite.hevent );); closehandle(closehandle( m_hcomdevm_hcomdev );); returnreturn false;false; m_bopenedm_bopened = = true;true; returnreturn m_bopened;m_bopened; intint cser

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論