
圖為運行時的結果,回傳的是ASCII碼值,而不是數值
我編的程式界面不是就一個串口,還有其他的,串口只是想簡單的發送和接收資料
程式:
Private Sub Command18_Click()
If Text8.Text = "" Then
pp = MsgBox("發送的資料不能為空!", 16)
Exit Sub
End If
MSComm1.Output = Trim(Text8.Text)
End Sub
Private Sub MSComm1_OnComm()
Dim inx() As Byte
Dim gb_temp As Integer
Dim k As Byte
Dim y As Byte
Select Case MSComm1.CommEvent
Case comEvReceive ' 判斷為接受事件
gb_temp = MSComm1.InBufferSize
gb_temp = MSComm1.InBufferCount
MSComm1.InputLen = CmdLenth ' 設定Input一次從接識訓沖讀取字的節數
inx = MSComm1.Input
MSComm1.InBufferCount = 0
If tongxun_State = 0 Then
For y = 0 To CmdLenth - 1
Text9.Text = Text9.Text & " " & Hex(inx(y))
Next y
End Select
End Sub
uj5u.com熱心網友回復:
LZ的接收代碼是按位元組(Byte)流接收的,需要按通信協議規約的資料格式進行資料處理。uj5u.com熱心網友回復:
具體應該如何處理呢?我還試了用 a = Split(Text8.Text, ",") 但是從string轉換成數值的時候 b(i) = Val(a(i)) 說型別不匹配
定義的時候是
Dim a
a = Split(Text8.Text, ",")
Dim b
ReDim b(0 To UBound(a)) As Long
For i = 0 To UBound(b)
b(i) = Val(a(i))
MSComm1.Output = b
弄了很久就是不行啊,一個字符的話可以gb = Asc(a(0)) - &H30 輸出gb,但是一串字符就不行那~
uj5u.com熱心網友回復:
具體應該如何處理呢?
我還試了用 a = Split(Text8.Text, ",") 但是從string轉換成數值的時候 b(i) = Val(a(i)) 說型別不匹配
定義的時候是
Dim a
a = Split(Text8.Text, ",")
Dim b
ReDim b(0 To UBound(a)) As Long
For i = 0 To UBound(b)
b(i) = Val(a(i))
MSComm1.Output = b
弄了很久就是不行啊,一個字符的話可以gb = Asc(a(0)) - &H30 輸出gb,但是一串字符就不行那~
uj5u.com熱心網友回復:
Dim strTmp As Stringinx = MSComm1.Input
strTmp = StrConv(inx, vbUnicode)
MSComm1.InBufferCount = 0
If tongxun_State = 0 Then
For y = 0 To CmdLenth - 1
Text9.Text = Text9.Text & " " & Mid(strTmp, y, 1)
Next y
End If
uj5u.com熱心網友回復:
自己處理一下就好了。uj5u.com熱心網友回復:
ASC()處理一下就好了轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/109513.html
標籤:VB基礎類
