我想问一下内部缓冲上传模式和非内部缓冲上传模式有什么区别。 因为我在连续上传数据的时候都是执行CH375ReadData(mIndex, mData, mLength)后就把我上传的全部数据都接收了 还有CH375ReadData(mIndex, mData, mLength)是在所有上传的数据上传完之后才返回成功吗?那我要是只上传一部分数据那是不是会卡死哦?还是上传mlength长度的数据之后才返回成功啊?
内部缓冲上传模式主要的实现原理是驱动中开一个系统线程在不停的读数据,并把数据给缓冲起来,如果应用层CH375ReadData来取数据的话,就把数据缓冲区里已有的数据给应用层,如果数据量没有达到mLength,就修改mLength,CH375ReadData立即返回. 非内部缓冲上传中的CH375ReadData会等待mLength的数据量,如果没达到mLength,就会一直等待剩余数据,除了下面两种情况CH375ReadData会提前退出,一,设置了超时,并且超时满足,CH375ReadData返回,mLength被修改成实际读到的数据长度;二,CH375ReadData遇到一个零头包(包的长度为0~63)会返回,,mLength被修改成实际读到的数据长度.
还有使用内部缓冲上传模式时读取数据的长度mLength,要是包的整数倍(64的倍数)
我用内部缓冲上传模式读取数据时mlength并不是包的整数倍,也能上传成功啊。我只上传了1000个数据啊。。
另外我对超时这个概念很不清楚额。。按你说的。。只要设置了超时如果上传数据时超时了就会返回。。但是我用的时候经常都是如果单片机没有及时的将数据上传就会出现死机的现象啊。。。这要怎么弄啊?
关于要是包的整数倍(64的倍数),在这种情况下会丢包,如果驱动里缓冲的数据量比mlength大,并且mlength不是包的整数倍的话,最后一个包会被拆开来满足mlength的大小,而剩余的数据就丢失. 超时对内部缓冲上传模式是没有影响的.出现死机的情况很可能是使用非缓冲上传时在等待超时这段时间里,你的消息得不到响应,造成死机的,你可以用多线程来查询数据,这样应该就不会死机了
用vb怎么使用多线程查询啊?我才接触vb很多都不懂额