在用WR_USB_DATA7命令向ch372写数据时,数据块长度的有效值是0至64,如果长度不为0,则单片机必须将后续数据逐个写入CH372。但当用计算机读取ch372上的数据时, CH372被动地等待USB主机在需要时取走数据;当计算机执行读取数据函数时,如果单片机正在向ch372写数据时,是等数据达到数据块长度再读取,还是可以立即读取?
在USB主机读取数据时,只要372上传端点内有数据,就会取走,即使不满64. 流程是这样: 上位机先设定读长度,然后主机去读372的数据, 1.如果没有数据,主机会不停去要,直到超时退出; 2.如果372有数据,会立即取走; 2.如果中途收到未满64字节的包,即使没读到读长度指定的数据,读函数会退出;
有什么办法可以保证每次MCU向372把数据写完了,PC机才取数据。
ls的回复中“2.如果中途收到未满64字节的包,即使没读到读长度指定的数据,读函数会退出;” 的意思是先设定的读长度为64,但收到的包的长度未满64字节,即使读到的数据长度没有64字节,读函数也会退出吗?
ls回复中“如果372有数据,会立即取走;”此时CH375ReadData函数的返回值是什么? 如果立即取走,那么返回值岂不是总在变化?
主机取走不意味着CH375READDATA函数会立即返回; 如果函数返回时,会是读取到指定长度的数据,或者超时时间已到,或者是遇到一个小于64字节的包时函数会返回,长度值会是在函数返回时已收到的数据长度,返回值会是TRUE.