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