求教win7下使用mscomm控件的问题
win7下使用mscomm的控件总,一次接收一个数据没问题,但是一次接收6个字节的数据的时候,把接收的数据先放到一个string里,然后存入一个byte的数组,但是数组总是运行提示下标越界。但是我机子是win7的,而且程序的编译生成都是在win7的环境下进行的,别的的win7下用自带串口就出下标越界的错误。是不是win7下的mscomm的使用时候接收的数据个数有问题??
[解决办法]
我不认为是系统的问题,应该是程序对接受数据处理有略为不妥的地方。建议你把代码贴上来
[解决办法]
嗯,贴代码。
Private Sub MSComm_OnComm()
Dim a&
Dim recbuf() As Byte
Dim inlen As Integer
Dim i As Integer
Dim x As Variant
'On Error GoTo error1
Select Case MSComm.CommEvent
Case comEvReceive
inlen = MSComm.InBufferCount
Do Until inlen >= 6
DoEvents
inlen = MSComm.InBufferCount
Loop
ReDim recbuf(0 To inlen - 1)
recbuf = MSComm.Input
Case comFrame
x = MsgBox("帧错误!", vbCritical, "接受数据错误!!")
Exit Sub
Case comEventOverrun
x = MsgBox("数据丢失", vbCritical, "接受数据错误!!")
Exit Sub
End Select
Select Case recbuf(1)
问题在于我一调用recbuf数组中的任意元素都会出现下标越界
[解决办法]
Private Sub MSComm_OnComm()
Dim a&
Dim buffer As String
Dim recbuf(0 To 5) As Byte
Dim inlen As Integer
Dim i As Integer
Dim x As Variant
Dim c As Variant
On Error GoTo error1
Select Case MSComm.CommEvent
Case comEvReceive
inlen = MSComm.InBufferCount
Do Until inlen >= 6
DoEvents
inlen = MSComm.InBufferCount
Loop
i = 0
For Each c In MSComm.Input
recbuf(i) = c
i = i + 1
Next c
Case comFrame
x = MsgBox("帧错误!", vbCritical, "接受数据错误!!")
Exit Sub
Case comEventOverrun
新代码,问题已解决,谢谢一楼
[解决办法]
是这台机器更快了。几句代码运行的时间,不足以让串口传输 6 字节。
[解决办法]
该回复于2012-09-28 09:19:40被版主删除
[解决办法]