我用MSCOMM读取内存中的数据,得到的是乱码!!!高位高手认识这些码!怎么转换呢??

wangchong 2003-09-05 10:29:27
Private Sub Form_Load()
Dim CardNameLen As Long
'ʹÓÃcom1¿Ú¡£
MSComm1.CommPort = 1
MSComm1.InputMode = comInputModeText
MSComm1.RThreshold = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.InputLen = 12
End Sub

Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
Call ReceiveDataFromCom
End Select
End Sub

Sub ReceiveDataFromCom()
Dim ComTemp As Variant
Dim ReadData() As Byte
Dim InbufferCount As Long
Dim i As Integer
Dim Str As String
Str = ""
InbufferCount = MSComm1.InbufferCount
If InbufferCount < MSComm1.InputLen Then
Exit Sub
End If
If InbufferCount >= MSComm1.InputLen Then
ComTemp = MSComm1.Input
ReadData() = ComTemp
For i = LBound(ReadData) To UBound(ReadData)
Str = Str & ChrB(ReadData(i))
Next i
Text1.Text = vbCrLf & Str
End If
End Sub

读到的数据是这样的:“x€x€xx”,“x€xx”,“øx€”这是什么码?怎么办?
...全文
146 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujianguangljg 2003-09-05
  • 打赏
  • 举报
回复
up
Gelim 2003-09-05
  • 打赏
  • 举报
回复
If InbufferCount >= MSComm1.InputLen Then
ComTemp = MSComm1.Input
ReadData() = ComTemp
For i = LBound(ReadData) To UBound(ReadData)
Str = Str & ChrB(ReadData(i))
Next i
Text1.Text = vbCrLf & Str
End If

改为:

If InbufferCount >= MSComm1.InputLen Then
ComTemp = MSComm1.Input
ReadData() = ComTemp
Text1.Text = vbCrLf & strconv(readdata)
End If
sxs69 2003-09-05
  • 打赏
  • 举报
回复
Dim ReadData() As Byte
ComTemp = MSComm1.Input
这种方式接收数据好象用comInputModeBinary
MSComm1.InputMode = comInputModeBinary

如果用comInputModeText方式那么直接
str = MSComm1.Input就可以了
脆皮大雪糕 2003-09-05
  • 打赏
  • 举报
回复
试一下这个:
str = StrConv(readdata(), vbUnicode)

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧