Private Sub Command1_Click() Dim cmd As String cmd = Text1.Text MSComm1.Output = cmd & vbCrLf '向串口發(fā)送命令 Text1.Text = "" '清空輸入框 Text1.SetFocus '設(shè)置焦點(diǎn) End Sub
Private Sub MSComm1_OnComm() Dim buffer As String buffer = MSComm1.Input '讀取接收緩沖區(qū)中的數(shù)據(jù) Text2.SelText = buffer '將讀取的數(shù)據(jù)顯示在輸出框中 End Sub
Private Sub Command1_Click() Dim cmd As String Dim hex As String If Option1.Value Then '發(fā)送格式選擇的是文本 cmd = Text1.Text MSComm1.Output = cmd & vbCrLf '向串口發(fā)送命令 ElseIf Option2.Value Then '發(fā)送格式選擇的是16進(jìn)制 hex = Text1.Text '獲取16進(jìn)制字符串 MSComm1.Output = HexToByte(hex) '將16進(jìn)制字符串轉(zhuǎn)換成字節(jié)數(shù)組并發(fā)送給串口 End If
Private Sub MSComm1_OnComm() Dim buffer As String Dim hex As String Dim data() As Byte Dim i As Integer
If Option3.Value Then '接收格式選擇的是文本
buffer = MSComm1.Input '讀取接收緩沖區(qū)中的數(shù)據(jù)
Text2.SelText = buffer '將讀取的數(shù)據(jù)顯示在輸出框中
ElseIf Option4.Value Then '接收格式選擇的是16進(jìn)制
buffer = MSComm1.Input '讀取接收緩沖區(qū)中的數(shù)據(jù)
data = StrToBytes(buffer) '將字符串轉(zhuǎn)換成字節(jié)數(shù)組
hex = ""
For i = 0 To UBound(data)
hex = hex & Right$("00" & Hex(data(i)), 2) & " " '將字節(jié)數(shù)組轉(zhuǎn)換成16進(jìn)制字符串
Next
Text2.SelText = hex '將16進(jìn)制字符串顯示在輸出框中
End If
End Sub
'將16進(jìn)制字符串轉(zhuǎn)換成字節(jié)數(shù)組 Private Function HexToByte(ByVal hex As String) As Byte() Dim length As Integer Dim data() As Byte Dim i As Integer
hex = Replace(Replace(hex, " ", ""), vbCr, "") '去掉空格和回車(chē)符
length = Len(hex) \ 2 '計(jì)算字節(jié)數(shù)組長(zhǎng)度
ReDim data(length - 1) '設(shè)置字節(jié)數(shù)組的長(zhǎng)度
For i = 0 To length - 1
data(i) = Val("&H" & Mid(hex, i * 2 + 1, 2)) '將每?jī)蓚(gè)字符轉(zhuǎn)成一個(gè)字節(jié)
Next
HexToByte = data '返回字節(jié)數(shù)組
End Function
'將字符串轉(zhuǎn)換成字節(jié)數(shù)組 Private Function StrToBytes(ByVal str As String) As Byte() Dim length As Integer Dim data() As Byte
length = Len(str) '計(jì)算字符串長(zhǎng)度
ReDim data(length - 1) '設(shè)置字節(jié)數(shù)組的長(zhǎng)度
data = StrConv(str, vbFromUnicode) '將字符串轉(zhuǎn)換成字節(jié)數(shù)組
StrToBytes = data '返回字節(jié)數(shù)組