<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>

        產(chǎn)品列表PRODUCTS LIST

        聯(lián)系信息

        • 電話:
          13521418576
        • 傳真:
          010-62979724
        首頁 > 技術(shù)與支持 > Visual Basic串口通訊調(diào)試方法
        Visual Basic串口通訊調(diào)試方法
        點(diǎn)擊次數(shù):5197 更新時(shí)間:2009-12-25

        Visual Basic串口通訊調(diào)試方法

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

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

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

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

          .InBufferSize = 40 '設(shè)置緩沖區(qū)接收數(shù)據(jù)為40字節(jié)
          .InputLen = 1 '設(shè)置Input一次從接收緩沖讀取字節(jié)數(shù)為1
          .RThreshold = 1 '設(shè)置接收一個(gè)字節(jié)就產(chǎn)生OnComm事件

         End With

        End Sub

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

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

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

        Private Sub MSC_OnComm()
         DelayTime ‘用來延續(xù)時(shí)間
         ClearText
         With MSC
          Select Case .CommEvent '判斷通信事件
          Case comEvReceive: '收到Rthreshold個(gè)字節(jié)產(chǎn)生的接收事件
           SwichVar 1
           If Out(1) = 2 Then '判斷是否為數(shù)據(jù)的開始標(biāo)志
            .RThreshold = 0 '關(guān)閉OnComm事件接收
           End If
           Do
            DoEvents
           Loop Until .InBufferCount >= 3 '循環(huán)等待接收緩沖區(qū)>=3個(gè)字節(jié)
           ' 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可以計(jì)算從子夜到現(xiàn)在所經(jīng)過的秒數(shù),在Microsoft Windows中,Timer函數(shù)可以返回一秒的小數(shù)部分)

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

        End Sub

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

        Private Sub SwichVar(ByVal nNum As Integer)

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

        End Sub

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

        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毛网站| 国产免费久久精品| 亚洲欧洲高清有无| 野花香在线视频免费观看大全| 亚洲国产精品13p| 精品国产亚洲第一区二区三区| 97人伦色伦成人免费视频| 亚洲色图校园春色| 久久免费的精品国产V∧| 亚洲欧洲无码AV电影在线观看| 日本特黄特色AAA大片免费| 日韩在线免费播放| 亚洲性色AV日韩在线观看| 成人免费毛片内射美女-百度| 亚洲精品自在线拍| 99久久久国产精品免费牛牛四川| 亚洲av中文无码乱人伦在线r▽| 美女被免费网站91色| 久久久久亚洲精品中文字幕| 日本黄页网址在线看免费不卡| 国产免费人成在线视频| 无码一区二区三区亚洲人妻 | 成人免费无码视频在线网站| 亚洲短视频在线观看| 十九岁在线观看免费完整版电影| 亚洲av无码一区二区三区网站 | 亚洲熟妇无码爱v在线观看| 三年片在线观看免费大全电影| 亚洲图片一区二区| 亚洲第一网站免费视频| 中文字幕亚洲精品资源网| 在线看无码的免费网站| 亚洲美女激情视频| 希望影院高清免费观看视频| 亚洲一区无码中文字幕乱码| 国产va精品免费观看| 亚洲中文无码卡通动漫野外| 无码人妻精品一二三区免费| 亚洲乱码av中文一区二区| 国产午夜免费福利红片|