硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1267|回复: 5
收起左侧

usb传输1024字节的整数倍,上位机的libusb无法接受

[复制链接]

7

主题

52

回帖

73

积分

初级会员

积分
73
发表于 2022-4-8 11:53:15 | 显示全部楼层 |阅读模式
用的xilinx 的ZCU106的板子,使用WinUSB驱动,上位机使用的libusb的api接受数据,libusb_bulk_transfer(mUsbHandle, 0x82,(uchar*) readData.data() ,datalen, &bytes,0); 如果板端每次发送1MB的数据,上位机的datalen设置为4MB,那么libusb_bulk_transfer要等接收到了4MB的数据才会退出,请问这是什么原因啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2022-4-8 12:08:20 | 显示全部楼层
这个板子有虚拟串口的例子没,这个魔改起来最简单,方法就是用zagdig重定向下就行。然后就可以方便使用libusb仅需bulk方式访问了。
回复

使用道具 举报

7

主题

52

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2022-4-8 12:38:42 | 显示全部楼层
eric2013 发表于 2022-4-8 12:08
这个板子有虚拟串口的例子没,这个魔改起来最简单,方法就是用zagdig重定向下就行。然后就可以方便使用libu ...

是这么操作的。我用U盘的例子改的。如果libusb_bulk_transfer的datalen设置的和发送端的一样,就可以收到一帧然后往下执行,否则的话,收到的数据必须等于datalen才可以往下执行
回复

使用道具 举报

7

主题

52

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2022-4-8 13:45:27 | 显示全部楼层
eric2013 发表于 2022-4-8 12:08
这个板子有虚拟串口的例子没,这个魔改起来最简单,方法就是用zagdig重定向下就行。然后就可以方便使用libu ...

用的模拟U盘的例子。现在数据可以发送就是发送1024字节的整数倍的时候。libusb_bulk_transfer必须一直收到设定的最大缓冲区才不阻塞
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106833
QQ
发表于 2022-4-8 15:06:22 | 显示全部楼层
可以用我这个里面的例子修改。我的上位机用的libUSB

https://www.armbbs.cn/forum.php?mod=viewthread&tid=90026
回复

使用道具 举报

7

主题

52

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2022-4-8 15:38:44 | 显示全部楼层
eric2013 发表于 2022-4-8 15:06
可以用我这个里面的例子修改。我的上位机用的libUSB

https://www.armbbs.cn/forum.php?mod=viewthread&t ...

就是参考这个例子的。数据是1024字节的整数倍就有点问题,不知道是不是xilinx裸机的驱动有问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-7 00:33 , Processed in 0.281736 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表