<button id="3sltb"></button>
  • <span id="3sltb"><optgroup id="3sltb"></optgroup></span>
    <label id="3sltb"><meter id="3sltb"></meter></label>
    <rt id="3sltb"><optgroup id="3sltb"><strike id="3sltb"></strike></optgroup></rt>
    <label id="3sltb"></label>
    <label id="3sltb"><legend id="3sltb"><th id="3sltb"></th></legend></label>

    <label id="3sltb"><meter id="3sltb"></meter></label>

      <ruby id="3sltb"><dl id="3sltb"><listing id="3sltb"></listing></dl></ruby>

        產品列表PRODUCTS LIST

        聯系信息

        • 電話:
          13521418576
        • 傳真:
          010-62979724
        首頁 > 技術與支持 > Visual Basic串口通訊調試方法
        Visual Basic串口通訊調試方法
        點擊次數:5247 更新時間:2009-12-25

        Visual Basic串口通訊調試方法

          現有電子秤一臺,使用串口與計算機進行通訊。編寫VB程序來訪問串口,達到讀取電子秤上顯示的數據。該電子秤為BE01型儀表,輸出為RS-232C標準接口,波特率為300-9600、偶校驗、7個數據位、2個停止位。所有字符均發送11位ASCII碼,一個起始位。在VB中與串口通訊需要引入控件MSComm串口通訊控件(在Microsoft Comm Control 6.0中)。具體程序如下:控件簡稱:MSC

        Dim Out(12) As Byte '接收var中的值
        Dim var As Variant '接收MSC.input中的數值
        Dim nRece As Integer '計算MSC.inputbuffer的個數
        Dim i As Integer, j As Integer '隨即變量,計算循環

        ****************************************************************************

        Private Sub Form_Load()
         ClearText
         With MSC
          .CommPort = 1 '設置Com1為通信端口
          .Settings = "9600,E,7,2" '設置通信端口參數 9600赫茲、偶校驗、7個數據位、1個停止位.(這里需要進一步說明的是:.Setting=”BBBB,P,D,S”。
          含義是:B:Baud Rate(波特率);P:Parity(奇偶);D:Data Bit;S:Stop Bit)

          .InBufferSize = 40 '設置緩沖區接收數據為40字節
          .InputLen = 1 '設置Input一次從接收緩沖讀取字節數為1
          .RThreshold = 1 '設置接收一個字節就產生OnComm事件

         End With

        End Sub

        ****************************************************************************

        Private Sub ClearText()
         Text3.Text = ""
         Text2.Text = "5"
         Text1.Text = ""
        End Sub

        Private Sub Command1_Click()
         ClearText
         ' nRece = 0 '計數器清零
         With MSC
          .InputMode = comInputModeBinary '設置數據接收模式為二進制形式
          .InBufferCount = 0 '清除接收緩沖區
          If Not .PortOpen Then
           .PortOpen = True '打開通信端口
          End If
         End With
        End Sub

        Private Sub MSC_OnComm()
         DelayTime ‘用來延續時間
         ClearText
         With MSC
          Select Case .CommEvent '判斷通信事件
          Case comEvReceive: '收到Rthreshold個字節產生的接收事件
           SwichVar 1
           If Out(1) = 2 Then '判斷是否為數據的開始標志
            .RThreshold = 0 '關閉OnComm事件接收
           End If
           Do
            DoEvents
           Loop Until .InBufferCount >= 3 '循環等待接收緩沖區>=3個字節
           ' nRece = nRece + 1
           For i = 2 To 12
            SwichVar i
            Text1.Text = Text1.Text & Chr(Out(i))
           Next
           Text1.Text = LTrim(Text1.Text)
           Text2.Text = Text2.Text & CStr(nRece)
           .RThreshold = 1 '打開MSComm事件接收
          Case Else
           ' .PortOpen = False
          End Select
         End With

        End Sub

        ****************************************************************************

        Private Sub DelayTime()

         Dim bDT As Boolean
         Dim sPrevious As Single, sLast As Single

         bDT = True

         sPrevious = Timer (Timer可以計算從子夜到現在所經過的秒數,在Microsoft Windows中,Timer函數可以返回一秒的小數部分)

         Do While bDT
          If Timer - sPrevious >= 0.3 Then bDT = False
         Loop
         bDT = True

        End Sub

        (通信傳輸速率為9600bps,則zui快速度1.04ms發送一個字節,儀表每秒發送50幀數據,每幀數據有4個字節,即每秒發送200個字節,平均5.0ms 發送一個字節,連續讀取串口數據時要在程序中添加循環等待程序)

        Private Sub SwichVar(ByVal nNum As Integer)

         DelayTime
         var = Null
         var = MSC.Input
         Out(nNum) = var(0)

        End Sub

        (設置接收數據模式采用二進制形式,即 InputMode=comInputModeBinary,但用Input屬性讀取數據時,不能直接賦值給 Byte 類型變量,只能通過先賦值給一個 Variant 類型變量,返回一個二進制數據的數組,再轉換保存到Byte類型數變量中。)

        Private Sub Text1_Change()

         Text3.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 Function
         

        主站蜘蛛池模板: 乱人伦中文视频在线观看免费| 亚洲色大成网站WWW久久九九| 亚洲妇女水蜜桃av网网站| 中文日本免费高清| 国产成人亚洲综合| a一级毛片免费高清在线| 亚洲人AV永久一区二区三区久久| 人成电影网在线观看免费| 亚洲精品国产精品国自产观看| 一级毛片免费毛片毛片| 中文字幕人成人乱码亚洲电影| 免费无码黄网站在线看| 亚洲天天在线日亚洲洲精| xxxxx免费视频| 亚洲sss综合天堂久久久| 暖暖免费高清日本一区二区三区| 男女超爽视频免费播放| 国产精品亚洲精品日韩已方| 免费播放在线日本感人片| 久久精品蜜芽亚洲国产AV| 毛片免费视频播放| 亚洲免费无码在线| 亚洲AV无码久久精品狠狠爱浪潮| 免费A级毛片无码A∨中文字幕下载| 亚洲另类精品xxxx人妖| 成在线人永久免费视频播放| 国产激情久久久久影院老熟女免费| 亚洲日本精品一区二区| 扒开双腿猛进入爽爽免费视频| 国产精品亚洲二区在线| 亚洲AV永久纯肉无码精品动漫| 97国产免费全部免费观看| 午夜亚洲乱码伦小说区69堂| 亚洲av中文无码乱人伦在线咪咕| 精品一区二区三区免费毛片爱| 亚洲色大成WWW亚洲女子| 久久精品国产亚洲7777| 免费成人福利视频| 一级特黄aaa大片免费看| 亚洲理论在线观看| 亚洲免费视频一区二区三区|