本帖最后由 Swd21ic 于 2010-3-30 16:45 编辑
程序中使用USB CDC的方式与上位机通讯..用的是标准的那个usbser.sys文件
每次发送64字节包后死等一个全局标志位.. 在发送端点回调函数里面清除这个标志位,以证明数据发送成功. 然后再发下一个64字节.. 直到所有数据发送完成.
在死等的时候做了一个超时的机制. 如果发生了超时则认为USB被拔掉了.
发现一个奇怪的问题.
当使用串口助手打开串口接受板卡USB发送的数据时, 无论发送多少数据都不会有问题.
一旦关掉串口或者在插上USB后根本就不打开串口. 那么间隔一段时间(跟发送数据量大小有密切关系)后的一次发送中.就会发生超时. 也就说主机在既定的时间内没有应答.
现在看上去很像是PC机上有一个缓冲区,如果不打开串口助手读取数据的话,缓冲区一旦接受满了后就不允许下面发送数据了.. 我根据自己的数据量和测量的时间计算了一下.大概时13KB的样子..
大家有没有晓得这个问题的?..谢谢 |