易语言教程_易语言源码_易语言写挂_易语言论坛_看流星社区

 找回密码
 注册
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
零基础辅助入门教学 原创 高清 专业课程售后(每日解答)
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
赞助广告位 请点击这里联系站长 QQ20209081
查看: 1132|回复: 2

vb串口通信中怎么实现16进制的接收?

[复制链接]
发表于 2014-7-30 09:13:27 | 显示全部楼层 |阅读模式
Private Sub Form_Load()
  MSComm1.CommPort = 1
  MSComm1.Settings = "9600,n,8,1"
  MSComm1.InputMode = 0
  MSComm1.RThreshold = 1
  MSComm1.PortOpen = True
End Sub

Private Sub cmdSend_Click()
  MSComm1.Output = Textsend.Text
  End Sub
Private Sub MSComm1_OnComm()
Dim intInputLen As Integer
Select Case Me.MSComm1.CommEvent
Case comEvReceive
TextReceive.Text = TextReceive.Text + MSComm1.Input
End Select
End Sub
Private Sub Cmdauto_Click()
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
MSComm1.Output = Textsend.Text
TextReceive.Text = TextReceive.Text + MSComm1.Input
End Sub
Private Sub Cmdstop_Click()
Timer1.Enabled = False
End Sub
Private Sub Cmdquit_Click()
  MSComm1.PortOpen = False
  End
End Sub
Private Sub CmdReceivecl_Click()
TextReceive.Text = ""
End Sub
Private Sub Cmdsendcl_Click()
Textsend.Text = ""
End Sub

上面是实现文本类型的通信,怎样加入十六进制接收的功能?
发表于 2014-7-30 09:13:40 | 显示全部楼层
实现16进制接收实质就是按2进制接收
设置MSComm控件的属性InputMode = comInputModeBinary '二进制接收
接收后由HEX函数转为16进制字符串形式显示
Option Explicit
    Dim strData As String
    Dim bytInput() As Byte

Private Sub MsComm1_OnComm()
    Dim intInputLen As Integer
    Select Case Me.MSComm2.CommEvent
        Case comEvReceive
            '此处添加处理接收的代码
            MSComm1.InputMode = comInputModeBinary '二进制接收
            intInputLen = MSComm1.InBufferCount
            ReDim bytInput(intInputLen)
            bytInput = MSComm1.Input
            jieshou
    End Select
End Sub

Public Function jieshou() '接收数据处理为16进制
    Dim i As Integer
    For i = 0 To UBound(bytInput)
        If Len(Hex(bytInput(i))) = 1 Then
            strData = strData & "0" & Hex(bytInput(i))
        Else
            strData = strData & Hex(bytInput(i))
        End If
    Next
    Text1 = strData
End Function
Private Sub Form_Load()
    MSComm1.CommPort = 1
    MSComm1.InBufferSize = 1024
    MSComm1.OutBufferSize = 512
    MSComm1.Settings = "9600,n,8,1"
    MSComm1.PortOpen = True
    Text1 = ""
End Sub
发表于 2014-7-30 09:14:02 | 显示全部楼层
参考一下吧:

发送代码 :
Dim Send_Chr(5) As Byte
Dim Send_Data As String

Send_Chr(0) = &H68
Send_Chr(1) = &H3
Send_Chr(2) = &H10 '命令
Send_Chr(3) = &H1  '网关
Check_val = 0
For i = 0 To 3
Check_val = Check_val + Send_Chr(i)
Next i
Send_Chr(4) = Check_val '校验

For i = 0 To 5
Text1.Text = Text1.Text & Send_Chr(i) & "  "  此处显示的是6个10进制的数据
Next i
.Output = Send_Chr

接受
Buffer = MSComm1.Input ' 接收一个二进制数据
Arr(0) = AscB(Buffer)     '存入到二进制数组数组中
Receive_Count_Byte = Receive_Count_Byte + 1
Real_Receive = Arr(0) '
Text1.Text = Text1.Text & Real_Receive & "  "   '接收的数据显示到文本框中
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|看流星社区  |网站地图

GMT+8, 2018-9-19 03:30 易语言论坛 易语言导航

Powered by 看流星社区 X3.2

©2011-2016 最好的辅助编程技术论坛

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