CH375在进行128个字节的数据上传时,在PC机端的buffer中只保存在前64个mReadBuf[]里,而且是覆盖式的保存。是下位机的问题吗?还是说PC机需要对mReadBuf[]进行什么配置。在下传超过64字节的时候,PC机就是自动将大数据分成小数据包的啊。
有找到资料上说“下位机每次发过一组数据后,没有查看上位机是否接收就发第2组。假如第一次还没被上传就写入了第二组,数据被覆盖掉。”也就是说上位机的程序在执行完第一个数据包的数据后还应该可以继续接收到下位机上传过来的数据是这个意思吧。
这句话的意思是如果你上传的第一包数据没有被主机取走的话就传输第二包,那肯定第一包的数据就被覆盖掉。你这个问题我建议用bushound软件抓一下USB数据包,是到底是下位机还是软件的问题。
CH375端点上传完成后后会产生端点上传中断,128字节分2次上传理论上会产生2次上传中断,你看中断状态是否正确。
在下位机可以看到有两个中断标志,但是这是在第一包数据送到数据口时运行VC6.0程序才能看到的。可是第二包数据读不到上位机里。
下位机是每次上传数据的最大程序是64个字节,但是PC端的使用CH375ReadData一次可最大存储4096个字节。有什么办法可以将所有数据都上传结束后PC端再读数据
上位机端你可以把数据存储到缓冲区,然后后面有数据的时候继续从后面插入,一包完整的数据上传结束后,你可以在自定义一个结束字节,然后上位机把缓冲区里的数据读走处理就行了,当然这只是我给的一个建议,你可以自己看看有么有更好的方法。
我在使用debug372测试自己编写的下位机数据上传程序(2个数据包)。第一个数据包上传成功有0Ah中断标志后,在debug372中“清除数据”,接着运行第二个数据包的上传,但是此时没有上传第二个数据包。两个数据上传的程序一样。每次运行程序的时候都需要对硬件设备进行连接,那是应该在第二段数据上传程序中加上对硬件设备的什么设置吗?但是只有一个硬件复位啊!!抓狂
之前发给你的邮件里还有一个TEST.C的程序,就是通过DEBUG372下传数据,然后下位机取反在返回的,你的收发可以参考那个来进行,另外,端点的数据在发送之前一定要把数据准备好,比如第一包数据发送完成后你要把第二包要发送的数据准备好,另外你可用一款上位机软件BUSHOUND的上位机软件(你百度一下)来监测USB的数据,看看下位机是否上传了第二包数据。
我按照TEST.C的程序改了,小数据的收发是正确的。
使用BUSHOUND,只能读到第一个数据包的数据,读不到第二包的数据。我把程序又改回我最一开始没有判断0Ah的程序,覆盖式的只能读到第二个数据包的数据。我是想问,没有判断是否传输成功,数据是覆盖式的,那为什么没有第一个数据包的数据显示呢?
这个应该是正常的,你不判断第一包发送成功,就发送第二包的话当然第一包就被覆盖掉了,你在0x0A后应该把第二包数据准备好,这样第二包数据就能发出来了。
我就是觉得我现在应该在第二次向buffer中存入数据之前加一些程序,可是BUSHOUND显示完第一包上传数据之后接着运行程序BUSHOUND就不再有任何的变化了。纠结啊