亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用VB開發Windows環境下的串行通信程序

2019-11-18 17:35:51
字體:
來源:轉載
供稿:網友
隨著Windows在國內的普及,特別是Windows95的推出,越來越多的微機用戶轉向了Windows操作系統。不過Windows應用軟件的開發對于一般工程技術領域的技術人員來說并非易事,不但Windows的消息循環機制不易理解,而且要開發一個功能強、界面美觀的應用軟件,其編程和調試的工作量是非常大的。許多并非搞軟件出身的工程技術人員對Windows編程望而生畏。然而使用微軟的VisualBasic來開發這些方面的Windows應用軟件就十分方便,一般工程技術人員易于掌握,設計軟件界面非常方便,編程工作量相對較小,只需進行主要應用功能的編程和少量界面控制的編程。本文介紹了筆者使用VB在串行通信編程方面的一些收獲,由于在報刊雜志上對Windows下串行通信編程的介紹多為用MicrosoftC 或BorlandC ,故筆者愿意就VB在該方面的應用與大家探討。對于采用了RS-232接口進行串行通信的計算機測控系統軟件的開發,具有一定的參考價值。
在該系統中使用了80C31單片機作為下位機采集慣性敏感部件的測量數據,經過一定的預處理后通過RS-232串行口將數據傳送給上位PC機。在PC機上Windows環境下運行檢測軟件,接受串行口傳來的數據,進行數據處理、顯示、存盤等。數據處理結果以表格形式打印輸出。

在VB3.0中,有許多專業廠商提供用戶定制的控件(Customcontrol),這些控件以.VBX為后綴,其中MSCOMM.VBX即是用于串行通信的控件。對于VB3.0,啟動后該控件就包含于控件工具箱(toolbox)內,否則可以通過File|AddFile將該控件加入控件工具箱。然后就可以利用該控件進行串行通信的程序設計。

下面舉一個簡單的例子,說明了如何進行串行通信的程序設計,該程序在Windows95環境下,使用VB3.0已經實現:

1.先建立一個項目文件,其控件如下表所示:

2.代碼如下:

SubForm_Load()

comm1.CommPort=1‘使用串行口1

'波特率9600,偶校驗,8個數據位,1個停止位。

comm1.Settings=“9600,E,8,1”

當使用Comm1.Input時,每次從接收緩沖區取一個字節。

comm1.InputLen=1

timer1.interval=20‘定時器的中斷間隔為20ms,用于更新顯示時間。

EndSub

SubcmdComm_Click()

Dimechoch‘命令變量

Staticmaxf01&,maxf02&,minf01&,minf02&‘最大值,最小值

OnErrorResumeNext‘簡單的錯誤處理

maxf01&=maxf02&=0‘初始化變量

minf01&=32767

minf02&=32767

label2.Caption=comm1.Settings‘顯示串行口的設置。

Ifcmdcomm.Caption=“通信”Then‘若當前命令按扭的提示為“通信”則開始發送和

cmdcomm.Caption=“停止”‘接受數據,并將命令按扭提示改為“停止”,以

cmdexit.Enabled=False‘允許停止通信。使退出命令在通信中失效。

IfNotcomm1.PortOpenThen‘若串行口沒有打開,則打開串行口

comm1.PortOpen=True

EndIf

Ifcomm1.PortOpenThen

Ifecho.Text<>“”Then‘若命令輸入框不空,則將其轉換為十六進制數值

echoch=Val(“&H” echo.Text)

Else

echoch=&HF0‘否則確省命令為F0H

EndIf

comm1.Output=Chr(echoch)‘向串行口寫入一字節命令,由WINDOWS自

EndIf‘動將命令發出

label3.Caption=Hex(echoch)‘顯示剛發出的命令

DoWhilecomm1.PortOpen

Ifcomm1.InBufferCount>0Then‘若comm1.InBufferCount>0表示接受緩沖

ch$=comm1.Input‘區有數據,并讀出一個字符,

IfAsc(ch$)=echochThen‘若與發出的命令相同,則退出當前循環

ExitDo‘進入下一循環

EndIf

Else

comm1.Output=Chr(echoch)‘否則繼續向下位機發命令,通知下位機

EndIf‘送數據

dummy=DoEvents()‘讓系統處理其他消息

Loop

‘下位機接受到正確的命令,并回發命令正確時,進入下面循環

i=1

DoWhilecomm1.PortOpen

Ifcomm1.InBufferCount>5Then

ch$=comm1.Input

DoWhileAsc(ch$)<>echoch‘以命令字節同步測試數據

ch$=comm1.Input

Loop

ch1$=comm1.Input‘從WINDOWS串行數據接受緩沖區讀測試數據

ch2$=comm1.Input

ch3$=comm1.Input

ch4$=comm1.Input

newf01&=CLng(CLng(Asc(ch2$))*16*16 Asc(ch1$))‘合并為一個整數

newf02&=CLng(CLng(Asc(ch4$))*16*16 Asc(ch3$))

ifnewf01&>maxf01&Then‘判斷最大值,最小值

maxf01&=newf01&

EndIf

Ifnewf01&<minf01&Then

minf01&=newf01&

EndIf

Ifnewf02&>maxf02&Then

maxf02&=newf02&

EndIf

Ifnewf02&<minf02&Then

minf02&=newf02&

EndIf

labf01.Caption=Str(newf01&)‘顯示數據

labf02.Caption=Str(newf02&)

labmaxf01.Caption=Str(maxf01&)

labminf01.Caption=Str(minf01&)

labmaxf02.Caption=Str(maxf02&)

labminf02.Caption=Str(minf02&)

Else

comm1.Output=Chr(echoch)

EndIf

dummy=DoEvents()

Loop

Else‘在通訊過程中,按下cmdCOMM按鈕則停止通信,發出停止測試

cmdcomm.Caption=“通信”‘命令,關閉串行口,使退出按鈕有效。

comm1.Output=Chr(&H5F)

comm1.PortOpen=False

cmdexit.Enabled=True

EndIf

EndSub

SubcmdExit_Click()

Ifcomm1.PortOpenThen‘確認關閉串行口

comm1.PortOpen=False

EndIf

End‘終止整個程序

EndSub

SubTimer1_Timer()‘更新顯示時間

Iflabtime.Caption<>Time&Then

labtime.Caption=Time$

EndIf

EndSub

3.程序說明:

a.上述程序的通信協議為:波特率9600,偶校驗,8個數據位,1個停止位。由上位機發送開始測試命令,下位機接收到命令后每隔500ms向上位機發送檢測到的數據。每次發送5個字節,第一個字節為下位機接受到的命令,第二三字節為16Byte的值,第四五字節為16Byte的值。上位機循環接受并處理和顯示數據;

b.由于在控制軟件中,串行通訊發送和接受的數據多為十六進制,故在命令輸入時為十六進制數,在程序中通過echoch=Val(“&H” echo.Text)將輸入的echo.Text轉換為十六進制數,并賦給變量echoch。而在通過串行口發送時comm1.Output要求接受字符型變量,故通過語句comm1.Output=Chr(echoch)實現;

c.接受數據時,每次要判斷第一個字節是否為發出的命令,只有是后面4個字節才為正確的數據,否則查看下一字節。通過設置COMM1.InputLen=1來實現每次從接受緩沖區內讀取一個字節;

d.當退出程序時,一定要關閉串行口,通過comm1.PortOpen=False完成;

e.如果需要上位機定時查詢下位機,可以將串行通訊在定時器Timer1-Timer事件中進行;

f.要實現完善的功能,必須進一步改善程序,甚至要用到WindowsAPI、OLE等,上述程序只是一個簡單的例子;

上面介紹了筆者在使用VB開發Windows環境下測控軟件的一點收獲,筆者使用上述原理開發了一個界面友好、功能全面、使用方便的衛星控制系統慣性敏感部件檢測軟件,實際使用效果良好,提高了工作效率,甚至實現了測試和數據處理的自動化。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
黄网站色欧美视频| 97精品视频在线观看| 亚洲精品视频在线播放| 57pao国产成人免费| 欧美老女人性生活| 精品国产乱码久久久久酒店| 久久久久999| 中文字幕久久久av一区| 国产精品自拍小视频| 亚洲色图欧美制服丝袜另类第一页| 国产精品久久久久久久天堂| 51ⅴ精品国产91久久久久久| 日韩成人在线播放| 亚洲成人网在线观看| 国产久一一精品| 亚洲色图美腿丝袜| 国产丝袜一区二区三区免费视频| 日韩精品999| 成人黄色免费网站在线观看| 亚洲图片欧美日产| 国产亚洲激情在线| 俺去亚洲欧洲欧美日韩| 国产精品一区二区在线| 亚洲国产成人爱av在线播放| 久久国产精品久久久| 成人精品久久久| 欧美日在线观看| 成人av在线亚洲| 国产精品久久久久久久久久99| 欧美日韩福利视频| 在线日韩精品视频| 4438全国亚洲精品在线观看视频| 中日韩美女免费视频网址在线观看| 91国产美女视频| 久久精品中文字幕一区| 国产精品96久久久久久又黄又硬| 日韩免费不卡av| 国产精品观看在线亚洲人成网| 国外成人免费在线播放| 色偷偷91综合久久噜噜| 欧美日产国产成人免费图片| 久久中文字幕在线视频| 欧美日韩国产一区中文午夜| 日韩av影视在线| 国产精品一区二区久久久久| 欧美精品一本久久男人的天堂| 91精品国产色综合久久不卡98| 亚洲国产女人aaa毛片在线| 亚洲91精品在线观看| 正在播放亚洲1区| 国产欧美一区二区三区视频| 成人性教育视频在线观看| 国产日韩欧美夫妻视频在线观看| 日韩精品在线观| 久久久99久久精品女同性| 国产91精品网站| 久久伊人精品一区二区三区| 日韩免费av在线| 欧美视频在线视频| 欧美超级免费视 在线| 成人黄色中文字幕| 欧美在线中文字幕| 国内精久久久久久久久久人| 亚洲天天在线日亚洲洲精| 中文字幕亚洲综合久久筱田步美| 在线成人一区二区| 91中文字幕一区| xxx欧美精品| 欧美一级电影免费在线观看| 日韩电影大全免费观看2023年上| 欧美视频在线看| 久久久久久久久久久久久久久久久久av| 亚洲男人天堂网站| 国产精品专区h在线观看| 欧美午夜www高清视频| 日韩av成人在线| 日韩欧美精品免费在线| 亚洲国产精彩中文乱码av在线播放| 日韩视频免费中文字幕| 这里只有精品视频| 亚洲激情视频在线| 91chinesevideo永久地址| 国产精品日韩久久久久| 久久久久久久一区二区| 欧美日韩第一页| 欧美小视频在线观看| 欧洲永久精品大片ww免费漫画| 欧美日韩国产在线| 国产精品久久一| 亚洲一区av在线播放| 久久精品国产久精国产思思| 成人亚洲欧美一区二区三区| 国产精品日本精品| 久久99国产综合精品女同| 欧美一级淫片丝袜脚交| 91精品国产99久久久久久| 国产成人a亚洲精品| 91久久夜色精品国产网站| 欧美日韩亚洲成人| 亚洲欧美一区二区三区久久| 久久香蕉精品香蕉| 久久中文字幕国产| 一本色道久久88综合日韩精品| 97国产suv精品一区二区62| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲免费视频在线观看| 欧美极品美女视频网站在线观看免费| 亚洲第一区中文字幕| 久久精视频免费在线久久完整在线看| 日韩毛片在线观看| 国产欧美va欧美va香蕉在线| 欧美极品少妇xxxxⅹ免费视频| 欧美午夜激情在线| 国产精品自在线| 国产成人精品视频在线| 国产精品嫩草影院一区二区| 亚洲国产福利在线| 亚洲国产精品va在线观看黑人| 4444欧美成人kkkk| 亚洲精选在线观看| 亚洲精品国产电影| 亚洲精品av在线播放| 久久色在线播放| 国产美女被下药99| 国产69久久精品成人| 亚洲第一福利在线观看| 亚洲国产精品电影在线观看| 国产精品免费一区二区三区都可以| 精品久久久国产| 国产精品尤物福利片在线观看| 久久久免费在线观看| 91人成网站www| 日产日韩在线亚洲欧美| 欧美激情按摩在线| 国产91色在线免费| 午夜精品国产精品大乳美女| 国模精品视频一区二区三区| 国产精品扒开腿做爽爽爽视频| 日韩精品www| 欧美日韩另类字幕中文| 久久精品99国产精品酒店日本| 亚洲精品第一页| 精品久久久久国产| 中文字幕在线看视频国产欧美| 国产一区二区香蕉| 日韩经典一区二区三区| 福利精品视频在线| 97超级碰碰人国产在线观看| 亚洲精品一二区| 成人福利网站在线观看11| 国产成人一区二区三区小说| 成人黄色免费在线观看| 中文字幕精品视频| 亚洲a在线观看| 色婷婷综合久久久久| 91免费精品视频| 欧美一区二区视频97| 久久久久久久久久久久久久久久久久av| 国产精品久久久久久久天堂| 一本久久综合亚洲鲁鲁| 性欧美在线看片a免费观看| 日韩免费在线看| 国产精品久久久久久久久免费| 日本高清不卡的在线|