用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 IntegerSelect 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 SelectEnd Sub
Private Sub MSComm1_OnComm()
Dim inss() As Byte
Dim indata As String
Dim j As IntegerSelect 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 SelectEnd Sub
直接以文本方式接收
Private Sub Form_Load()
MSComm1.InputMode = comInputModeText
MSComm1.Settings = "9600,7,n,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
End SubPrivate 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
MSComm1.InputMode = comInputModeText
MSComm1.Settings = "9600,7,E,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
End SubPrivate 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
Option Explicit
Dim indata As StringPrivate Sub Form_Load()
MSComm1.InputMode = comInputModeBinary
MSComm1.Settings = "9600,e,7,1"
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
End SubPrivate 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