Private Sub hexReceive()
On Error GoTo Err
Dim ReceiveArr() As Byte ' 接收資料陣列
Dim receiveData As String ' 資料暫存
Dim Counter As Integer ' 接收資料個數計數器
Dim i As Integer ' 回圈變數
If (MSComm.InBufferCount > 0) Then
Counter = MSComm.InBufferCount ' 讀取接收資料個數
receiveData = "" ' 清緩沖
ReceiveArr = MSComm.Input ' 資料放入陣列
For i = 0 To (Counter - 1) Step 1 ' 資料格式處理
If (ReceiveArr(i) < 16) Then
receiveData = receiveData & "0" + Hex(ReceiveArr(i)) & Space(1) ' 小于16,前面加0
Else
receiveData = receiveData & Hex(ReceiveArr(i)) & Space(1) ' 加空格顯示
End If
Next i
TxtReceive.Text = TxtReceive.Text + receiveData ' 顯示接收的十六進制資料
TxtReceive.SelStart = Len(TxtReceive.Text) ' 顯示游標位置
End If
ReceiveCount = ReceiveCount + Counter ' 接收計數
TxtRXCount.Text = "RX:" & ReceiveCount ' 接收位元組數顯示
If ChkAutoClear.Value = 1 Then ' 自動清空判斷
If ReceiveCount >= 65535 Then
TxtReceive.Text = ""
End If
End If
Err:
End Sub
16進制發送時候,除錯 ReceiveArr = MSComm.Input 沒有執行,而十六進制發送是正常的,抓包串口工具顯示有收發,就是接收區沒有顯示,這是為什么啊?
uj5u.com熱心網友回復:
TxtReceive.RefreshTxtRXCount.Refresh
uj5u.com熱心網友回復:
Counter = MSComm.InBufferCount ' 讀取接收資料個數receiveData = "" ' 清緩沖
ReceiveArr = MSComm.Input ' 資料放入陣列
MSComm1.InputLen = 0
uj5u.com熱心網友回復:
剛按錯 重新寫個Counter = MSComm.InBufferCount ' 讀取接收資料個數
receiveData = "" ' 清緩沖
ReceiveArr = MSComm.Input ' 資料放入陣列
在中間加上
MSComm1.InputLen = 0 試試,大概這個樣子
‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
Counter = MSComm.InBufferCount ' 讀取接收資料個數
receiveData = "" ' 清緩沖
MSComm1.InputLen = 0
ReceiveArr = MSComm.Input ' 資料放入陣列
uj5u.com熱心網友回復:
MsComm控制元件的RThreshold 屬性是否設定不等于0?若 Rthreshold 屬性設定為 0(預設值)則不產生 OnComm 事件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/76768.html
標籤:VBA
下一篇:隨機生成字母加數字
