搜索
bottom↓
回复: 2

发送十六进制

[复制链接]

出0入0汤圆

发表于 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。
本菜菜鸟的试用期将过,这个程序事关工作,请帮忙?不胜感激。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入22汤圆

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

出0入0汤圆

 楼主| 发表于 2010-4-19 15:47:32 | 显示全部楼层
回复【1楼】zxq6 小马哈
-----------------------------------------------------------------------
非常谢谢。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 17:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表