首页 > 编程知识 正文

linux怎么查看usb是否挂载,linux读取usb数据

时间:2023-05-06 09:53:03 阅读:149180 作者:4448

某libusb介绍了libusb设计了一系列可以操作硬件的外部API并调用到APP应用程序中。 从libusb的源代码中可以看出,这些API调用内核的底层接口,与kernel driver中使用的函数实现的功能几乎相同,但libusb与USB规范相近。 libusb的使用也比开发内核驱动相对容易。

二libusb的外部接口2.1核心初始化函数

1) usb_init

函数定义: voidUSB_init(void );

函数功能: libusb初始化,这一步必须首先执行。

2)usb_find_busses

函数定义: intUSB_find_busses(void );

找到系统上的usb总线。 所有usb设备都通过usb总线与计算机总线进行通信。 此函数返回总线数,失败返回负值。

3) usb_find_devices

函数定义: intUSB_find_devices(void );

找到总线上的usb设备。 必须在调用usb_find_busses ()之后使用此函数。 此函数将正常返回设备数量,失败将返回负值。

4)usb_get_busses

函数定义: struct USB _ bus * USB _ get _ busses (void );

函数:返回全局变量usb_busses,用于检查总线链接列表以查找总线usb设备。 失败返回空值。

2.2设备操作函数

5)usb_open

函数定义: USB _ dev _ handle * USB _ open (struct * USB _ device dev );

功能:打开usb设备,参照的usb_dev_handle和usb_device构造体分别用usb设备操作句柄和usb设备描述符具体定义可视头文件。 函数返回usb设备的操作句柄,所有后续对usb设备的操作都通过该句柄进行。

6) usb_close

函数定义: intusb _ close (USB _ dev _ handle * dev );

函数:支持usb_open,关闭设备,必须调用,返回0成功,0失败。

7) usb_set_configuration

函数定义: intusb _ set _ configuration (USB _ dev _ handle * dev,int configuration );

功能:设置当前设备使用的配置模式。 参数configuration是要使用的configurtation descriptoes的bConfigurationValue (函数成功0,失败0 ) )一个设备包含多个bConfigurationValue

8) usb_claim_interface

函数定义: intusb _ claim _ interface (USB _ dev _ handle * dev,int interface );

功能:注册与操作系统通信的接口。 这个函数必须被调用。 因为只有注册了接口,才能进行适当的操作(例如发送接收数据)。

界面是指bInterfaceNumber . (以下说明的usb_release_interface与此相对应,也是必须调用的函数。 )

9) usb_release_interface

函数定义: intusb _ release _ interface (USB _ dev _ handle * dev,int interface );

功能:注销在usb_claim_interface函数中调用的接口,释放资源,与usb_claim_interface相对应使用。 请记住,在程序结束时,一定要注销界面。 否则,下次注册接口时可能会报告错误。

10) usb_set_altinterface

函数定义: intusb _ set _ alt interface (USB _ dev _ handle * dev,int alternate );

功能:在当前接口上设置活动(起作用)设置。 这意味着激活当前接口。 alternate是接口描述符的bAlternateSetting字段。 成功返回0,失败返回负值。

11)usb_clear_halt

函数定义: int usb_clear_halt (usb_dev_handle *dev, unsigned int ep);

函数功能:复位指定的endpoint,参数ep 是指bEndpointAddress。这个函数用来替代usb_resetep函数。

注:libusb四种传输方式详细介绍可见http://blog.chinaunix.net/uid-25314474-id-3040231.html

2.3 数据通讯

12) usb_bulk_write

函数定义:int usb_bulk_write(usb_dev_handle *dev, int ep, const char *bytes, int size, int timeout);

函数功能:向usb设备批量写数据,*dev为设备操作句柄,ep为传入指定的端点号,*bytes为发送的数据地址,size为发送的数据长度,timeout 为超时时间(ms)。成功返回实际写入设备的字节数,失败返回负值。

13) usb_bulk_read

函数定义:int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size, int timeout);

函数功能:批量读usb设备传过来的数据,*dev为设备操作句柄,ep为传入指定的端点号,*bytes为接收的数据地址,size为预计接收的数据长度,timeout 为超时时间(ms)。成功返回实际写入设备的字节数,失败返回负值。

14) usb_interrupt_write

函数定义:int usb_interrupt_write(usb_dev_handle *dev, int ep, const char *bytes, int size, int timeout);

函数功能:以中断的方式向usb设备写数据,*dev为设备操作句柄,ep为传入指定的端点号,*bytes为发送的数据地址,size为发送的数据长度,timeout 为超时时间(ms)。成功返回实际写入设备的字节数,失败返回负值。

15) usb_interrupt_read

函数定义:int usb_interrupt_write(usb_dev_handle *dev, int ep, const char *bytes, int size, int timeout);

函数功能:以中断的方式usb设备传过来的数据,*dev为设备操作句柄,ep为传入指定的端点号,*bytes为接收的数据地址,size为预计接收的数据长度,timeout 为超时时间(ms)。成功返回实际写入设备的字节数,失败返回负值。

16) usb_control_msg

函数定义:int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, int value, int index, char *bytes, int size, int timeout);

函数功能:以控制请求的方式读写数据,从默认的管道发送和接受控制数据传入参数与 usb 协议保持一致。成功返回实际读写的字节数,失败返回负值。

17) usb_get_string

函数定义:int usb_get_string(usb_dev_handle *dev, int index, int langid, char *buf, size_t buflen);

函数功能:获取设备的字符串描述,通过index和langid索引。返回Unicode字符串到buf中。返回实际写入buf的字节数,负数失败。

18) usb_get_string_simple

函数定义:int usb_get_string_simple(usb_dev_handle *dev, int index, char *buf, size_t buflen);

函数功能:包装了 usb_get_string() 函数,返回指定index索引的字符串描述,并转换到C风格的ASCII。返回写入buf字节数,负数失败。

19) usb_get_descriptor

函数定义:int usb_get_descriptor(usb_dev_handle *dev, unsigned char type, unsigned char index, void *buf, int size);

函数功能:获取设备缺省控制管道的描述符,通过type和index索引。返回实际写入buf的字节数,负数失败。

20) usb_get_descriptor_by_endpoint

函数定义:int usb_get_descriptor(usb_dev_handle *dev, unsigned char type, unsigned char index, void *buf, int size);

函数功能:从设备获取描述符,以type和index索引,以ep标志的控制管道。返回读取字节数,负数失败。

2.3 辅助函数

21) usb_strerror

函数定义:char *usb_strerror(void);

函数功能:根据错误返回值 errno,返回错误码码对应的字符串。

22) usb_set_debug

函数定义:void usb_set_debug(int level);

函数功能:设置 libusb 的调试级别,libusb 支持打印调试信息,level 值为指定的调试级别。

23) usb_device

函数定义struct usb_device *usb_device(usb_dev_handle *dev);

函数功能:根据操作句柄返回对应的 usb_device。

三 libusb 的接口函数相关参数设置

libusb 的接口函数相关参数是依据usb设备本身的硬件参数(如配置模式、接口地址等)所决定的,而查询这些参数的方式有很多,如调用libusb本身的查询函数,但我推荐一个更好的方法,用“USB查看器usbtreeviewV3.1.0软件”可以清晰的获取usb本身的硬件设备。

本文第二部分所列举的函数只是libusb的一部分常用函数,想查看更多的函数,可上

http://libusb.sourceforge.net/api-1.0/api.html

 


转载于:https://blog.csdn.net/jiguangfan/article/details/86546958

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。