產品列表PRODUCTS LIST

            聯系信息

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

            主站蜘蛛池模板: 精品国产一区二区三区麻豆| 国模吧一区二区三区| 亚洲图片一区二区| 国产精品日韩一区二区三区| 久久久精品人妻一区二区三区| 国产主播福利精品一区二区| 99精品一区二区免费视频| 丰满人妻一区二区三区免费视频| 高清精品一区二区三区一区| 国产在线精品一区二区在线观看| 动漫精品一区二区三区3d| 国产一区二区不卡老阿姨| 一区二区无码免费视频网站| 国产av成人一区二区三区| 秋霞日韩一区二区三区在线观看| 亚洲线精品一区二区三区| 精品女同一区二区三区在线| 人妻无码一区二区三区免费| 久久影院亚洲一区| 风间由美在线亚洲一区| 人妻激情偷乱视频一区二区三区| 波多野结衣精品一区二区三区| 日韩免费一区二区三区在线| 亚洲国产精品一区二区第一页| 精品乱子伦一区二区三区| 精品一区二区三区视频| 国产一区风间由美在线观看| 国产日韩精品一区二区在线观看播放| 亚洲一区二区三区精品视频| 日韩在线一区二区| 鲁丝丝国产一区二区| 一区二区三区免费在线视频 | 鲁大师成人一区二区三区| 福利一区二区三区视频午夜观看| 熟妇人妻系列av无码一区二区| 人妻AV中文字幕一区二区三区| 国产成人欧美一区二区三区| 国产激情无码一区二区三区| 精品一区二区三区在线播放视频 | 精品国产福利第一区二区三区| 精品无码一区在线观看|