怎样在VB中把从MSComm控件接收到的二进制数据正确显示出来 点击:4355 | 回复:4



行之路人

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 5回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2004年11月11日
发表于:2004-11-15 09:27:00
楼主
请问在VB中,怎样把从MSComm控件接收到的下位机二进制数据以十六进制正确显示在Label或Text中,我用如下的代码接收并显示,但都是乱码。(MSComm的InputMode属性是1-comInputModeBinary) '定时接收子程序 Private Sub Tmrcomm_Timer() Tmrcomm.Enabled = False Dim Rx_buff() As Byte Dim okstring As String Dim ReceivedLen As Integer If MSComm1.InBufferCount > 0 Then ReceivedLen = MSComm1.InBufferCount Rx_buff = MSComm1.Input okstring = StrConv(Rx_buff, vbUnicode) End If Label1.Caption = okstring End Sub



MCT500

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 4回
  • 年度积分:0
  • 历史总积分:10
  • 注册:2004年9月09日
发表于:2004-11-30 02:20:00
1楼
RX_Buff定义为Variant类型 Rx_buff=MSComm1.Input for i=0 to ubound(Rx_Buff) label1=label & " " & Hex$(Rx_buff(i)) next

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2004-12-15 17:58:00
2楼
dim ok ok = mscomm1.input for i = lbound(ok) to ubound(ok) label1 = label1 + strconv(ok(i)) next

林湘建

  • 精华:18帖
  • 求助:0帖
  • 帖子:49帖 | 1012回
  • 年度积分:0
  • 历史总积分:1686
  • 注册:2003年4月07日
发表于:2004-12-16 11:46:00
3楼
先读出来,保存到数组,然后转换,我给你转换函数:Public Function strtohexstr(src() As Byte, ln As Integer) Dim i As Integer Dim st As String Dim temp As Integer For i = 0 To ln - 1 temp = src(1)\ 16 If temp > 9 Then temp = temp + 55 Else temp = temp + 48 End If st = st & Chr(temp) temp = src(1)Mod 16 If temp > 9 Then temp = temp + 55 Else temp = temp + 48 End If st = st & Chr(temp) st = st & " " Next strtohexstr = st End Function

行之路人

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 5回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2004年11月11日
发表于:2004-12-27 10:02:00
4楼
多谢

热门招聘
相关主题

官方公众号

智造工程师