关于用VB MSCOOM串口控件与单片机通讯的问题
最近在调试仪器的过程中,总是不能完全接受下位机(单片机)发来全部数据(十六进制),总有那么几十个数据遗漏掉,请问各位是什么问题?头痛至极,期待赐教!!!
一切参数设置都正确。电脑与单片机波特率均采用115200,每次通讯数据量大约10万以下,vb mscoom控件的InBufferSize属性值最大为32767,我设置的是InBufferSize=30000,是不是数据溢出了?但有时数据量在30000以下时也会丢数据,到底怎么回事?下面是上位机(电脑测试软件)的部分代码:
Private Sub Comm_OnComm()
Dim IntR as integer
Static Resv As Variant '接收数据
Static DataC As Long '串口数据字节数
Static CTestData() As Byte'用于存放接受的字符
Static FactCount As Long '累计实际接收的数据
static TestFlag Boolean'实验结束标志
TestFlag = false
Comm.RThreshold = 0
FactCount = 0
DataC = Comm.InBufferCount: Resv = Comm.Input
ReDim CTestData(100000)
For IntR = 0 To DataC - 1
CTestData(IntR) = Resv(IntR)
FactCount = FactCount + 1
Next IntR
Static CurrTime As Long '等待时间
CurrTime = GetTickCount
'一直接受数据,直到接受完成为止
do
If Comm.InBufferCount >= 1000 Or Abs(GetTickCount - CurrTime) >= 100 Then
CurrTime = GetTickCount
DataC = Comm.InBufferCount: Resv = Comm.Input
For IntR = 0 To DataC - 1
CTestData(FactCount) = Resv(IntR)
FactCount = FactCount + 1
DoEvents
Next IntR
End If
DoEvents
Endif
Do While Comm.InBufferCount = 0 '无数据则测试结束
debug.print "实验结束"
TestFlag = ture
Exit Do
Loop
if TestFlag then Exit do
Exit Sub
[解决办法]
楼主别重复发帖了
[解决办法]
http://download.csdn.net/source/1262066
[解决办法]
建议楼主使用上面的那个串口调试器调试一下,看看是否会出现用你自己程序所出的问题?
[解决办法]
建议看看猴哥的缓冲池代码.