串口調(diào)試軟件實驗山東建筑大學應用軟件綜合實驗_第1頁
串口調(diào)試軟件實驗山東建筑大學應用軟件綜合實驗_第2頁
串口調(diào)試軟件實驗山東建筑大學應用軟件綜合實驗_第3頁
串口調(diào)試軟件實驗山東建筑大學應用軟件綜合實驗_第4頁
串口調(diào)試軟件實驗山東建筑大學應用軟件綜合實驗_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘要串口叫做串行接口,也稱串行通信接口,按電氣標準及協(xié)議來分包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422與RS-485標準只對接口的電氣特性做出規(guī)定,不涉及接插件、電纜或協(xié)議。USB是近幾年發(fā)展起來的新型接口標準,主要應用于高速數(shù)據(jù)傳輸領(lǐng)域。串口通訊因具有簡單,組網(wǎng)方便的特點,在設(shè)備通訊中廣泛使用。普通計算機中采用的是RS232通用通訊接口,通過此接口,計算機簡單方便地與外圍設(shè)備進行通訊。在單片機控制領(lǐng)域,設(shè)備與設(shè)備之間的通訊常用串行通訊方式,常采用的硬件通訊網(wǎng)絡(luò)為RS485/RS422/RS232等。在設(shè)備開發(fā)或設(shè)備維護過程中,常常需要對設(shè)備通訊

2、過程進行數(shù)據(jù)檢測,用于判斷通訊是否正常。實現(xiàn)這個調(diào)試過程,需要計算機通訊軟件對通訊過程進行監(jiān)控,數(shù)據(jù)采集,進行數(shù)據(jù)分析。關(guān)鍵詞: 串行通信,串口調(diào)試,SerialPort類1 設(shè)計目的和要求設(shè)計目的現(xiàn)在的產(chǎn)品若要自動化,一定要提供通道與計算機進行通信,而最簡單的方式就是在產(chǎn)品內(nèi)部少上一顆單芯片,利用單芯片上的串行通信功能進行自動化的工作,由于計算機中的串口是必備的通道,且以價格及技術(shù)上來說是最能被廠商所接受的,因此,市面上很多自動化產(chǎn)品也都加上了串行通信的功能,從而擴大產(chǎn)品的使用領(lǐng)域,使實現(xiàn)技術(shù)變得簡單化。與任何一個自動化設(shè)備進行聯(lián)機,最好是先對該系統(tǒng)的通信功能先進行測試。通過串行通信的控制,

3、通??梢詫a(chǎn)品內(nèi)部開放的功能做一個先期的測試工作,確定沒有問題了,然后再對系統(tǒng)進行程序的實現(xiàn),這是一個比較保險的做法,免得在系統(tǒng)設(shè)計到設(shè)計到一半的時候發(fā)現(xiàn)最重要的通信功能有問題,浪費了大量的寶貴時間。設(shè)計要求本題目要求完成一個RS232串口的調(diào)試軟件。1可實時顯示收到的字節(jié),可以文本和16進制兩種方式現(xiàn)實。2可以發(fā)送任意數(shù)值的數(shù)據(jù)。3可設(shè)置串口的工作方式。4其他功能。2 設(shè)計內(nèi)容2.1串口容器設(shè)計串口容器組件主要提供了一個統(tǒng)一管理已經(jīng)創(chuàng)建的串口的空間,并提供了多線程緩沖處理機制,能夠應對多個串口的高速數(shù)據(jù)收發(fā)工作。包括的主要功能有:(1) 提供了創(chuàng)建、更改和釋放RS232串口的接口函數(shù)(2)

4、對多個串口的數(shù)據(jù)接收并賦值相同的回調(diào)函數(shù)(3) 接收數(shù)據(jù)的多線程緩沖功能,并提供線程數(shù)量設(shè)置接口(4) 數(shù)據(jù)流量偵測功能2.2串口創(chuàng)建管理界面設(shè)計主要功能包括:(1) 計算機可用串口自動偵測(2) 新建串口功能(串口名、波特率、數(shù)據(jù)位、停止位、奇偶校驗)(3) 單獨控制串口停止運行(4) 單獨修改串口配置(5) 刪除串口2.3數(shù)據(jù)發(fā)送接收界面設(shè)計數(shù)據(jù)發(fā)送接收界面分為兩部分內(nèi)容:數(shù)據(jù)接收界面和發(fā)送界面。系統(tǒng)采用大比例的接收現(xiàn)實區(qū)和發(fā)送區(qū),這種設(shè)計方式不僅有效地增加了顯示區(qū)的可視區(qū)域,也符合用戶常規(guī)軟件的操作習慣。包括的主要功能有:(1) 顯示接收時間(2) 顯示接收數(shù)據(jù)的通訊標識(3) 十六進制

5、顯示接收數(shù)據(jù)(4) 可單獨或同時向多個串口發(fā)送數(shù)據(jù)(5) 十六進制發(fā)送數(shù)據(jù)(6) 發(fā)送數(shù)據(jù)自動記錄(7) 自動發(fā)送功能2.4數(shù)據(jù)存儲設(shè)計主要功能有:(1) 數(shù)據(jù)保存緩沖功能(2) 自動建立存儲目錄結(jié)構(gòu)(3) 自動保存接收數(shù)據(jù)(4) 數(shù)據(jù)另存功能2.5串行通信協(xié)議在串行通信過程中,數(shù)據(jù)和聯(lián)絡(luò)信號時使用同一根信號線來傳送的,所以收發(fā)雙方必須考慮解決一下問題:1)雙方約定以何種速率進行數(shù)據(jù)的發(fā)送和接收(波特率);2)約定采用何種數(shù)據(jù)格式(幀格式),如果包含控制信息,那么它的定義是什么;3)接收方如何得知一批數(shù)據(jù)的開始和結(jié)束(幀同步);4)接收方如何從位流中正確地采樣到位數(shù)據(jù)(位同步);5)接收方如何

6、判斷收到數(shù)據(jù)的正確性(數(shù)據(jù)校驗);6)收發(fā)出錯時如何進行處理。顯然,收發(fā)雙方必須遵守一些共同的通信協(xié)議5(或稱為通信控制規(guī)程),才能解決以上問題。在傳輸數(shù)字信號時接收端必須有與數(shù)據(jù)位脈沖具有相同頻率的時鐘脈沖來逐位將數(shù)據(jù)讀入寄存器,這種在接收端使數(shù)據(jù)位與時鐘脈沖在頻率和相位上保持一致的機制稱為同步。根據(jù)在接收端獲取同步信號的方法不同,同步方式可分為位同步方式和字符同步方式,也稱為同步傳輸方式和異步傳輸方式。2.5.1同步通信同步通信即位同步方式,同步通信即位同步方式,是利用編碼機制把時鐘信息和數(shù)據(jù)放在一起發(fā)送給接收端,以保證每一位的正確性,但這種同步方式?jīng)]有辦法來區(qū)分字符之間的界限,從一個二進

7、制位串中提取正確的字符信息。為此,在位同步的基礎(chǔ)上,需要發(fā)送方在一組數(shù)據(jù)前附加一個或兩個稱為同步字符的特殊約定代碼,去通知接收器串行數(shù)據(jù)第一位到達的時間。為了確保正確提取字符,字符之間不能有類似于異步傳輸那樣的間隙,必須以連續(xù)的形式發(fā)送,每個時鐘周期發(fā)送一位數(shù)據(jù),數(shù)據(jù)信息后是兩個錯誤校驗字符。接收方在收到同步字符后,立即開始按事先約定的長度(5、6、7或者8位)從位串中逐個提出字符。同步通信采用的同步手段和同步字符的個數(shù)不同,字符的數(shù)據(jù)格式叫做單同步數(shù)據(jù)格式,數(shù)據(jù)格式。存在著不同的格式結(jié)構(gòu),具有一個同步有兩個同步字符的數(shù)據(jù)格式叫做雙同步異步通信中按字符成幀(從起始位到停止位)進行傳送,而同步傳

8、送則采用數(shù)據(jù)塊或幀進行傳送6。圖中所示為某同步協(xié)議的幀格式,在幀開頭有同步字符SYNC,同步字符的格式和個數(shù)根據(jù)需要確定,其作用是通知接收器“消息到達”,并且接收器和發(fā)送器需要開始同步。同步字符后的第一個數(shù)據(jù)是消息頭或稱為報頭,它包含有助于接收器如何處理后續(xù)數(shù)據(jù)的控制信息,如一幀內(nèi)的字符計數(shù)等,再以后是以字符或者比特為單位的消息編碼,也稱為報文,最后是校驗字符,常用CRC循環(huán)冗余校驗碼,校驗字的作用是檢測整個數(shù)據(jù)塊在傳送過程中是否有差錯。同步通信的數(shù)據(jù)傳輸效率較異步通信高,傳輸速率也較高但是同步傳送不僅要保持每個數(shù)據(jù)字符內(nèi)各位以預定的固定時鐘頻率傳送,而且還要求整個數(shù)據(jù)塊內(nèi)的位都按照預定的固定

9、時鐘頻率傳送,此外數(shù)據(jù)塊之間不允許有間隙,若有間隙必須用同步字符填充。收發(fā)雙方時鐘嚴格同步是同步通信的基本要求,在技術(shù)上,這種要求必須用硬件從接收到的數(shù)據(jù)中分離出同步時鐘來實現(xiàn),所以硬件電路復雜是同步通信的缺點。2.5.2異步通信串行異步通信即異步傳輸方式是以字符為單位進行傳輸,其通信協(xié)議是起止式異步通信協(xié)議。一個字符正式發(fā)送之前,先發(fā)送一個起始位,寬度為1位的低電平;結(jié)束時發(fā)送一個寬度為l位,15位或者2位的高電平作為停止位;數(shù)據(jù)位為5-8位,可在數(shù)據(jù)位內(nèi)設(shè)1位奇偶校驗位,字符之間可以有空閑位,它們都是高電平。異步傳輸過程中的起始位和停止位起著重要的作用:起始位標志著每一個字符的開始,停止位

10、標志著每一個字符的結(jié)束。由于串行通信采用起始位為同步信號,接收端總是在每個字符的頭部即起始位處進行一次重新定位,保證每次采樣對應一個數(shù)據(jù)位。所以異步傳送的發(fā)送器和接收器不必用同一個時鐘,而是各有自己的局部時鐘,只要同一標稱頻率即可。異步傳送以字符為單位,當接收方收到起始位之后,只要在一個字符的傳輸時問內(nèi)能和發(fā)送器保持同步,就能完成正確的接收。如果接收器和發(fā)送器的時鐘略有誤差,兩個字符之間的停止間隔將為這種誤差提供一種緩沖,因此,異步通信方式允許有一定的頻率漂移,一般發(fā)送器和接收器雙方各自用晶振產(chǎn)生時鐘即可滿足要求,收發(fā)雙方系統(tǒng)時鐘的誤差容限為5對時鐘同步的要求不太嚴格,這是異步通信的突出優(yōu)點,

11、但是異步通信要求每個字符傳送都有起始位和停止位,因此控制信息至少占總信息的20,這部分的額外開銷使得傳送效率相對比較低。2.6串行通信的基本參數(shù)串口的通信方式是將字節(jié)拆分成一個接著一個的位后再進行傳輸。接到此電位信號的一方將此一個一個的位組合成原來的字節(jié),如此形成一個字節(jié)的完整傳輸。在傳輸進行過程中,雙方明確傳輸信息的具體方式,否則雙方就會沒有一套共同的譯碼方式,從而無法了解對方所傳輸過來的信息的意義。因此雙方為了進行通信規(guī)則,這個共同的規(guī)則就是串口的初始化9。串口的初始化必須對以下幾項參數(shù)進行設(shè)置。2.6.1 波特率串行通信的傳輸受到通信雙方設(shè)備性能及通信線路的特性所控制,收發(fā)雙方必須按照同

12、樣的速率進行串行通信,即收發(fā)雙方采用同樣的波特率。我們通常將傳輸速度稱為波特率,指的是串行通信中每秒所傳輸?shù)臄?shù)據(jù)位數(shù)。單位是“波特每秒”(bps)。國際上規(guī)定了標準波特率系列值,最常用的標準波特率有110,300,600。1200,2400,4800,9600和19200。在進行串行通信時,根據(jù)傳送的波特率來確定發(fā)送時鐘和接收時鐘的頻率。異步傳送過程中,每發(fā)送一位數(shù)據(jù)的時間長度由發(fā)送時鐘決定,每接收一位數(shù)據(jù)的時間長度由接收時鐘測定,它們和波特率有如下關(guān)系:時鐘頻率=n*波特率;式中n為波特率系數(shù)或者波特率因子,它的取值可以為l,16,32或64。2.6.2數(shù)據(jù)的傳輸單位一般串口所傳輸?shù)臄?shù)據(jù)時字

13、符型,若用來傳輸文件,則會使用二進制的數(shù)據(jù)形式。當使用字符型時,工業(yè)界使用到的ASCII字符及JIS字符;ASCII碼使用了8位形成一個字符,而JIS碼則以7位形成一個字符。歐美的設(shè)備多使用8位的字節(jié),而日本的設(shè)備多使用7位為一個字節(jié)。因此只要7位就可以將ASCII碼的0127碼表達出來(27=128,共有128種組合方式),所有的可見字符也在此范圍內(nèi),所以只要7個數(shù)據(jù)位就夠了。不同的情形下(根據(jù)所使用的協(xié)議),會使用到不同的傳輸單位。使用多少位合成一個字節(jié)必須先行確定。2.6.3 起始位與停止位由于異步串行傳輸中沒有使用同步時鐘作為基準,因此接收端不知道發(fā)送端何時將進行數(shù)據(jù)的傳輸。而當發(fā)送端

14、準備要開始傳送數(shù)據(jù)時,發(fā)送端會在所送出的字符前后分別加上高電位的起始位(邏輯0)及低電位的停止位(邏輯1),它們稱為起始位和停止位。當發(fā)送端要開始傳送數(shù)據(jù)時,便將傳輸線上的電壓由低電位提升至高電位,而當傳送結(jié)束后,再將電壓降至低電位。接收端會因為起始位的觸發(fā)(因電壓由低電位升至高電位)而開始接收數(shù)據(jù),并因停止位的通知(因電壓維持在低電位)而確切知道數(shù)據(jù)的字符信號已經(jīng)結(jié)束。加入了起始位及停止位也比較容易達到多字符的接收能力,起始位固定為一位,而停止位則有1、1.5、2位等多種選擇,由通信雙方共同遵守的通信協(xié)議來控制和識別。2.6.4 校驗位為了防止傳輸過程中的干擾造成數(shù)據(jù)錯誤,數(shù)據(jù)幀中可以加入奇

15、偶校驗位作為檢查機制,校驗位是用來檢查所傳輸數(shù)據(jù)正確性的一種核對碼,其中又分為奇校驗(Odd Parity)和偶校驗(Even Parity)兩種,分別是檢查字符碼中1的數(shù)目是奇數(shù)或是偶數(shù)以偶校驗為例,A的ASCII碼是41H,即01000001x,其中1的數(shù)目是2,因此校驗位是0,使1的數(shù)目保持偶數(shù)。同樣的,采用奇校驗時,A的校驗位是1,使l的數(shù)目保持為奇數(shù)。將傳送字符按照上述說明組合起來之后,就形成了傳輸時每個字符的數(shù)據(jù)格式,串行通信字符的數(shù)據(jù)格式如下所示:起始位+傳送字符+校驗位+停止位。3串口調(diào)試軟件的實現(xiàn)3.1串口調(diào)試軟件的編程實現(xiàn)過程 在本節(jié)中將介紹在Visual Studio 2

16、005環(huán)境下,使用C#語言編程實現(xiàn)串口調(diào)試軟件的過程,在前文中我們介紹過了使用SerialPort類實現(xiàn)串口通信的一般流程是設(shè)置通訊端口號及波特率、數(shù)據(jù)位、停止位和校驗位,再打開端口連接,發(fā)送數(shù)據(jù),接收數(shù)據(jù),最后關(guān)閉端口連接這樣幾個步驟。數(shù)據(jù)接收的設(shè)計方法在這里比較重要,采用輪詢的方法比較浪費時間,在Visual Basic中的延時方法中一般會調(diào)用API并用DOEvents方法來處理,但程序不易控制,所以采用DataReceived事件觸發(fā)的方法,合理的設(shè)置ReceivedBytesThreshold的值,若接收的是定長的數(shù)據(jù),則將Received Bytes Threshold設(shè)為接收數(shù)據(jù)的

17、長度,若接收數(shù)據(jù)的結(jié)尾是固定的字符或字符串則可采用ReadTo的方法或在DataReceived事件中判斷接收的字符是否滿足條件,符合條件的就進行接收。SerialPort類讀取數(shù)據(jù)的許多方法是同步阻塞調(diào)用,盡量避免在主線程中調(diào)用,可以使用異步處理或線程間處理調(diào)用這些讀取數(shù)據(jù)的方法。由于Data Received事件在輔線程被引發(fā),當收到完整的一條數(shù)據(jù),返回主線程處理或在窗體上顯示時,要注意跨線程的處理,C#可采用控件異步委托的方法Control.BeginInvoke及同步委托的方法Invoke。圖5.1示出了串口調(diào)試軟件編程實現(xiàn)的流程圖。程序開始初始化串口輸入設(shè)定數(shù)據(jù)有數(shù)據(jù)返回嗎向串口發(fā)送

18、數(shù)據(jù)觸發(fā)Data Received事件,處理數(shù)據(jù)返回數(shù)據(jù)正確?程序結(jié)束是是否否顯示錯誤信息提示打開串口關(guān)閉串口圖5.1 串口調(diào)試軟件算法流程圖附錄給出了串口調(diào)試軟件的C#編程實現(xiàn)的源代碼,這里就不再贅述。3.2串口調(diào)試軟件界面的設(shè)計串口調(diào)試軟件界面是在Visual Studio 2005(以下簡稱VS2005)編程環(huán)境下設(shè)計的。VS2005是微軟公司開發(fā)的面向?qū)ο?、高度封裝的跨平臺C#圖形用戶界面開發(fā)平臺,它能提供一個開發(fā)商業(yè)級別,多平臺應用的軟件環(huán)境。首先新建一個項目,然后生成一個Form面板,調(diào)整到適當?shù)拇笮。僭谄渖戏胖肔abel控件、Button控件、TextBox控件、ComboBo

19、x控件、RadioButton控件、RichTextBox控件、CheckBox控件等。Label控件實現(xiàn)對TextBox控件和ComboBox控件的注釋說明。Button控件通過鼠標點擊發(fā)出命令,計算機執(zhí)行相應的動作;ComboBox控件通過鼠標點擊彈出選擇的項目列表,用戶選擇當前需要的選項,在這里是主要實現(xiàn)串口號、波特率、數(shù)據(jù)位、停止位、奇偶校驗位的選擇;TextBox控件和RichTextBox控件實現(xiàn)讀寫字符串,也就是輸入用戶需要發(fā)送的信息以及接收對方發(fā)送的信息。界面編寫完成后,點擊VS2005工具欄中的【調(diào)試】,然后在下拉菜單中選擇【啟動調(diào)試】便進入調(diào)試過程,調(diào)試通過后便會在項目中生

20、成.exe應用程序文件。3.3 串口調(diào)試軟件的測試當串口調(diào)試軟件設(shè)計好之后,接下來就進入了軟件測試階段,主要是對該軟件的功能進行測試,看是否達到了預期的要求。單機測試方式如果單機僅僅擁有一個RS232串口,可以將RS232串口的第2引腳(RD)與第3引腳(TD)短路,那么由第3引腳的輸出信號就會被發(fā)送到第2引腳而送到同一串行端口的輸入緩沖區(qū),即可將數(shù)據(jù)讀入,進入測試過程。如果單機擁有COM1和COM2兩個RS232串口,那么就以全握手連接方式將兩個串口連接,進入測試過程。如果單機上一個串口也沒有,或者串口被其他設(shè)備所用,由于串口具有獨占性,如果被其他設(shè)備占用,那么就不能由我們編寫的程序來控制。

21、這時可以使用第三方軟件提供的虛擬串口,來解決這個問題。近距離兩臺設(shè)備測試方式如果要在兩臺PC計算機之間,一個嵌入式系統(tǒng)主控機和一臺PC計算機之間,或者上位機和下位機之間進行串口通信,那么就選擇全握手方式將兩個RS232串口連接,進入測試過程。遠距離兩臺通信測試方式RS232標準規(guī)定,若不使用Modem,在碼元畸變小于4%的情況下,DTE和DCE通信端之間最大傳輸距離為15m,如距離較遠,須附加調(diào)制解調(diào)器(Medom),其連接方式如圖5.2所示。圖5.2 遠距離串口通信連接方式當調(diào)試時,用戶根據(jù)實際情況選擇相應的串行端口,設(shè)定所需的波特率(在此選用9600),再設(shè)置奇偶校驗位、數(shù)據(jù)位、停止位;點

22、擊“打開串口”按鈕便可以進行數(shù)據(jù)的發(fā)送和接收,當在發(fā)送文本框中輸入數(shù)據(jù),點擊“發(fā)送”按鈕便可以將數(shù)據(jù)發(fā)送到接收方;或者對方發(fā)送數(shù)據(jù),可以在接收文本框中看到接收到的數(shù)據(jù)。可以通過“清空接收區(qū)”按鈕清除接收的數(shù)據(jù)。此外,還可以在“自動發(fā)送周期”文本框中輸入自動發(fā)送的周期(單位是毫秒),然后勾選“自動發(fā)送”按鈕,則該軟件就可以按照事先設(shè)定好的發(fā)送周期,自動向接收方發(fā)送數(shù)據(jù)。實踐證明,本軟件具有以下特點:1操作簡單,界面友好,使用者完成參數(shù)設(shè)置后,即可進行串口調(diào)試。2功能全面。軟件可以讀串口數(shù)據(jù),可以按照周期自動發(fā)送數(shù)據(jù)或者只發(fā)送一次數(shù)據(jù)。此外軟件還有完善的顯示方式,包括二進制,十六進制等,以及在接收

23、區(qū)內(nèi)換行顯示,和一鍵清空接收區(qū)等功能。3可擴展性強。在VS2005中可以對本軟件進行功能上擴展,例如添加新的功能按鈕以實現(xiàn)新的功能總結(jié)與致謝本文以串行通信技術(shù)和串口工作原理為基礎(chǔ),進行了串行數(shù)據(jù)傳輸協(xié)議設(shè)計的研究,在此基礎(chǔ)上,結(jié)合了C#SerialPort類使用方法和Visual Studio 20005開發(fā)工具,設(shè)計串口調(diào)試軟件,并研究了通用串口通信程序的設(shè)計方法,以期解決工程實踐中存在的串行通信協(xié)議不可見和相對阻戴所帶來的問題。文中詳細介闡述了在Visual Studio 2005編程環(huán)境下串口調(diào)試軟件的具體實現(xiàn)方法。通過這次綜合實驗,我發(fā)現(xiàn)自己學到很多有用的東西。從整個程序流程圖到C#編

24、程再到Windows應用程序界面設(shè)計,以及上下位機的通訊,所有這些讓我真正的了解到了一個產(chǎn)品設(shè)計的實現(xiàn)過程。為了使串口調(diào)試軟件更加人性化,我還在原先的基礎(chǔ)上添加了清空接收區(qū)數(shù)據(jù)和換行顯示的功能,使得整體的方案得到了新的提高。雖然整個過程相當艱辛,但是總的來說,看到實物的效果時,還是很開心的,慶幸自己曾經(jīng)的付出,是種別樣的幸福!當然,實驗還有很多需要改進與提高的地方,比如在發(fā)送字符串數(shù)據(jù)的基礎(chǔ)上增加發(fā)送中文漢字的功能,這樣串口調(diào)試軟件就具備了一個聊天的程序的功能,此外還可擴展它的數(shù)據(jù)接收功能,將數(shù)據(jù)保存為.xls或.txt文件,這樣可以方便用戶對數(shù)據(jù)的查看、分析和處理。附錄串口調(diào)試軟件的C#源代

25、碼Private Sub Form_Load() MSComm1.Settings = 9600,n,8,1 波特率9600bit/s,無校驗,8位數(shù)據(jù),1位停止位 MSComm1.CommPort = 4 設(shè)定串口,1為com1,這里根據(jù)自己對應的com序號 MSComm1.InBufferSize = 8 設(shè)定返回接收緩沖區(qū)的大小,以字符為單位 MSComm1.OutBufferSize = 2 If MSComm1.PortOpen = True Then MSComm1.PortOpen = False 關(guān)串口 MSComm1.RThreshold = 4 設(shè)置并返回產(chǎn)生oncomm

26、事件的字符數(shù),以字符為單位 MSComm1.SThreshold = 1 為1,傳輸緩沖區(qū)(發(fā)送)的每一個字符都會使MSCOMM控件產(chǎn)生OnComm事件 MSComm1.InputLen = 0 設(shè)置從接收緩沖區(qū)讀取的字數(shù),為0讀取整個緩沖區(qū) MSComm1.InputMode = comInputModeText 以文本方度接收 If MSComm1.PortOpen = False Then MSComm1.PortOpen = True MSComm1.InBufferCount = 0 Me.Caption = 溫度Text1.Text = 00.0End SubPrivate Sub

27、 MSComm1_OnComm() Dim rec As String Select Case MSComm1.CommEvent Case comEvReceive rec = MSComm1.Input Text1.Text = rec MSComm1.InBufferCount = 0 清空接收緩存區(qū) End SelectEnd SubOption Explicit Dim a As Integer Dim BytReceived() As Byte Dim strData As String Dim lenInput As Integer Dim bytSendByte() As By

28、te 發(fā)送二進制數(shù)據(jù) Dim strSendText As String 發(fā)送文本數(shù)據(jù) Dim blnAutoSendFlag As Boolean Dim openFlag As BooleanPrivate Sub cmdOpen_Click() 打開關(guān)閉端口 If openFlag Then cmdOpen.Caption = 打開串口 MSComm1.PortOpen = False 打開端口 Shape1.FillColor = vbRed Label1 = COM & a & 關(guān)閉 Else OpenPortNum cmdOpen.Caption = 關(guān)閉串口 Shape1.Fil

29、lColor = vbGreen Label1 = COM & a & 打開 End If openFlag = Not openFlagEnd SubPrivate Sub cmdSendASc_Click() 文本發(fā)送 Dim sj_Txt As String sj_Txt = TxtSend If MSComm1.PortOpen = True Then MSComm1.Output = sj_Txt End IfEnd SubPrivate Sub cmdSendHex_Click() 16進制發(fā)送 Dim sj() As Byte Dim sj_Txt As String Dim i

30、 As Integer sj_Txt = TxtSend If Len(TxtSend) Mod 2 = 0 And Len(TxtSend) 0 Then 檢驗16進制字符串長 ReDim sj(Len(sj_Txt) / 2 - 1) For i = 0 To Len(sj_Txt) - 1 Step 2 sj(i / 2) = Val(&H & Mid(sj_Txt, i + 1, 2) Next If MSComm1.PortOpen = True Then MSComm1.Output = sj Else MSComm1.PortOpen = True Shape1.FillColor = vbGreen MSComm1.Output = sj End If Else MsgBox (格式不對!) End IfEnd Sub字符串表示的十六進制數(shù)據(jù)轉(zhuǎn)化為相應的字節(jié)串,返回轉(zhuǎn)化后的字節(jié)數(shù)Privat

溫馨提示

  • 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

提交評論