版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、一用VBDDE通訊!二1 .啟動excel從:工具->宏->VisualBasic編輯器,打開excelVBA.2 .在ThisWorkbook上右單擊鼠標(biāo)選擇插入-用戶窗體3 .單擊一下插入的窗體,單擊菜單上的-工具-附加控件-選擇MicrosoftCommunicationsControl,version6.04 .在窗體上添加mscomm1,添加commandButton15 .單串口機子,短接rs232的2腳和3腳,雙串口機子用232線連接兩個串口,注意2、3線交叉,我這里以單串口短接舉例6 .復(fù)制以下代碼到你的窗體里:VBcode'VBA代碼PrivateSubC
2、ommandButton1_Click()MSComm1.Output="BEG1END"EndSubPrivateSubMSComm1_OnComm()Dimt1AsLong,com_StringAsStringStaticiAsIntegert1=TimerSelectCaseMSComm1.CommEventCasecomEvReceive'收至URThreshold定義的字符數(shù)1字節(jié)MSComm1.RThreshold=0DoDoEventsLoopWhileTimer-t1<0.1延時時間自己調(diào)整com_String=MSComm1.InputMSC
3、omm1.RThreshold=1i=i+1:Ifi>255Theni=1Application.Cells(3,i).Value=com_StringEndSelect'ActiveWorkbook.SaveAsFilename:="C:d1.xls"EndSubPrivateSubiniMscomm()'OnErrorResumeNext初始化通信串口MSComml.CommPort=1MSComml.Settings="9600,N,8,1"MSComml.PortOpen=True'使用COM1,9600波特,無奇偶
4、校驗,8位數(shù)據(jù),一個停止位,打開端口MSComml.RThreshold=1MSComml.InputLen=0,緩沖區(qū)有1個字節(jié)就產(chǎn)生OnComm事件為0時,使用Input將使MSComm控件讀取接收緩沖區(qū)中全部的內(nèi)容。MSComm1.InputMode=comInputModeText'Input以二進制形式取回用comInputModeBinary(缺省項)MSComm1.RTSEnable=TrueMSComm1.InBufferCount=0'清空緩沖區(qū),以文本形式取回是EndSubPrivateSubUserForm_Initialize()iniMscommEnd
5、Sub7.雙擊thisWorkBook,復(fù)制以下代碼到窗體里:VBcode,VBA代碼PrivateSubWorkbook_Open()UserForm1.Show0'UserForm1.HideEndSub8 .保存文件并關(guān)閉excel,然后再打開你的文件,然后單擊你窗體上的按鈕看看。9 .這個程序是我為你特意做的,已經(jīng)做過測試,sys2003office2003。10 .如果excel中有數(shù)據(jù)輸入,再去測試你的設(shè)置,注意com口號與波特率的設(shè)置。三markexcel串口還有一個辦法就是用任何編程,只需將收到的數(shù)據(jù)用csv文件的格式,生成一個文本文件,然后就可以用excel打開了這個
6、方法適合于任何語言,只要能生成文本文件就可以了。如果存成txt再打包可以的話,Perl簡單些,不熟悉的人3天也能做出來.Spreadsheet:WriteExcel和Spreadsheet:ParseExcel四2010-01-2716:411466人閱讀評論(0)收藏舉報ExcelVBA串口通信用c#也可以實現(xiàn)這種功能,那就是用serialPort控件,這里用VBA寫的,用MSComm控件實現(xiàn)。其實還有另外一個控件叫NETComm控件,也可以做,源碼中注釋很清楚,不再贅述vb:showcolumns:firstline1viewplaincopyprint?10203040506070.80
7、901001101201301401501. PrivateSubbtn_Close_Click()2. MSComm1.PortOpen=False'打開串口3. btn_Start.Enabled=True'連接按鈕響應(yīng)4. btn_Close.Enabled=False'斷開按鈕變灰5. EndSub6. PrivateSubbtnexitClick()7. IfMSComml.PortOpen=TrueThen'如果串口被打開8. MSComm1.PortOpen=False'關(guān)閉按鈕9. EndIf10. UnloadUserForm1'
8、;關(guān)閉窗體11. EndSub12. PrivateSubbtn_Start_Click()13. iniMSComm'對串口控件設(shè)置14. MSComm1.PortOpen=True15. btn_Close.Enabled=True16. btn_Start.Enabled=False17. EndSub18. PrivateSubiniMSComm()'對串口控件設(shè)置19. MSComml.CommPort=1,占用的串口號,1表示COM120. MSComm1.Settings="115200,0,8,1"'這個自己根據(jù)自己的情況設(shè)置21.
9、MSComm1.RThreshold=122. MSComm1.InputLen=023. 'MSComml.PortOpen=True'這句話放到連接按鈕事件中去24. MSComml.InputMode=comInputModeText25. MSComm1.RTSEnable=True26. MSComm1.InBufferCount=027. EndSub28. PrivateSubMSComm1_OnComm()'事件處理29. Dimt1AsLong,com_stringAsString30. StaticiAsInteger31. t1=Timer32.
10、SelectCaseMSCommI.CommEvent33. CasecomEvReceive'如果接收到數(shù)據(jù)則執(zhí)行下列語句34. MSComm1.RThreshold=035. Do36. DoEvents37. LoopWhileTimer-t1<0.138. com_string=MSComml.Input39. MSComml.RThreshold=140. i=i+1:Ifi>255Theni=141. Application.Cells(3,i).Value=com_string'寫到Excel中去42. txtRec.Text=txtRec.Text+
11、com_string'寫到文本框中去43. EndSelect44. EndSubVBA的妙用:串口通訊程序與EXCEL相結(jié)合發(fā)布時間:2010-3-11發(fā)布者:北京世紀(jì)長秋科技有限公司1VBA簡介VisualBasic的應(yīng)用程序版(VBA)是Microsoft公司長期追求的目標(biāo),使可編程應(yīng)用軟件得到完美的實現(xiàn),它作為一種通用的宏語言可被所有的Microsoft可編程應(yīng)用軟件所共享。在沒有VBA以前,一些應(yīng)用軟件如Excel、Word、Access、Project等都采用自己的宏語言供用戶開發(fā)使用,但每種宏語言都是獨立的,需要用戶專門去學(xué)習(xí),它們之間互不兼容,使得應(yīng)用軟件之間不能在程序
12、上互聯(lián)。擁有一種可跨越多個應(yīng)用軟件,使各應(yīng)用軟件產(chǎn)品具有高效、靈活且一致性的開發(fā)工具是至關(guān)重要的。VBA作為一種新一代的標(biāo)準(zhǔn)宏語言,具有上述跨越多種應(yīng)用軟件并且具有控制應(yīng)用軟件對象的能力,使得程序設(shè)計人員僅需學(xué)習(xí)一種統(tǒng)一的標(biāo)準(zhǔn)宏語言,就可以轉(zhuǎn)換到特定的應(yīng)用軟件上去,程序設(shè)計人員在編程和調(diào)試代碼時所看到的是相同的用戶界面,而且VBA與原應(yīng)用軟件的宏語言相兼容,以保障用戶在代碼和工作上的投資。有了VBA以后,多種應(yīng)用程序共用一種宏語言,節(jié)省了程序人員的學(xué)習(xí)時間,提高了不同應(yīng)用軟件間的相互開發(fā)和調(diào)用能力。2串口通訊程序簡單的串口通訊程序一般是先由上位機向下位機發(fā)送讀(write)或?qū)懀╮ead)數(shù)據(jù)
13、命令,然后等待下位機應(yīng)答;下位機接受到命令之后,首先要對數(shù)據(jù)命令進行校驗,對于符合校驗約束的命令下位機會將相應(yīng)的數(shù)據(jù)回復(fù)到上位機,對于不符合校驗約束的命令下位機或?qū)⑵鋻仐壔蚧貜?fù)錯誤信息;上位機接收到下位機的響應(yīng)之后,首先要對接收到的回復(fù)信息進行校驗,對不符合校驗約束的數(shù)據(jù)進行異常處理,對符合校驗約束的信息進行解碼,解碼之后的信息便是上位機從下位機獲得的有效信息了。上位機向串口發(fā)送讀命令之后需要等待下位機應(yīng)答并讀取回復(fù)信息,常用的等待有3種方式:1)輪詢式上位機向串口發(fā)送讀命令之后一直等待下位機應(yīng)答,通訊程序處于一個等待循環(huán)中。優(yōu)點:速度快、誤碼率低(幾乎不存在誤碼)。缺點:消耗CPU。(解決辦
14、法:使用Sleep()API函數(shù))。2)消息式消息式通訊是采用響應(yīng)WINDOWS消息的辦法讀取串口。優(yōu)點:節(jié)省CPU、誤碼率低。缺點:發(fā)送接收機制過于繁瑣。3)定時接收式定時接收式通訊是根據(jù)預(yù)設(shè)的定時器時間進行讀取數(shù)據(jù)o優(yōu)點:發(fā)送接收機制相對簡單、節(jié)省CPU缺點:誤碼率太高,不同的硬件需要配置不同的通訊時間參數(shù),需要嚴(yán)格的校驗運算。3EXCEL-VBA串口通訊實例軟件:EXCELo硬件:艾默生EC10PLCo功能:通過EXCEL中的按鈕控制PLC的輸出繼電器Y0o界面:RUN(運行通訊)、STOP(停止通訊)、Y0(Y0ON/OFF控制)。主程序:OptionExplicitPublicDec
15、lareSubSleepLib"kernel32"(ByValdwMillisecondsAsLong)PublicDeclareFunctionSetTimerLib"user32"(ByValhwndAsLong,ByValnIDEventAsLong,ByValuElapseAsLong,ByVallpTimerFuncAsLong)AsLongPublicDeclareFunctionKillTimerLib"user32"(ByValhwndAsLong,ByValnIDEventAsLong)AsLongPubliccom
16、1AsNewMSCommLib.MSCommPublicy0SttAsBooleanPublicy0_onAsBooleanPublictmrFlagAsBooleanPublictmrAsLongSubrunn()OnErrorGoToedcom1.Settings="9600,e,8,1”Ifcom1.PortOpen=FalseThencom1.PortOpen=TrueEndIftmr=SetTimer(0,0,500,AddressOfontimer)ExitSubed:MsgBox"串口打開錯誤!"EndSubSubstoppi()Ifcom1.Por
17、tOpen=TrueThencom1.PortOpen=FalseKillTimer0,tmrEndIfEndSubPublicFunctionontimer()Dima(7)AsByteDimaddAsLongOnErrorGoToedIftmrFlagFalseThentmrFlag=TrueIfy0_on=TrueTheny0_on=FalseIfy0Stt=TrueThena(0)=&H1a(1)=&H5a(2)=&H0a(3)=&H0a(4)=&HFFa(5)=&H0a(6)=&H8Ca(7)=&H3Acom1.Outp
18、ut=aadd=0DoDoEventsSleep10add=add+1Ifadd>=100ThenExitDoEndIfLoopUntilcom1.InBufferCount>=8Elsea(0)=&H1a(1)=&H5a(2)=&H0a(3)=&H0a(4)=&H0a(5)=&H0a(6)=&HCDa(7)=&HCAcoml.Output=aadd=0DoDoEventsSleep10add=add+1Ifadd>=100ThenExitDoEndIfLoopUntilcom1.InBufferCount>=8EndIfEndIfEndIftmrFlag=FalseExitFunctioned:MsgBox"串口錯誤!tmrFlag=FalseEndFunctio
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 宜春市科技協(xié)同創(chuàng)新計劃項目申報書
- 一:人事助理工作計劃范文
- 中職教師學(xué)期教學(xué)計劃
- 辦理計劃生育證明需要什么材料
- 自學(xué)會計學(xué)習(xí)計劃
- 2025年社區(qū)健康教育工作計劃結(jié)尾
- 人?;A(chǔ)管理發(fā)展計劃
- 三年級優(yōu)生輔導(dǎo)計劃
- 育苗計劃特練營培訓(xùn)基地培訓(xùn)總結(jié)范文
- 《基金及發(fā)展歷史》課件
- 登革熱及其防治課件
- 血細(xì)胞分離安全護理
- 學(xué)校傳染病控制課件
- 福建省泉州市2023-2024學(xué)年高一上學(xué)期期末質(zhì)檢英語試題(解析版)
- 中華人民共和國民法典(總則)培訓(xùn)課件
- 第三單元第1課 標(biāo)志設(shè)計 課件 2024-2025學(xué)年人教版(2024)初中美術(shù)七年級上冊
- 2024年農(nóng)貿(mào)市場日常管理制度例文(四篇)
- 《數(shù)字信號處理(第2版)》本科全套教學(xué)課件
- 上市央國企數(shù)智化進程中人才就業(yè)趨勢
- 2024版小學(xué)科學(xué)六年級上冊第四單元《能量》教學(xué)課件
- 4 古代詩歌四首《 觀滄?!方虒W(xué)設(shè)計
評論
0/150
提交評論