我设备的需求是:将网卡接收到的一帧数据(一帧包括261个数据,每个数据都是一个十六进制如0xc2),通过USB发送到上位机。
我将STM32的USB虚拟串口驱动(V3.1版)按照我的要求进行修改并实现了该功能,起初我USB虚拟串口驱动用的是官方提供的V3.1版本,但是总是出现:串口被占用的bug(见贴https://bbs.21ic.com/frame.php?frameon=yes&referer=http%3A//bbs.21ic.com/iclist-49.html)
然后我使用了V3.4的版本,就没有上面的问题了,但是又出现了新的问题:
在V3.1中我实现将网卡接收到的一帧261个数据发送到上位机的代码是在main()函数的while中不断发送,如下述代码:
while (1)
{
size = ETH_HandleRxPkt(uip_buf);
if (size > 0)
{
USB_SIL_Write(EP1_IN, (u8*) uip_buf, 64);
USB_SIL_Write(EP1_IN, (u8*) (uip_buf+64), 64);
USB_SIL_Write(EP1_IN, (u8*) (uip_buf+128), 64);
USB_SIL_Write(EP1_IN, (u8*) (uip_buf+192), 64);
USB_SIL_Write(EP1_IN, (u8*) (uip_buf+256), 5);
}
}
上述代码在USB虚拟串口V3.1版本中经过测试能够实现将uip_buf数组中261个数据发送到上位机,并可在串口调试助手中显示。
但是我使用了V3.4版本后采用相同的方式确不能发送成功。
请问我USB虚拟虚拟串口V3.4版本连续用USB发送261个数据该如何实现? |