vb如何将十六进制ascii码转换成相应的字符

mworanger 2011-06-05 10:46:44
用vb6.0的mscomm控件接收pt650d发送的数据,协议为:数据位数 = 7 , 校验位 = 1 (偶数),终止位 = 1,编码标准 = ASCII 码; 波特速率 = 2400, 4800, 9600, 19200 ,结束码 = CR/LF,请问接收程序应该怎么写?

下面的代码能接收到16进制的ascii码,怎么改成相应字符呢?
Private Sub MSComm1_OnComm()
Dim inss() As Byte
Dim indata As String
Dim j As Integer

Select Case MSComm1.CommEvent
Case comEvReceive
inss = MSComm1.Input
For j = LBound(inss) To UBound(inss)
inss(j) = String(2 - Len(Hex(inss(j))), "0") & Hex(inss(j))
indata = indata & Chr("&H" & inss(j))
Next j
Text2.Text = Text2.Text & indata
End Select

End Sub

...全文
1358 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zdingyun 2011-06-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mworanger 的回复:]
用mscomm控件是不是就不用写代码进行校验了啊?
[/Quote]
根据通信协议要求做.LZ的偶校验设置好硬件会替你完成.
mworanger 2011-06-06
  • 打赏
  • 举报
回复
用mscomm控件是不是就不用写代码进行校验了啊?
zdingyun 2011-06-05
  • 打赏
  • 举报
回复
2进制方式接收,显示字符串.
Option Explicit
Dim indata As String

Private Sub Form_Load()
MSComm1.InputMode = comInputModeBinary
MSComm1.Settings = "9600,e,7,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim inss() As Byte
Dim j As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
inss = MSComm1.Input
For j = LBound(inss) To UBound(inss)
indata = indata & Chr(inss(j))
Next j
Text1.Text = indata
End Select
End Sub
zdingyun 2011-06-05
  • 打赏
  • 举报
回复
Private Sub Form_Load()
MSComm1.InputMode = comInputModeText
MSComm1.Settings = "9600,7,E,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim indata As String
Dim j As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
indata = MSComm1.Input
Text2.Text = Text2.Text & indata
End Select
End Sub
zdingyun 2011-06-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 mworanger 的回复:]
用vb6.0的mscomm控件接收pt650d发送的数据,协议为:数据位数 = 7 , 校验位 = 1 (偶数),终止位 = 1,编码标准 = ASCII 码; 波特速率 = 2400, 4800, 9600, 19200 ,结束码 = CR/LF,请问接收程序应该怎么写?

下面的代码能接收到16进制的ascii码,怎么改成相应字符呢?
Private Sub MSComm1_OnComm……
[/Quote]

直接以文本方式接收
Private Sub Form_Load()
MSComm1.InputMode = comInputModeText
MSComm1.Settings = "9600,7,n,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim indata As String
Dim j As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
indata = MSComm1.Input
Text2.Text = Text2.Text & indata
End Select
End Sub
贝隆 2011-06-05
  • 打赏
  • 举报
回复
booksoon 2011-06-05
  • 打赏
  • 举报
回复
条条大道通罗马~~~~
of123 2011-06-05
  • 打赏
  • 举报
回复
inss = MSComm1.Input

indata = StrConv(inss, vbUnicode)

Text2.Text = Text2.Text & indata

7,789

社区成员

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

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