利用VB調試串口通訊_第1頁
利用VB調試串口通訊_第2頁
利用VB調試串口通訊_第3頁
利用VB調試串口通訊_第4頁
利用VB調試串口通訊_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、串口通訊調試器:用VB調試串口通訊-vb教程瘋狂代碼 http:/CrazyC :http:/CrazyClass=MsoNormal style="MARGIN: 0cm 0cm 0pt">現有電子秤臺使用串口和計算機進行通訊編寫VB來訪問串口達到讀取電子秤上顯示數據該電子秤為BE01型儀表輸出為RS-232C標準接口波特率為300-9600、偶校驗、7個數據位、2個停止位所有均發(fā)送11位ASCII碼個起始位在VB中和串口通訊需要引入Control控件MSComm串口通訊Control控件(在Microsoft Comm Control 6.0中具體如下:Contr

2、ol控件簡稱:MSCDim Out(12 As Byte ´接收var中值Dim var As Variant ´接收MSC.input中數值Dim nRece As Integer ´計算MSC.inputbuffer個數Dim i As Integer, j As Integer ´隨即變量計算循環(huán)*Private Sub Form_LoadClearTextWith MSC.CommPort = 1 ´設置Com1為通信端口.Settings = "9600,E,7,2" ´設置通信端口參數 9600赫茲、偶

3、校驗、7個數據位、1個停止位.(這里需要進步介紹說明是:.Setting=”BBBB,P,D,S”含義是:B:Baud Rate(波特率;P:Parity(奇偶;D:Data Bit;S:Stop Bit.InBufferSize = 40 ´設置緩沖區(qū)接收數據為40字節(jié).InputLen = 1 ´設置Input次從接收緩沖讀取字節(jié)數為1.RThreshold = 1 ´設置接收個字節(jié)就產生OnComm事件End WithEnd Sub* Private Sub ClearTextText3.Text = ""Text2.Text = &qu

4、ot;5"Text1.Text = ""End SubPrivate Sub Command1_ClickClearText´ nRece = 0 ´計數器清零With MSC.InputMode = comInputModeBinary ´設置數據接收模式為 2進制形式.InBufferCount = 0 ´清除接收緩沖區(qū)If Not .PortOpen Then.PortOpen = True ´打開通信端口End IfEnd WithEnd SubPrivate Sub MSC_OnCommDelayTime

5、 用來延續(xù)時間ClearTextWith MSCSelect Case .CommEvent ´判斷通信事件Case comEvReceive: ´收到Rthreshold個字節(jié)產生接收事件SwichVar 1If Out(1 = 2 Then ´判斷是否為數據開始標志.RThreshold = 0 ´關閉OnComm事件接收End IfDoDoEventsLoop Until .InBufferCount >= 3 ´循環(huán)等待接收緩沖區(qū)>=3個字節(jié) ´ nRece = nRece + 1For i = 2 To 12Sw

6、ichVar iText1.Text = Text1.Text & Chr(Out(iNextText1.Text = LTrim(Text1.TextText2.Text = Text2.Text & CStr(nRece.RThreshold = 1 ´打開MSComm事件接收Case Else´ .PortOpen = FalseEnd SelectEnd WithEnd Sub* Private Sub DelayTimeDim bDT As BooleanDim sPrevious As Single, sLast As SinglebDT = T

7、ruesPrevious = Timer (Timer可以計算從子夜到現在所經過秒數在Microsoft Windows中Timer可以返回秒小數部分Do While bDTIf Timer - sPrevious >= 0.3 Then bDT = FalseLoopbDT = TrueEnd SubPrivate Sub SwichVar(ByVal nNum As IntegerDelayTimevar = Nullvar = MSC.InputOut(nNum = var(0End Sub(設置接收數據模式采用 2進制形式即 InputMode=comInputModeBinar

8、y但用Input屬性讀取數據時不能直接賦值給 Byte 類型變量只能通過先賦值給個 Variant 類型變量返回個 2進制數據再轉換保存到Byte類型數變量中Private Sub Text1_ChangeText3.Text = CText(Text1.Text - CText(Text2.Text End Sub * Private Function CText(ByVal str As String As Currency If str <> "" Then CText = CCur(Val(str Else CText = 0 End If End Fu

9、nction (儀表每秒發(fā)送50幀數據微機收到幀完整數據至少需要20 ms時間然后再進行數據處理如果微機在下幀數據接收 前即20ms內能將數據計算處理完畢則接收緩沖區(qū)內只會保存有幀數據不會存有兩幀以上數據接收緩沖區(qū)大小不 會影響實時監(jiān)測效果(接收緩沖區(qū)>4字節(jié)這時完全可以實現實時監(jiān)測或實時控制;如果微機在20ms內不能將數 據計算處理完畢接收緩沖區(qū)設置得又很大在數據計算處理完畢前接收緩沖區(qū)內就會保存有兩幀以上數據而且次 工作時間越長緩沖區(qū)內滯留數據幀就越多數據采集和數據處理的間產生逐漸增大額外時間差當接收緩沖區(qū)充滿 后時間差不再增大固定在某值部分數據因不能及時采集到接收緩沖區(qū)中數據產生丟失現象真實工作情況就會和 微機處理結果產生較大時間差對實時監(jiān)測和實時控制很不利這種情況下接收緩沖區(qū)大小就會影響實時監(jiān)測效果 所以接收緩沖區(qū)設置不能過大以保證數據處理實時性 小結:本文所用儀表為梅特勒公司出產BE01型電子秤其輸出每個編碼均為標準ASCII碼其他儀表存在發(fā)射編碼中 含有BCD壓縮碼而且分為高低位需要接收后對其進行解碼換算的后還要將高位和低位數

溫馨提示

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

評論

0/150

提交評論