当前位置:编程学习 > VB >>

VB MSCOMM控件读取16进制字串显示乱码问题,急!!!各位大哥,高手,前辈,老鸟们帮帮小弟啊!!!谢谢!!!

我想用MSCOMM控件读取PLC传过来的一组16进制字串,并显示在text1.text里,MSCOMM属性的设置为:
COM:port2
settings:19200,n,8,1(PLC的波特率为19200)
RThreshold:1
[img=http://][/img]问题来了.........
当我分别以InputMode:comInputMdetext或者comIptModebinary读取时
text1.text显示的均是乱码。
comInputMdetext时显示乱码为:r、!之类的
comIptModebinary时显示乱码为:?、e之类的
具体代码如下,前辈们请帮忙解决这个问题啊,小弟在此谢谢了!!!!!
Dim send() As Byte, rev() As Byte, indata As Variant
Private Sub Command1_Click()
ReDim send(1 To 8) As Byte
send(1) = &H1
send(2) = &H3
send(3) = &H0
send(4) = &H14
send(5) = &H0
send(6) = &H10
send(7) = &H4
send(8) = &H2
MSComm1.Output = send()
Text1.Text = MSComm1.Input
End Sub
Private Sub Command2_Click()
MSComm1.PortOpen = False
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
End Sub --------------------编程问答-------------------- http://download.csdn.net/detail/veron_04/1262066 --------------------编程问答--------------------
你想显示什么? --------------------编程问答--------------------

Dim send() As Byte, rev() As Byte, indata As Variant
Private Sub Command1_Click()
ReDim send(1 To 8) As Byte
send(1) = &H1
send(2) = &H3
send(3) = &H0
send(4) = &H14
send(5) = &H0
send(6) = &H10
send(7) = &H4
send(8) = &H2
MSComm1.Output = send()
Sleep 20    '等待20ms,以便串口通信数据交换完成
Text1.Text = MSComm1.Input
End Sub
Private Sub Command2_Click()
MSComm1.PortOpen = False
End Sub
Private Sub Form_Load()
MSComm1.PortOpen = True
End Sub
--------------------编程问答-------------------- 我利用下面的代码,已经可以接收到串口的数据,且TEXT里没乱码了,但是这段代码中
str字符变量的长度会一直递加,有没有好的解决办法,使每次显示的时候不累加上次的
读值?
MSComm1.InputMode = comInputModeBinary
ReDim InData(MSComm1.InBufferCount)
InData = MSComm1.Input
For i = 0 To UBound(InData)
  If Len(Hex(InData(i))) = 1 Then
    str = str & "0" & Hex(InData(i)) & " "
  Else
    str = str & Hex(InData(i)) & " "
  End If
Next --------------------编程问答-------------------- 在发出命令后停顿一段时间是非常必要的

MSComm1.output=...
Sleep 30
MSComm1.InputMode = comInputModeBinary
ReDim InData(MSComm1.InBufferCount)
InData = MSComm1.Input
For i = 0 To UBound(InData)
  If Len(Hex(InData(i))) = 1 Then
  str = str & "0" & Hex(InData(i)) & " "
  Else
  str = str & Hex(InData(i)) & " "
  End If
Next
--------------------编程问答-------------------- Do Until Len(str) < 8
    str = Mid(str, 8)
Loop
For i = 0 To UBound(InData)
  If Len(Hex(InData(i))) = 1 Then
  str = str & "0" & Hex(InData(i)) & " "
  Else
  str = str & Hex(InData(i)) & " "
  End If
Next
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,