|
您好,本人是菜菜鸟,刚接触到单片机,想用VB做一个程序(如下)发送十六进制"aa bb cc"给单片机,单片机自动反回参数。但我的这处程序发送"aa bb cc"后没有反应,不知道是什么原因,请各位指教。感恩。
Option Explicit
Dim aa As String
Dim bb As String
Dim hexstr$, i&, S
Private Sub command1_Click()
aa = ""
If Text1.Text = "" Then Exit Sub
For i = 1 To Len(Text1.Text)
aa = Text1.Text 'aa & CStr(ZFto16(Mid(Text1.Text, i, 1)))
Next i
Rem Text3.Text = Trim(aa)
Text3.Text = HEX_to_BIN(aa)
MSComm1.Output = HEX_to_BIN(aa) + vbCr ' aa & CStr(ZFto16(Mid(Text1.Text, i, 1))) 'Trim(aa) ' '发送
End Sub
Public Function ZFto16(hz$) As String
If hz = "" Then Exit Function
ZFto16 = Hex(Asc(hz))
End Function
Private Sub Command2_Click()
Unload Form1
MSComm1.PortOpen = False
End
End Sub
Private Sub Command3_Click()
Text2.Text = MSComm1.Input
Rem Text2.Text Trim(MSComm1.Input) & vbCrLf
End Sub
Private Sub Form_Load()
MSComm1.OutBufferCount = 0 '清空发送缓冲区
MSComm1.PortOpen = True
Rem MSComm1.RThreshold = Val(Text2.Text)
DoEvents
Select Case MSComm1.CommEvent
Case comEvCD
Case comEvCTS
Case comEvReceive
Rem Text2.Text = MSComm1.Input
'Text2.Text + Trim(MSComm1.Input) & vbCrLf
Case comEvSend
End Select
End Sub
Public Function HEX_to_BIN(ByVal Hex As String) As String
Dim i As Long
Dim B As String
Hex = UCase(Hex)
For i = 1 To Len(Hex)
Select Case Mid(Hex, i, 1)
Case "0": B = B & "0000"
Case "1": B = B & "0001"
Case "2": B = B & "0010"
Case "3": B = B & "0011"
Case "4": B = B & "0100"
Case "5": B = B & "0101"
Case "6": B = B & "0110"
Case "7": B = B & "0111"
Case "8": B = B & "1000"
Case "9": B = B & "1001"
Case "A": B = B & "1010"
Case "B": B = B & "1011"
Case "C": B = B & "1100"
Case "D": B = B & "1101"
Case "E": B = B & "1110"
Case "F": B = B & "1111"
End Select
Next i
While Left(B, 1) = "0"
B = Right(B, Len(B) - 1)
Wend
HEX_to_BIN = B
End Function
本菜菜鸟现状:最近刚找到工作,以前从来没有接触过单片机,现在比较茫然,不懂得单片机接收到的应该是16进制,还是二制,还是ASCII。
本菜菜鸟的试用期将过,这个程序事关工作,请帮忙?不胜感激。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|