STM32虚拟串口驱动如何一次发送261个数据给上位机?

2019-03-23 19:27发布

我设备的需求是:将网卡接收到的一帧数据(一帧包括261个数据,每个数据都是一个十六进制如0xc2),通过USB发送到上位机。
     我将STM32的USB虚拟串口驱动(V3.1版)按照我的要求进行修改并实现了该功能,起初我USB虚拟串口驱动用的是官方提供的V3.1版本,但是总是出现:串口被占用的bug(见贴http://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个数据该如何实现? 此帖出自小平头技术问答
0条回答

一周热门 更多>