|
本帖最后由 yutianku 于 2011-4-20 21:10 编辑
USB传输大量数据(接口芯片PDIUSBD12) vb上位机通过调用DLL实现数据传输,现在的问题:只能接收128字节!
部分程序如下:
Function recdata(ByRef prec As Byte, ByVal ilen As Integer)
Dim i, ret, j, k, offset As Integer
Dim ack As Byte
Dim sendbuf(3) As Byte
i = ilen \ 128 '//计算有多少个整数包(每包128字节)
j = ilen Mod 128 '//剩余包数
offset = 0
For k = 1 To i
sendbuf(0) = &H2 ' //命令
sendbuf(1) = offset \ 256 ' //下位机接收缓冲区偏移offset
sendbuf(2) = offset Mod 256
sendbuf(3) = &H80 ' 每次读的字节数128
ret = WriteData(3, sendbuf(0), 4, 3000) '//发送读命令
ret = ReadData(2, prec, 128, 3000) '//读数据
offset = offset + 128
prec = prec + 128
Next k
If j <> 0 Then ' //读不够128字节的数据
sendbuf(0) = &H2
sendbuf(1) = offset \ 256
sendbuf(2) = offset Mod 256
sendbuf(3) = j
ret = WriteData(3, sendbuf(0), 4, 3000) '//发送读命令
If ret <> 4 Then MsgBox "发送错误!", vbInformation, "提示"
End If
ret = ReadData(2, prec, j, 3000) ' //读j个字节
If ret <> j Then MsgBox "发送错误!", vbInformation, "提示"
End If
End If
End Function
我怀疑是这里有问题 prec = prec + 128,但又不知怎么改???
具体是我将接收到的数据放在一个文本框中,当设置为接收128字节时,正确显示,但是当设置接收大于128字节,比如256字节时,就只能显示后128字节数据,前128字节数据丢失了????(我用USB捕获工具能确定已发出256字节)调了好久都没有调出来,请哪位高手赐教一下哦,不胜感激!
|
|