第10章串行口通信編程_第1頁
第10章串行口通信編程_第2頁
第10章串行口通信編程_第3頁
第10章串行口通信編程_第4頁
第10章串行口通信編程_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第1010章章 串行口通信編程串行口通信編程目前主流的目前主流的PC機尤其是筆記本電腦,串口已經(jīng)很少見機尤其是筆記本電腦,串口已經(jīng)很少見到了,但是串口卻是嵌入式開發(fā)中最常用的硬件接口。串口到了,但是串口卻是嵌入式開發(fā)中最常用的硬件接口。串口有驅(qū)動簡單的特點,幾乎所有的嵌入式開發(fā)板和設(shè)備都提供有驅(qū)動簡單的特點,幾乎所有的嵌入式開發(fā)板和設(shè)備都提供了串口。在嵌入式開發(fā)中,串口通常用來打印設(shè)備狀態(tài)信息了串口。在嵌入式開發(fā)中,串口通常用來打印設(shè)備狀態(tài)信息和命令行,甚至于有的時候只能通過串口得到設(shè)備狀態(tài)(如和命令行,甚至于有的時候只能通過串口得到設(shè)備狀態(tài)(如設(shè)備剛啟動的時候)。本章介紹串口基本的軟硬件知

2、識,以設(shè)備剛啟動的時候)。本章介紹串口基本的軟硬件知識,以及如何在應(yīng)用程序中利用串口收發(fā)數(shù)據(jù),主要內(nèi)容如下:及如何在應(yīng)用程序中利用串口收發(fā)數(shù)據(jù),主要內(nèi)容如下:串口硬件介紹串口硬件介紹常見的串口協(xié)議常見的串口協(xié)議串口應(yīng)用程序入門串口應(yīng)用程序入門利用串口通過手機發(fā)送短信利用串口通過手機發(fā)送短信10.1 10.1 串口介紹串口介紹在計算機領(lǐng)域,串口可以說是歷史悠久而且應(yīng)用廣泛在計算機領(lǐng)域,串口可以說是歷史悠久而且應(yīng)用廣泛。從最早的。從最早的PC機到目前工業(yè)控制領(lǐng)域廣泛應(yīng)用的工業(yè)計算機到目前工業(yè)控制領(lǐng)域廣泛應(yīng)用的工業(yè)計算機、以及嵌入式系統(tǒng)等,都提供了串口。串口有功能簡單、機、以及嵌入式系統(tǒng)等,都提供了

3、串口。串口有功能簡單、成本低、便于連接等優(yōu)點,是許多嵌入式系統(tǒng)必備接口之一成本低、便于連接等優(yōu)點,是許多嵌入式系統(tǒng)必備接口之一。10.1.1 10.1.1 什么是串口什么是串口串口是串行接口(串口是串行接口(Serial Port)的簡稱,是計算機一種)的簡稱,是計算機一種常用的接口,由于連線少、通訊控制簡單而得到廣泛的使用常用的接口,由于連線少、通訊控制簡單而得到廣泛的使用。串口有幾種標準,常見的一種稱作。串口有幾種標準,常見的一種稱作RS232接口的標準是在接口的標準是在1970年由美國電子工業(yè)協(xié)會(年由美國電子工業(yè)協(xié)會(EIA)和幾家計算機廠商共同)和幾家計算機廠商共同制定的。制定的。R

4、S232標準應(yīng)用廣泛,其全稱是標準應(yīng)用廣泛,其全稱是“數(shù)據(jù)終端設(shè)備(數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通訊設(shè)備()和數(shù)據(jù)通訊設(shè)備(DCE)串行二進制數(shù)據(jù)交換接口)串行二進制數(shù)據(jù)交換接口”,該標準定義了串口的電氣接口特性和各種信號電平等。,該標準定義了串口的電氣接口特性和各種信號電平等。標準串口協(xié)議支持的最高數(shù)據(jù)傳輸率是標準串口協(xié)議支持的最高數(shù)據(jù)傳輸率是115Kbps。一些。一些改進的串口控制器支持更高甚至改進的串口控制器支持更高甚至460Kbps的數(shù)據(jù)傳輸率,如的數(shù)據(jù)傳輸率,如增強型串口增強型串口ESP(Enhanced Serial Port)和超級增強型串口)和超級增強型串口Super ESP。

5、RS232串口使用串口使用D型數(shù)據(jù)接口,最初有型數(shù)據(jù)接口,最初有9針和針和25針兩種連針兩種連接方式。隨著計算機技術(shù)的不斷進步,接方式。隨著計算機技術(shù)的不斷進步,25針的串口連接方式針的串口連接方式已經(jīng)淘汰,目前所有的已經(jīng)淘汰,目前所有的RS232串口都使用串口都使用9針連接方式。針連接方式。10.1.2 10.1.2 串口工作原理串口工作原理串口通過直接連接在兩臺設(shè)備間的線發(fā)送和接收數(shù)據(jù)串口通過直接連接在兩臺設(shè)備間的線發(fā)送和接收數(shù)據(jù),兩臺設(shè)備通信最少需要三根線(發(fā)送數(shù)據(jù)、接收數(shù)據(jù)和接,兩臺設(shè)備通信最少需要三根線(發(fā)送數(shù)據(jù)、接收數(shù)據(jù)和接地)才可以通信。以最常見的地)才可以通信。以最常見的RS2

6、32串口為例,通信距離較串口為例,通信距離較近時(近時(12m),可以用電纜線直接連接標準),可以用電纜線直接連接標準RS232端口。端口。如果傳輸距離遠,可以通過調(diào)制解調(diào)器(如果傳輸距離遠,可以通過調(diào)制解調(diào)器(MODEM)傳輸。)傳輸。因為串口設(shè)備工作頻率低且容易受到干擾,遠距離傳輸會造因為串口設(shè)備工作頻率低且容易受到干擾,遠距離傳輸會造成數(shù)據(jù)丟失。成數(shù)據(jù)丟失。10.1.2 10.1.2 串口工作原理串口工作原理針號針號功能說明功能說明縮寫縮寫1數(shù)據(jù)載波檢測DCD2接收數(shù)據(jù)RXD3發(fā)送數(shù)據(jù)TXD4數(shù)據(jù)終端準備DTR5信號地GND6數(shù)據(jù)設(shè)備準備好DSR7請求發(fā)送RTS8清除發(fā)送CTS9振鈴指示

7、BELL10.1.3 10.1.3 串口流量控制串口流量控制常見的串口工具軟件都提供了常見的串口工具軟件都提供了RTS/CTS與與XON/XOFF選項。這兩個選項對應(yīng)選項。這兩個選項對應(yīng)RS232串口的兩種流量控制方式。串串口的兩種流量控制方式。串口流量控制主要應(yīng)用于調(diào)制解調(diào)器的數(shù)據(jù)通訊,對于普通口流量控制主要應(yīng)用于調(diào)制解調(diào)器的數(shù)據(jù)通訊,對于普通RS232串口編程,了解一點流量控制方面的知識是有好處的串口編程,了解一點流量控制方面的知識是有好處的。1.什么是串口流量控制什么是串口流量控制2.硬件流量控制硬件流量控制3.軟件流量控制軟件流量控制10.2 10.2 開發(fā)串口應(yīng)用程序開發(fā)串口應(yīng)用程序

8、Linux操作系統(tǒng)對串行口提供了很好的支持。操作系統(tǒng)對串行口提供了很好的支持。Linux系系統(tǒng)中串口設(shè)備被當做一個字符設(shè)備(第統(tǒng)中串口設(shè)備被當做一個字符設(shè)備(第22章詳細講解)處理章詳細講解)處理。PC機安裝機安裝Linux系統(tǒng)后在系統(tǒng)后在/dev目錄下有若干個目錄下有若干個ttySx(x代代表從表從0開始的正整數(shù))設(shè)備文件。開始的正整數(shù))設(shè)備文件。ttyS0對應(yīng)第一個串口,也對應(yīng)第一個串口,也就是就是Windows系統(tǒng)下的串口設(shè)備系統(tǒng)下的串口設(shè)備COM1,以此類推。,以此類推。10.2.1 10.2.1 操作串口需要用到的頭文件操作串口需要用到的頭文件在在Linux系統(tǒng)操作串口需要用到以下頭

9、文件:系統(tǒng)操作串口需要用到以下頭文件:#include #include #include #include #include #include #include #include 10.2.2 10.2.2 串口操作方法串口操作方法操作串口的方法與文件類似,可以使用與文件操作相操作串口的方法與文件類似,可以使用與文件操作相同的方法打開和關(guān)閉串口、讀寫以及使用同的方法打開和關(guān)閉串口、讀寫以及使用select()函數(shù)監(jiān)聽串函數(shù)監(jiān)聽串口。不同的是,串口是個字符設(shè)備,不能使用口。不同的是,串口是個字符設(shè)備,不能使用fseek()之類的之類的文件定位函數(shù)。此外,串口是個硬件設(shè)備,還可以設(shè)置串口文件定位

10、函數(shù)。此外,串口是個硬件設(shè)備,還可以設(shè)置串口設(shè)備的屬性。設(shè)備的屬性。10.2.3 10.2.3 串口屬性設(shè)置串口屬性設(shè)置10.1節(jié)講解串口的基本知識,提到串口的基本屬性包括節(jié)講解串口的基本知識,提到串口的基本屬性包括波特率、數(shù)據(jù)位、停止位和奇偶校驗等參數(shù)。波特率、數(shù)據(jù)位、停止位和奇偶校驗等參數(shù)。Linux系統(tǒng)通系統(tǒng)通常使用常使用termios結(jié)構(gòu)存儲串口參數(shù),該結(jié)構(gòu)在結(jié)構(gòu)存儲串口參數(shù),該結(jié)構(gòu)在termios.h頭文頭文件定義如下:件定義如下:struct termios unsigned short c_iflag;unsigned short c_oflag;unsigned short c

11、_cflag;unsigned short c_lflag;unsigned char c_line;unsigned char c_ccNCC;10.2.4 10.2.4 與與WindowsWindows串口終端通信串口終端通信本節(jié)給出一個和本節(jié)給出一個和Windows串口終端通信的例子。兩臺串口終端通信的例子。兩臺PC通過串口相連,其中一臺通過串口相連,其中一臺PC運行運行Windows系統(tǒng),通過系統(tǒng),通過XShell軟件(軟件(5.5.3節(jié)介紹)打開節(jié)介紹)打開COM1;另一臺;另一臺PC運行運行Linux系統(tǒng)。系統(tǒng)。10.3 10.3 串口應(yīng)用實例串口應(yīng)用實例- -手機短信發(fā)送手機短信

12、發(fā)送手機是目前使用最廣泛的通信設(shè)備之一,許多手機都手機是目前使用最廣泛的通信設(shè)備之一,許多手機都提供了與提供了與PC互聯(lián)的功能,其中最重要的一個接口就是串口互聯(lián)的功能,其中最重要的一個接口就是串口(一些提供(一些提供USB接口的手機指令收發(fā)是把接口的手機指令收發(fā)是把USB設(shè)備虛擬一個設(shè)備虛擬一個串口設(shè)備進行通信的)。在串口設(shè)備進行通信的)。在GSM(全球數(shù)字移動電話網(wǎng)絡(luò)(全球數(shù)字移動電話網(wǎng)絡(luò))協(xié)議中規(guī)定了一組)協(xié)議中規(guī)定了一組AT指令用于手機與其他設(shè)備通信,其指令用于手機與其他設(shè)備通信,其中提供了發(fā)送短信的方法。本節(jié)講解如何利用手機發(fā)送短信中提供了發(fā)送短信的方法。本節(jié)講解如何利用手機發(fā)送短信并

13、且給出了實例。并且給出了實例。10.3.1 PC10.3.1 PC與手機連接發(fā)送短信的物理結(jié)構(gòu)與手機連接發(fā)送短信的物理結(jié)構(gòu)在進行本章的試驗之前需要建立一個手機和在進行本章的試驗之前需要建立一個手機和PC機之間機之間的連接。的連接。10.3.2 AT10.3.2 AT指令介紹指令介紹AT指令集是指令集是GSM網(wǎng)絡(luò)中網(wǎng)絡(luò)設(shè)備之間發(fā)送控制信息的網(wǎng)絡(luò)中網(wǎng)絡(luò)設(shè)備之間發(fā)送控制信息的標準指令集。標準指令集。GSM網(wǎng)絡(luò)終端設(shè)備(網(wǎng)絡(luò)終端設(shè)備(TE)或者數(shù)據(jù)終端設(shè)備)或者數(shù)據(jù)終端設(shè)備(DTE)可以向終端適配器()可以向終端適配器(TA)發(fā)送)發(fā)送AT指令。使用指令。使用AT指指令,用戶可以控制令,用戶可以控制D

14、TE發(fā)送短信息、呼叫電話、讀寫電話本發(fā)送短信息、呼叫電話、讀寫電話本、發(fā)送傳真等。、發(fā)送傳真等。AT指令由手機制造商諾基亞、愛立信、摩托羅拉等共指令由手機制造商諾基亞、愛立信、摩托羅拉等共同研制,其中包括了短消息(同研制,其中包括了短消息(SMS)控制功能。對)控制功能。對SMS的控的控制有制有Block模式、文本模式和協(xié)議數(shù)據(jù)(模式、文本模式和協(xié)議數(shù)據(jù)(PDU)模式三種。)模式三種。目前主要使用目前主要使用PDU模式,其它兩種模式逐步被淘汰。模式,其它兩種模式逐步被淘汰。10.3.3 GSM AT10.3.3 GSM AT指令集指令集GSM07.05協(xié)議中定義了一組與協(xié)議中定義了一組與SMS

15、(短消息)有關(guān)的指(短消息)有關(guān)的指令。令。AT指令指令功能功能AT+CMGC向DTE發(fā)送一條短消息AT+CMGD刪除存儲在SIM卡中指定的短消息AT+CMGF發(fā)送短消息模式:0-PDU模式;1-文本模式AT+CMGL打印存儲在SIM卡中的短消息AT+CMGR讀取短消息內(nèi)容AT+CMGS發(fā)送短消息AT+CMGW把準備發(fā)送的短消息存儲在SIM卡AT+CMSS發(fā)送存儲在SIM卡的短消息AT+CNMI顯示接收到的短消息AT+CPMS短消息存儲設(shè)備選擇AT+CSCA設(shè)置短消息中心號碼AT+CSCB使用蜂窩廣播消息AT+CSMP設(shè)置文本模式參數(shù)AT+CSMS選擇短消息服務(wù)方式10.3.4 PDU10.3

16、.4 PDU編碼方式編碼方式通常發(fā)送短信使用通常發(fā)送短信使用PDU模式,在模式,在GSM協(xié)議中對協(xié)議中對PDU模模式發(fā)送短信的數(shù)據(jù)做了規(guī)范。使用式發(fā)送短信的數(shù)據(jù)做了規(guī)范。使用PDU模式發(fā)送短信需要接模式發(fā)送短信需要接收號碼、短消息中心號碼和短消息內(nèi)容三個數(shù)據(jù)。這三個數(shù)收號碼、短消息中心號碼和短消息內(nèi)容三個數(shù)據(jù)。這三個數(shù)據(jù)的定義方法如下:據(jù)的定義方法如下:1接收號碼生成方法2短消息中心號碼生成方法3短消息內(nèi)容生成方法4組合成完整的消息格式10.3.5 10.3.5 建立與手機的連接建立與手機的連接PC與手機通過串口進行連接,早期的手機提供了數(shù)據(jù)與手機通過串口進行連接,早期的手機提供了數(shù)據(jù)線。手機

17、串口數(shù)據(jù)線一端連接到手機上,另一端可以直接連線。手機串口數(shù)據(jù)線一端連接到手機上,另一端可以直接連接到接到PC的串口,這種方式不需要額外的驅(qū)動。最近幾年生的串口,這種方式不需要額外的驅(qū)動。最近幾年生產(chǎn)的手機大多數(shù)都提供了產(chǎn)的手機大多數(shù)都提供了USB接口,通過手機的接口,通過手機的USB驅(qū)動程驅(qū)動程序在手機與序在手機與PC之間建立一個虛擬的串口設(shè)備。通常手機廠之間建立一個虛擬的串口設(shè)備。通常手機廠商提供的是適合商提供的是適合Windows系統(tǒng)的驅(qū)動程序,系統(tǒng)的驅(qū)動程序,Linux系統(tǒng)可以系統(tǒng)可以使用一個名為使用一個名為Gnokii的手機驅(qū)動軟件。本節(jié)以的手機驅(qū)動軟件。本節(jié)以NOKIA6300手機為

18、例,講解在手機為例,講解在Linux下如何對手機編程發(fā)送短消息。下如何對手機編程發(fā)送短消息。提示:提示:NOKIA6300使用使用S40系統(tǒng),提供系統(tǒng),提供USB接口,其他接口,其他使用類似系統(tǒng)的手機也可以采用采用類似的方法驅(qū)動手機。使用類似系統(tǒng)的手機也可以采用采用類似的方法驅(qū)動手機。NOKIA早期的有些手機(比如早期的有些手機(比如NOKIA1110)提供了串口數(shù))提供了串口數(shù)據(jù)線,可以直接操作。據(jù)線,可以直接操作。10.3.6 10.3.6 使用使用ATAT指令發(fā)送短信指令發(fā)送短信10.3.4節(jié)講解如何生成節(jié)講解如何生成PDU模式的數(shù)據(jù),在生成符合模式的數(shù)據(jù),在生成符合PDU模式的數(shù)據(jù)后,可以通過模式的數(shù)據(jù)后,可以通過AT+CMGF指令和指令和AT+CMGS指令發(fā)送一條短信。以指令發(fā)送一條短信。以10.3.4節(jié)的內(nèi)容為例,使用節(jié)的內(nèi)容為例,使用AT指令發(fā)指令發(fā)送短消息過程如下:送短消息過程如下:AT+CM

溫馨提示

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

評論

0/150

提交評論