乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      串口技術(shù) BCD碼

       夢中家園 2012-10-10
      我有個溫度巡回監(jiān)測儀需要與電腦進行通訊,要求電腦及儀表發(fā)射的編碼均含有BCD壓縮碼,請哪位高手幫忙用VB6.0編一個采集原程序,謝謝!
       
      最佳答案
      編碼本身都是為了在計算機中運算使用。實質(zhì)上,在計算機中只有以高低電平來表示的二進制。至于,BCD碼是一種8421編碼,它將一個字節(jié)分兩部分,高4位代表一個數(shù)字,低4位代表一個數(shù)字。也就是說,計算機怎么識別一個字節(jié)到底是二進制碼還是BCD碼,這是由程序代碼來運算的。
      我的理解可由16進制數(shù)簡化理解:
      每2個BCD碼構(gòu)成一字節(jié),接收到每字節(jié)二進制數(shù)據(jù)需處理成16進制的字符形式。僅是由00-99的范圍。而非00-FF范圍。
      同樣發(fā)送的10進制數(shù)以每2個BCD碼組成1個16進制數(shù)形成二進制的一個字節(jié)發(fā)送來達到目的。
      基于如上設(shè)想所做的收發(fā)代碼如下:
      Option Explicit

      Private Sub cmdSend_Click()
      Call Timer1_Timer
      End Sub

      Private Sub Form_Load()
      Me.MSComm1.CommPort = 1
      Me.MSComm1.PortOpen = True
      Me.MSComm1.RThreshold = 1
      txtSend = "1234"
      txtReceive = ""
      Timer1.Interval = 0
      End Sub

      Private Sub MSComm1_OnComm()
      On Error Resume Next
      Dim BytesReceived() As Byte
      Dim buffer As String
      Dim HData As String
      Dim i As Integer
      Select Case MSComm1.CommEvent
      Case comEvReceive '接收十六進制數(shù)據(jù)。并以十六進制顯示
      MSComm1.InputLen = 0
      MSComm1.InputMode = comInputModeBinary '設(shè)置當前以二進制數(shù)接收數(shù)據(jù)
      buffer = MSComm1.Input '接收數(shù)據(jù)至字符串中
      BytesReceived() = buffer '將數(shù)據(jù)轉(zhuǎn)入BYTE中
      For i = 0 To UBound(BytesReceived) '顯示結(jié)果以十六進制顯示
      If Len(Hex(BytesReceived(i))) = 1 Then
      HData = HData & "0" & Hex(BytesReceived(i))
      Else
      HData = HData & Hex(BytesReceived(i))
      End If
      txtReceive.Text = HData '最后將結(jié)果后入txtreceive中
      MSComm1.OutBufferCount = 0 '清除發(fā)送緩沖區(qū)
      MSComm1.InBufferCount = 0 '清除接收緩沖區(qū)
      Next
      End Select
      End Sub

      Private Sub Timer1_Timer()
      On Error Resume Next
      Dim bytData(1) As Byte
      Dim i As Integer
      For i = 1 To 4 Step 2
      bytData((i - 1) / 2) = Val("&H" & Mid(txtSend, i, 2))
      Next
      MSComm1.Settings = "9600,n,8,1"
      Call SendData(bytData) '發(fā)送命令
      End Sub
      Public Function SendData(ByRef bytData() As Byte) As Long
      On Error Resume Next
      MSComm1.InBufferCount = 0 '清空接收緩沖區(qū)
      MSComm1.Output = bytData '發(fā)送數(shù)據(jù)
      Do
      DoEvents
      Loop Until MSComm1.OutBufferCount = 0 '等待,直到數(shù)據(jù)發(fā)送完畢
      MSComm1.OutBufferCount = 0 '清空發(fā)送緩沖區(qū)
      End Function

      附件:Bcd.rar

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多