这个程序是用字符接的数据,我要用二进字去接受,然后把二进字转换成字符行,应该如何去做。
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.RTSEnable = 1
MSComm1.RThreshold = 1
MSComm1.InputMode = 1 ’二进字接收
MSComm1.InputLen = 1
MSComm1.InBufferSize = 4096
MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
Dim strfile As String
Dim iLoop As Integer
Dim sChar As String
Dim aa As String
Dim temp As Variant
Dim tembyte() As Byte
Dim k As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
strfile = MSComm1.Input
For iLoop = 1 To Len(strfile)
sChar = Mid(strfile, iLoop, 1)
If sChar = "C" Or sChar = Chr(13) Or sChar = "%" Then
aa = buffer
Call pp(aa)
buffer = vbNullString
End If
Next iLoop
Text1.Text = Text1.Text & sChar
l = Len(buffer)
End Select
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.RTSEnable = 1
MSComm1.RThreshold = 1
MSComm1.InputMode = 1 ’二进字接收
MSComm1.InputLen = 1
MSComm1.InBufferSize = 4096
MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
Dim strfile As String
Dim iLoop As Integer
Dim sChar As String
Dim aa As String
Dim temp As Variant
Dim tembyte() As Byte
Dim k As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
strfile = MSComm1.Input
For iLoop = 1 To Len(strfile)
sChar = Mid(strfile, iLoop, 1)
If sChar = "C" Or sChar = Chr(13) Or sChar = "%" Then
aa = buffer
Call pp(aa)
buffer = vbNullString
End If
Next iLoop
Text1.Text = Text1.Text & sChar
l = Len(buffer)
End Select
End Sub
返回按指定类型转换的 Variant (String)。语法StrConv(string, conversion, LCID)StrConv 函数的语法有下面的命名参数:部分 说明
string 必要参数。要转换的字符串表达式。
conversion 必要参数。Integer。其值的和决定转换的类型。
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。)
设置值conversion 参数的设置值为:常数 值 说明
vbUpperCase 1 将字符串文字转成大写。
vbLowerCase 2 将字符串文字转成小写。
vbProperCase 3 将字符串中每个字的开头字母转成大写。
vbWide* 4* 将字符串中单字节字符转成双字节字符。
vbNarrow* 8* 将字符串中双字节字符转成单字节字符。
vbKatakana** 16** 将字符串中平假名字符转成片假名字符。 vbHiragana** 32** 将字符串中片假名字符转成平假名字符。
vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。
vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。 *应用到远东国别。**仅应用到日本。注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用的国别使用常数 vbWide、vbNarrow、vbKatakana,和 vbHiragana 时,就会导致运行时错误。下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的实际值会随国家/地区而不同。说明在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。
Dim bBuffer() As Byte
Dim iLoop As Integer
Dim bChar As Byte
Dim aa As String
Select Case MSComm1.CommEvent
Case comEvReceive
bBuffer = MSComm1.Input
For iLoop = LBound(bBuffer) To UBound(bBuffer)
bChar = bBuffer(iLoop)
If bChar = ASC("C") Or bChar = 13 Or bChar = ASC("%") Then
aa = buffer
Call pp(aa)
buffer = vbNullString
End If
Next iLoop
buffer = buffer & chr(bChar) '!!!!!
l = Len(buffer)
End Select
End Sub注: 以上代码不能用于含有中文字符的内容的发送,否则标记有!!!!!的行会出现运行时错误
Dim tempStr As String
byt(0) = &HD6
byt(1) = &HD0
byt(2) = &HB9
byt(3) = &HFA
byt(4) = &H41tempStr = StrConv(byt, vbUnicode)Debug.Print tempStrEnd Sub
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
MSComm1.RTSEnable = 1
MSComm1.RThreshold = 1
MSComm1.InputMode = 1 ’二进字接收
MSComm1.InputLen = 1
MSComm1.InBufferSize = 4096
MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
Dim strfile As string
Dim iLoop As Integer
Dim sChar As String
Dim aa As String
Dim temp As Variant
Dim tembyte() As Byte
Dim k As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
tembyte= MSComm1.Input ' tembyte应该为数组
strfile = StrConv(tembyte, vbUnicode)
For iLoop = 1 To Len(strfile)
sChar = Mid(strfile, iLoop, 1)
If sChar = "C" Or sChar = Chr(13) Or sChar = "%" Then
aa = buffer
Call pp(aa)
buffer = vbNullString
End If
Next iLoop
Text1.Text = Text1.Text & sChar
l = Len(buffer)
End Select
End Sub
rivate Sub Command1_Click()
Dim byt(0 To 4) As ByteDim temp(0 To 4) As Byte
Dim tempStr As String
byt(0) = 65
byt(1) = 66
byt(2) = 67
byt(3) = 68
byt(4) = 69
'byt = "ABCDE" ASCII
tempStr = StrConv(byt, vbUnicode)Debug.Print tempStr
End Sub