xuesheng123 发表于 2010-4-19 15:31:42

发送十六进制

您好,本人是菜菜鸟,刚接触到单片机,想用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。
本菜菜鸟的试用期将过,这个程序事关工作,请帮忙?不胜感激。

zxq6 发表于 2010-4-19 15:37:17

楼主,想来,你应该说的是ASCII,而不是ANSII把?
在计算机里面,二进制和16进制是一样的,就像0b01010101和0x55是等价的一样。而ASCII又跟16进制有关。比如‘1’就是十六进制0x31.
不知道你的vb基础如何,如果好的话,你去找一些网上的串口通信程序,看看,就基本明白了。

xuesheng123 发表于 2010-4-19 15:47:32

回复【1楼】zxq6 小马哈
-----------------------------------------------------------------------
非常谢谢。
页: [1]
查看完整版本: 发送十六进制