• <fieldset id="qo6s0"><menu id="qo6s0"></menu></fieldset><strike id="qo6s0"><menu id="qo6s0"></menu></strike>
  • <fieldset id="qo6s0"><input id="qo6s0"></input></fieldset>
    <fieldset id="qo6s0"></fieldset>
  • <ul id="qo6s0"><dfn id="qo6s0"></dfn></ul>

    產品列表PRODUCTS LIST

    聯系信息

    • 電話:
      13521418576
    • 傳真:
      010-62979724
    首頁 > 技術與支持 > Visual Basic串口通訊調試方法
    Visual Basic串口通訊調試方法
    點擊次數:5141 更新時間: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
     

    主站蜘蛛池模板: 成人免费视频网| 成人免费看片又大又黄| 亚洲AV成人噜噜无码网站| 亚洲国产一成人久久精品| 久久婷婷成人综合色| 成人欧美视频在线观看| 国产成人精品免费直播| 亚洲国产成人无码av在线播放| 免费成人黄色大片| 亚洲国产成人久久综合区| 成人午夜精品无码区久久| 四虎影视成人永久在线播放| 91久久亚洲国产成人精品性色| 日韩国产成人精品视频| 亚洲最大成人网色| 国产精品成人无码久久久| 99国产精品久久久久久久成人热| 成人免费一区二区三区在线观看| 亚洲国产精品成人午夜在线观看| 成人网免费观看| 久久久久99精品成人片试看| 国产成人精品无缓存在线播放| 99精品国产成人一区二区| 国产成人精品男人的天堂网站| 欧美黄成人免费网站大全| 亚洲欧洲精品成人久久曰影片| 在线观看免费成人| 成人国产一区二区三区精品| 亚洲人成人77777网站| 免费一级成人毛片| 国产成人精品久久一区二区小说| 欧美成人a人片| 日韩黄a级成人毛片| 久久久国产成人精品| 久久久久99精品成人片直播| 亚洲成人午夜电影| 亚洲国产成人无码av在线播放| 国产成人影院在线观看| 国产成人精品久久综合| 成人区人妻精品一区二区不卡网站| 成人片在线观看地址KK4444|