基于Windows環(huán)境下數(shù)據(jù)通信處理及存儲程序設計_第1頁
基于Windows環(huán)境下數(shù)據(jù)通信處理及存儲程序設計_第2頁
基于Windows環(huán)境下數(shù)據(jù)通信處理及存儲程序設計_第3頁
基于Windows環(huán)境下數(shù)據(jù)通信處理及存儲程序設計_第4頁
基于Windows環(huán)境下數(shù)據(jù)通信處理及存儲程序設計_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

39/44專業(yè)綜合課程設計任務書學生姓名:專業(yè)班級:指導教師:工作單位:題目:基于PC機Windows環(huán)境下數(shù)據(jù)通信、處理及存儲程序設計與實現(xiàn)。初始條件:提供實驗室機房及安裝Windows系統(tǒng)的PC機;數(shù)據(jù)通信的差不多理論學習。要求完成的要緊任務:(包括課程設計工作量及其技術要求,以及講明書撰寫等具體要求):(1)在PC機Windows環(huán)境下設計出一款集數(shù)據(jù)發(fā)送、接收處理及存儲程序;(2)通信接口為RS-232,USB,網(wǎng)卡任意一款;(3)通信的數(shù)據(jù)流自定,處理操作自定;(4)接收的數(shù)據(jù)以文件的形式存在硬盤上;(5)對結果進行分析;(6)要求閱讀相關參考文獻許多于5篇;(7)依照課程設計有關規(guī)范,按時、獨立完成課程設計講明書。時刻安排:(1)布置課程設計任務,查閱資料,確定方案四天;(2)進行編程設計一周;(3)完成課程設計報告書三天;指導教師簽名:年月日系主任(或責任教師)簽名:年月日

目錄摘要 I1Proteus軟件簡介 12VisualBasic6.0簡介 23串口通信原理 33.1串行通信定義 33.2串行通信的異步通信 43.3波特率 43.4串行接口的差不多特點 53.4.1串行端口工作方式 54單片機與PC機通信 84.1AT89C51單片機上對應端口介紹 84.3單片機通信代碼 94.4仿真電路圖 115VB設計PC機 125.1界面設計 125.2VB設計的窗體 125.3VB代碼 126串口通信結果及其分析 226.1通信結果 226.2結果分析 247實物圖 258心得體會 26參考文獻 27摘要為了實現(xiàn)本次課設的要求,完成基于PC機Windows環(huán)境下數(shù)據(jù)通信、處理及存儲程序設計與實現(xiàn)。我們采納VisualBasic6.0軟件設計和Proteus單片機串口仿真來完成課程設計的要求。我們選取的是通信接口為RS-232,利用單片機與PC機的之間相互通信來實現(xiàn)課設要求,VisualBasic軟件要緊用于設計代表PC機的窗體,實現(xiàn)PC機進行串口通信的差不多功能;Proteus軟件仿確實單片機用于模擬單片機,完成與PC機的通信。本次課設除了要用到VB和Proteus軟件外,還需使用KEIL軟件生成適用于51單片機的.HEX文件,以及用到VirtualSerialPortDriver軟件來對PC機和單片機之間串口進行連接,使用VSPD軟件來設置連接串口的時候我將單片機設為COM3,PC機設為COM1。關鍵字:RS-232,串口通信,Proteus,VisualBasic6.01Proteus軟件簡介Proteus是世界上聞名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設計,真正實現(xiàn)了從概念到產(chǎn)品的完整設計。是目前世界上唯一將電路仿真軟件、PCB設計軟件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。Proteus軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能是:1.原理布圖2.PCB自動或人工布線3.SPICE電路仿真4.互動的電路仿真5.仿真處理器及其外圍電路Proteus擁有豐富的資源,它體現(xiàn)在:1.Proteus可提供的仿真元器件資源:仿真數(shù)字和模擬、交流和直流等數(shù)千種元器件,有30多個元件庫。2.Proteus可提供的仿真儀表資源:示波器、邏輯分析儀、虛擬終端、SPI調試器、I2C調試器、信號發(fā)生器、模式發(fā)生器、交直流電壓表、交直流電流表。理論上同一種儀器能夠在一個電路中隨意的調用。3.除了現(xiàn)實存在的儀器外,Proteus還提供了一個圖形顯示功能,能夠將線路上變化的信號,以圖形的方式實時地顯示出來,其作用與示波器相似,但功能更多。這些虛擬儀器儀表具有理想的參數(shù)指標,例如極高的輸入阻抗、極低的輸出阻抗。這些都盡可能減少了儀器對測量結果的阻礙。4.Proteus可提供的調試手段Proteus提供了比較豐富的測試信號用于電路的測試。這些測試信號包括模擬信號和數(shù)字信號。Proteus不僅可將許多單片機實例功能形象化,也可將許多單片機實例運行過程形象化。前者可在相當程度上得到實物演示實驗的效果,后者則是實物演示實驗難以達到的效果。課程設計、畢業(yè)設計是學生走向就業(yè)的重要實踐環(huán)節(jié)。由于PROTEUS提供了實驗室無法相比的大量的元器件庫,提供了修改電路設計的靈活性、提供了實驗室在數(shù)量、質量上難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)學生實踐精神、制造精神的平臺隨著科技的進展,“計算機仿真技術”已成為許多設計部門重要的前期設計手段。它具有設計靈活,結果、過程的統(tǒng)一的特點??墒乖O計時刻大為縮短、耗資大為減少,也可降低工程制造的風險。相信在單片機開發(fā)應用中PROTEUS也能茯得愈來愈廣泛的應用。2VisualBasic6.0簡介VisualBasic(VB)是由\o"微軟"微軟公司開發(fā)的包含\o"協(xié)助開發(fā)環(huán)境(頁面不存在)"協(xié)助開發(fā)環(huán)境的\o"事件驅動"事件驅動編程語言。它源自于\o"BASIC"BASIC編程語言。VB擁有\(zhòng)o"圖形用戶界面"圖形用戶界面(\o"GUI"GUI)\o"快速應用程序開發(fā)"快速應用程序開發(fā)(\o"RAD"RAD)系統(tǒng),能夠輕易的使用\o"DAO(頁面不存在)"DAO、\o"RDO(頁面不存在)"RDO、\o"ADO"ADO連接\o"數(shù)據(jù)庫"數(shù)據(jù)庫,或者輕松的創(chuàng)建\o"ActiveX"ActiveX控件。程序員能夠輕松的使用VB提供的組件快速創(chuàng)建一個\o"應用程序"應用程序。VB的中心思想確實是要便于\o"程序員"程序員使用,不管是新手或者專家。VB使用了能夠簡單創(chuàng)建應用程序的\o"GUI"GUI系統(tǒng),然而又能夠開發(fā)相當復雜的程序。VB的程序是一種基于\o"窗體(頁面不存在)"窗體的可視化組件安排的聯(lián)合,同時增加代碼來指定組建的屬性和方法。因為默認的屬性和方法差不多有一部分定義在了組件內,因此程序員不用寫多少代碼就能夠完成一個簡單的程序。過去的版本里面VB程序的性能問題一直被放在了桌面上,然而隨著\o"計算機"計算機速度的飛速增加,關于性能的爭論差不多越來越少。窗體控件的增加和改變能夠用\o"拖放"拖放技術實現(xiàn)。一個排列滿控件的工具箱用來顯示可用控件(比如文本框或者按鈕)。每個控件都有自己的\o"屬性(頁面不存在)"屬性和\o"事件"事件。默認的屬性值會在控件創(chuàng)建的時候提供,然而程序員也能夠進行更改。專門多的屬性值能夠在運行時候隨著用戶的動作和修改進行改動,如此就形成了一個動態(tài)的程序。舉個例子來講:窗體的大小改變事件中加入了能夠改變控件位置的代碼,在運行時候每當用戶更改窗口大小,控件也會隨之改變位置。在文本框中的文字改變事件中加入相應的代碼,程序就能夠在文字輸入的時候自動翻譯或者阻止某些字符的輸入。VB的程序能夠包含一個或多個窗體,或者是一個主窗體和多個子窗體,類似于\o"操作系統(tǒng)"操作系統(tǒng)的模樣。有專門少功能的對話框\o"窗口"窗口(比如沒有\(zhòng)o"最大化(頁面不存在)"最大化和\o"最小化(頁面不存在)"最小化按鈕的窗體)能夠用來提供彈出功能。VB的組件既能夠擁有用戶界面,也能夠沒有。如此一來\o"服務器"服務器端程序就能夠處理增加的\o"模塊"模塊。VB使用\o"引用計數(shù)"引用計數(shù)的方法來進行垃圾收集,那個方法中包含有大量的對象,提供差不多的\o"面向對象的程序設計"面向對象支持。因為越來越多組建的出現(xiàn),程序員能夠選用自己需要的擴展庫。和有些語言不一樣,VB對大小寫不敏感,然而能自動轉換關鍵詞到標準的大小寫狀態(tài),以及強制使得符號表入口的實體的變量名稱遵循書寫規(guī)則。默認情況下字符串的比較是對大小寫敏感的,然而能夠關閉那個功能。VB使得大量的外界控件有了自己的生存空間。大量的第三方控件針對VB提供。VB也提供了創(chuàng)建、使用和重用這些控件的方法,然而由于語言問題,從一個應用程序創(chuàng)建另外一個并不簡單。3串口通信原理3.1串行通信定義串口是計算機上一種特不通用設備通信的協(xié)議。大多數(shù)計算機包含兩個基于RS-232的串口。串口同時也是儀器儀表設備通用的通信協(xié)議;專門多GPIB兼容的設備也帶有RS-232口。同時,串口通信協(xié)議也能夠用于獵取遠程采集設備的數(shù)據(jù)。3.2串行通信的異步通信字符幀也叫數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗位和停止位等四部分組成。在串行通信中,發(fā)送端一幀一幀發(fā)送信息,接收端一幀一幀接收信息。兩相鄰字符幀之間能夠無空閑位,也能夠由若干空閑位,自行定義。串行通信的數(shù)據(jù)或者字符是一幀一幀地傳送,在異步通信中,一幀數(shù)據(jù)先用一個起始位“0”表示字符的開始,然后是5~8位上數(shù)據(jù),即該字符的代碼,規(guī)定低位在前,高位在后,接下來是奇偶校驗位,最后一個停止位“1”表示字符的結束。下面是異步通信一幀數(shù)據(jù)為10位的幀格式見圖3-1。圖3-1字符幀格式圖3.3波特率波特率是通信中對數(shù)據(jù)傳送速率的要求。在計算機通信中,其意義是每秒鐘傳送多少位二進制數(shù)。假如異步傳送速率為每秒120個字符,每個字符有1個起始位,8個數(shù)據(jù)位,1個停止位組成,則其傳送波特率為QUOTE10×120=1200bps=1200波特傳送一位所需要的時刻為波特率的倒數(shù),即QUOTETd=11200=0.833ms在串行傳輸中,二進制數(shù)據(jù)序列是以數(shù)字波形出現(xiàn)的,發(fā)送時在發(fā)送時鐘下將通信線上傳來的數(shù)據(jù)串行移入移位寄存器,因此,發(fā)送時鐘和同意時鐘也可作移位時鐘。能產(chǎn)生該時鐘的電路稱為波特率發(fā)生器。為提高采樣的分辨率,準確地測定數(shù)據(jù)位的上升沿或下降沿,時鐘頻率總是高于波特率的若干倍,那個倍數(shù)稱為波特率因子。在單片機中,發(fā)送和接收時鐘能夠由系統(tǒng)時鐘fQUOTEfoscoscQUOTEfosc產(chǎn)生,其波特率因子為12,32,64.假如波特率由fQUOTEfoscosc決定稱為固定波特率方式。也能夠由單片機的內部定時器T1產(chǎn)生,它工作于自動重裝8位定時方式,由于定時器的計數(shù)初值能夠人為的改變,T1產(chǎn)生的時鐘頻率就能夠改變,稱為可變波特率方式。3.4串行接口的差不多特點3.4.1串行端口工作方式MCS-51\o"確實是一個微型的電腦,麻雀雖小,五臟俱全"單片機的串行端口有4種差不多工作方式,通過編程設置,能夠使其工作在任一方式,以滿足不同場合的需要。其中,方式0要緊用于外接移位寄存器,以擴展單片機的I/O\o"電流流過的路叫做電路"電路;工作方式1多用于雙機之間或與外設電路的通信;方式2、3除有方式1的功能外,還能夠作多機通信,以構成分布式多微機系統(tǒng)。串行端口有兩個操縱寄存器SCON、PCON,用于設置工作方式、發(fā)送或接收的狀態(tài)、特征位、數(shù)據(jù)傳送波特率[每秒傳送的位數(shù)]以及作為中斷標志等。串行端口有一個數(shù)據(jù)寄存器SBUF[在專門功能寄存器中的字節(jié)地址為99H,該寄存器為發(fā)送和接收所共用。串行端口的波特率能夠用程序來操縱。在不同工作方式中,由時鐘振蕩\o"頻率"頻率的分頻值或由定時器T1的定時溢出時刻確定,使用十分方便靈活。

串口操縱寄存器:輸入:在QUOTEREN=1時,串行口采樣RXD引腳,當采樣到1至O的跳變時,確認是串行發(fā)送來的一幀數(shù)據(jù)的開始位0,從而開始接收一幀數(shù)據(jù)。只有當8位數(shù)據(jù)接收完,并檢測到高\o"電平"電平停止位后,只有滿足①QUOTER1=0;②或接收到的第9位數(shù)據(jù)為1時,停止位才進入RB8,8位數(shù)據(jù)才能進入接收寄存器,并由硬件置位中斷標志RI;否則信息丟失。因此在方式1接收時,應先用軟件清零RI和SM2標志。1.方式2方式2為固定波特率的11位UART方式。它比方式1增加了一位可程控為1或0的第9位數(shù)據(jù)。輸出:發(fā)送的串行數(shù)據(jù)由TXD端輸出一幀信息為11位,附加的第9位來自SCON寄存器的TB8位,用軟件置位或復位。它可作為多機通訊中地址/數(shù)據(jù)信息的標志位,也能夠作為數(shù)據(jù)的奇偶校驗位。當CPU執(zhí)行一條數(shù)據(jù)寫入SUBF的指令且QUOTETI=0時,就啟動發(fā)送器發(fā)送。發(fā)送一幀信息后,置位中斷標志TI。輸入:在QUOTEREN=1時,串行口采樣RXD引腳,當采樣到1至O的跳變時,確認是串行發(fā)送來的一幀數(shù)據(jù)的開始位0,從而開始接收一幀數(shù)據(jù)。在接收到附加的第9位數(shù)據(jù)后,當滿足①QUOTER1=0;②QUOTESM2=0或接收到的第9位數(shù)據(jù)為1時,第9位數(shù)據(jù)才進入RB8,8位數(shù)據(jù)才能進入接收寄存器,并由硬件置位中斷標志RI;否則信息丟失。且不置位RI。2.工作方式3方式3為波特率可變的11位UART方式。除波特率外,其余與方式2相同。

波特率的選擇

如前所述,在串行通訊中,收發(fā)雙方的數(shù)據(jù)傳送率(波特率)要有一定的約定。在MCS-51串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器T1的溢出率操縱。1.方式O方式0的波特率固定為主振\o"頻率"頻率

的QUOTE1/12。2.方式2方式2的波特率由PCON中的選擇位SMOD來決定,可表示為:QUOTE波特率=2sMOD×fosc/64也確實是當QUOTESMOD=1時,波特率為QUOTE1/32×fosc,當QUOTESMOD=0時,波特率為QUOTE1/64×fosc。3.方式1和方式3定時器T1作為波特率發(fā)生器,其公式如下:式中T1計數(shù)率取決于它工作在定時器狀態(tài)依舊計數(shù)器狀態(tài)。當工作于定時器狀態(tài)時,T1計數(shù)率為fosc門2:當工作于計數(shù)器狀態(tài)時,T1計數(shù)率為外部輸入\o"頻率"頻率,此頻率應小于QUOTEfosc/24。產(chǎn)生溢出所需\o"交流電完成一次完整的變化所需要的時刻叫做周期"周期與定時器T1的工作方式、T1的預置值有關。

定時器T1工作于方式O:QUOTE溢出所需周期=8192-x

定時器T1工作于方式1:QUOTE溢出所需周期=65536-x定時器T1工作于方式2:QUOTE溢出所需周期=256-x

因為方式2為自動重裝入初值的8位定時器/計數(shù)器模式,因此用它來做波特率發(fā)生器最恰當。這種方式下,T1的溢出率[次/秒]計算式能夠表示為:(二)串行口的通信波特率串行口的通信波特率恰好反映串行口傳輸數(shù)據(jù)的速率。通信波特率的選用,不僅和所選通信設備、傳輸距離有關,還受傳輸線狀況所制約。波特率設計1、方式0的波特率工作方式0時,移位脈沖由機器周期的第6個狀態(tài)周期S6給出,每個機器周期產(chǎn)生一個移位脈沖,發(fā)送或接收一位數(shù)據(jù)。因此,波特率是固定的,為振蕩頻率的QUOTE112,不受PCON寄存器中SMOD的阻礙。用公式表示為:工作方式0的QUOTE波特率=fosc/122、方式2的波特率工作方式2時,移位脈沖由振蕩頻率fosc的第二節(jié)拍P2時鐘(即)給出,因此,方式2波特率取決于PCON中的SMOD位的值,當QUOTESMOD=2時,波特率為fosc的QUOTE164;當QUOTESMOD=1時,波特率為fosc的QUOTE132,用公式表示為;工作方式2:QUOTE波特率=2SMOD/64×fosc3、工作方式1和方式3的波特率在這兩種方式下,串行口波特率是由定時器的溢出率決定的,因而波特率也是可變的。相應公式為:QUOTE波特率=2SMOD/32×定時器T1QUOTE定時器T1溢出率=fosc/12實際上定時器T1通常采納方式2,因為定時器T1在方式2下工作,TH1和TL1分不設定為兩個8位重裝計數(shù)器。4單片機與PC機通信4.1AT89C51單片機上對應端口介紹本次課設要緊用到AT89C51單片機上的P3口,P3口的功能簡介如下:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些專門功能口,如下表所示:P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2/INT0(外部中斷0)P3.3/INT1(外部中斷1)P3.4T0(計時器0外部輸入)P3.5T1(計時器1外部輸入)P3.6/WR(外部數(shù)據(jù)存儲器寫選通)P3.7/RD(外部數(shù)據(jù)存儲器讀選通)P3口同時為閃耀編程和編程校驗接收一些操縱信號本次單片機部分只需用到P3口的P3.0口和P3.1口,用于和PC連接通信。4.2RS-232簡介通常RS-232接口以9個引腳(DB-9)或是25個引腳(DB-25)的型態(tài)出現(xiàn),RS-232的電器特性、邏輯電平和各種信號線功能也有規(guī)定。在TxD和RxD上:邏輯1:-3V~-15V邏輯0:+3V~+15V發(fā)送數(shù)據(jù)(TxD)——通過TxD終端將串行數(shù)據(jù)發(fā)送到MODEM,(DTE→DCE)。接收數(shù)據(jù)(RxD)——通過RxD線終端接收從MODEM發(fā)來的串行數(shù)據(jù),(DCE→DTE)。4.3單片機通信代碼#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedintunsignedcharflag,a,i;ucharcodetable[]="OHMYGOD";voiddelay1ms(){ uchari,j; for(i=0;i<10;i++) for(j=0;j<33;j++);}voiddelay(ucharn)//延時n毫秒{ uchari; for(i=0;i<n;i++) delay1ms();}voidinit(){TMOD=0x20;//T1定時器方式2TH1=0xfd;TL1=0xfd;//T1定時器裝初值TR1=1;//啟動定時器T1REN=1;//數(shù)據(jù)同意同意SM0=0;設定串口方式1SM1=1;//EA=1;//開總中斷ES=1;//同意串口中斷}voidmain(){uchark;init();while(1){ if(flag==1) { ES=0;//關閉串口中斷 for(i=0;i<17;i++) { SBUF=table[i];//接收數(shù)據(jù) while(!TI);//等待是否發(fā)送完畢 TI=0; } SBUF=a;//發(fā)送數(shù)據(jù) while(!TI); TI=0; ES=1; flag=0; }}}voidser()interrupt4//串口中斷程序{RI=0;//軟件清零,進入中斷服務程序a=SBUF;flag=1;//標志位置1,推斷是否已收到數(shù)據(jù)}4.4仿真電路圖圖4-1單片機電路仿真圖5VB設計PC機5.1界面設計本次設計需要添加MSComm控件,可用Project--Components—commcontrol6.0進行添加。在設計窗體時要添加以下控件:1個ComboBox、9個Label、1個Option、7個CommandButton、2個TextBox。5.2VB設計的窗體圖5-1VB設計軟件5.3VB代碼OptionExplicit'OptionBase1PrivateDeclareSubSleepLib"kernel32"(ByValdwMillisecondsAsLong)DimcomportAsByteDimrateAsLongDimdata_cntAsIntegerDimstop_cntAsIntegerDimdisp_onAsIntegerDimmutAsBooleanDimout()AsByte——————————————————————————————————PrivateSubcom_change()DimflagAsBooleanOnErrorResumeNextErr.ClearIfmut=FalseThenExitSub'初始化完成前本過程無效flag=MSComm1.PortOpenIfflagThenMSComm1.PortOpen=False'已打開先關閉MSComm1.CommPort=comport'設置串行端口MSComm1.Settings=CStr(rate)+",N,"+CStr(data_cnt)+","+CStr(stop_cnt)'設置波特率及數(shù)據(jù)幀格式MSComm1.PortOpen=TrueIfErr.NumberThenIfErr.Number=8002ThenMsgBox"串口"+CStr(comport)+"不存在!",vbOKOnly,"警告"IfErr.Number=8005ThenMsgBox"串口"+CStr(comport)+"已打開!",vbOKOnly,"警告"Option1.BackColor=RGB(0,0,0)Command1.Enabled=FalseCommand6.Enabled=FalseErr.ClearElseOption1.BackColor=RGB(255,0,0)Command1.Enabled=TrueCommand1.Caption="關閉串口"Command6.Enabled=TrueEndIfEndSub——————————————————————————————————-PrivateSubCombo1_click()comport=Combo1.ListIndex+1com_changeEndSub——————————————————————————————————PrivateSubCombo2_click()SelectCaseCombo2.ListIndexCase0rate=300Case1rate=600Case2rate=1200Case3rate=2400Case4rate=4800Case5rate=9600Case6rate=19200Case7rate=38400Case8rate=56000Case9rate=57600Case10rate=115200EndSelectcom_changeEndSub——————————————————————————————————PrivateSubCombo3_click()data_cnt=8-Combo3.ListIndexcom_changeEndSub——————————————————————————————————PrivateSubCombo4_click()stop_cnt=1+Combo4.ListIndexcom_changeEndSub——————————————————————————————————PrivateSubCommand1_Click()IfCommand1.Caption="關閉串口"ThenMSComm1.PortOpen=FalseCommand1.Caption="打開串口"Option1.BackColor=RGB(0,0,0)ElseMSComm1.PortOpen=TrueCommand1.Caption="關閉串口"Option1.BackColor=RGB(255,0,0)EndIfEndSub——————————————————————————————————PrivateSubCommand2_Click()Text1.Text=""EndSub——————————————————————————————————PrivateSubCommand3_Click()Staticf2AsByteIff2=0Thendisp_on=0f2=1Command3.Caption="接著顯示"Elsedisp_on=0f2=0Command3.Caption="停止顯示"EndIfEndSub——————————————————————————————————PrivateSubCommand4_Click()DimtimeAsDatetime=Now()Open"C:\Users\Lenovo\Desktop\NICE.txt"ForOutputAs#5Print#5,timePrint#5,Text1.TextClose#5EndSub——————————————————————————————————PrivateSubCommand5_Click()Text2.Text=""EndSub——————————————————————————————————PublicFunctionIsHex(cAsString)AsIntegerIfc>="0"Andc<="9"ThenIsHex=Val(c)-Val("0")ElseIfc>="a"Andc<="f"ThenIsHex=Asc(c)-Asc("a")+10ElseIfc>="A"Andc<="F"ThenIsHex=Asc(c)-Asc("A")+10ElseIsHex=16EndIfEndFunction——————————————————————————————————PrivateSubCommand6_Click()DimoutsAsStringouts=Text2.TextCallToChar(out,CStr(outs))MSComm1.Output=outExitSubDimsAsStringDimlAsIntegerDimiAsInteger,jAsInteger,cntAsIntegerDimaAsIntegerDimtmpAsStringDimsend_buf()AsByteReDimsend_buf(1024)cnt=0s=Trim(Text2.Text)l=Len(s)DoWhile(l)DoUntilIsHex(Left(s,1))<>16l=l-1Ifl=0ThenExitDotmp=Right(s,l)Loopa=IsHex(Left(s,1))l=l-1s=Right(s,l)Ifl<>0AndIsHex(Left(s,1))<>16Thena=a*16+IsHex(Left(s,1))l=l-1s=Right(s,l)EndIfcnt=cnt+1send_buf(cnt)=aLoopIfcnt>128Thencnt=128ReDimPreservesend_buf(cnt)MSComm1.Output=send_buf()EndSub——————————————————————————————————PrivateSubCommand7_Click()UnloadMeEndSub——————————————————————————————————PrivateSubForm_Activate()OnErrorResumeNextmut=FalseCombo1.ListIndex=0Combo2.ListIndex=5Combo3.ListIndex=0Combo4.ListIndex=0mut=TrueMSComm1.PortOpen=TrueIfErr.NumberThenMsgBox"串口1已打開!",vbOKOnly,"警告"Option1.BackColor=RGB(0,0,0)Command1.Enabled=FalseCommand6.Enabled=FalseErr.ClearEndIfCommand1.SetFocusEndSub——————————————————————————————————PrivateSubForm_Load()MSComm1.CommPort=1'設置串行端口com1MSComm1.Settings="9600,N,8,1"'設置波特率及數(shù)據(jù)幀格式MSComm1.InputLen=0'讀取接收緩沖區(qū)的所有字符MSComm1.InBufferSize=256'數(shù)據(jù)同意緩沖區(qū)大小為4000字節(jié)MSComm1.OutBufferSize=256'數(shù)據(jù)發(fā)送緩沖區(qū)大小為4000字節(jié)MSComm1.RThreshold=1'每10位數(shù)據(jù)到接收緩沖區(qū)都觸發(fā)接收事件'MSComm1.SThreshold=1'發(fā)送緩沖區(qū)空觸發(fā)發(fā)送事件'MSComm1.InputMode=comInputModeText'字節(jié)模式'設定InputMode以讀取二進位資料MSComm1.InputMode=comInputModeBinarydisp_on=1comport=1rate=9600data_cnt=8stop_cnt=1EndSub——————————————————————————————————PrivateSubLabel3_Click()EndSub——————————————————————————————————PrivateSubMSComm1_OnComm()StaticcntAsIntegerDimreceive_cntAsIntegerDimiAsIntegerDimBufferAsVariantDimArr()AsByteDimsAsStringSelectCaseMSComm1.CommEventCasecomEvReceivereceive_cnt=MSComm1.InBufferCount'接收緩沖區(qū)的字節(jié)數(shù)'往暫存區(qū)存二進位資料Buffer=MSComm1.Input'指定給位元組陣列以便處理Arr=Buffers=""Fori=0Toreceive_cnt-1IfArr(i)>=32AndArr(i)<=126Thens=s&Chr(Arr(i))cnt=cnt+1EndIfNextiText1.Text=Text1.Text&s&vbCrLfIfcnt>=300ThenText1.Text=""cnt=0ExitSubEndIfCasecomEvSendEndSelectEndSub

溫馨提示

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

評論

0/150

提交評論