如何使用libusb开发_在IBM AIX中使用libusb开发应用程序

libusb是一个C库,应用程序开发人员可以使用它来编写用于访问USB设备的用户空间驱动程序。 应用程序开发人员无需依赖要为新的USB设备开发的操作系统驱动程序。 可以使用libusb框架公开的API在用户级别开发驱动程序,而libusb框架又调用特定于OS的API。 您可以在http://libusb.info/中找到有关libusb更多信息。

当前支持的Linux®,OS X,Microsoft®Windows®,Android,OpenBSD等都是低端系统。 libusb已被libusb移植并libusb支持,IBM®AIX®是Big-endian操作系统。 应用程序开发人员必须在其现有的libusb应用程序中更改其大尾数敏感代码,以在AIX上运行。 本文清楚地说明了如何编写libusb应用程序以及如何在现有应用程序中更改代码的实例,以使其能够在大型字节序系统(例如AIX)上运行。

安装与配置

可以从以下位置下载用于AIX的libusb rpm: https : //public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/libusb/

可以使用以下命令将rpm安装在AIX系统上:

#rpm -ivh libusb-1.0.19-1.aix7.1.ppc.rpm

支持libusb的最低AIX版本是7.2TL1和7.1TL4SP3。

默认情况下禁用AIX中的libusb支持。 必须通过运行以下命令来设置ODM变量来启用它:

#chdev –a usblibconfig="available" –l usb0

usb0应该处于定义状态,以上命令才能成功执行。 上面的命令以及cfgmgr命令可以发现libusb设备。

了解libusb设备

libusb设备在/ dev文件系统中创建。 这些设备的父级是usb0

libusb是通过设置启用usblibconfig属性availablelibusb设备曝光率,为孩子usb0

您可以通过运行以下命令列出所有USB设备:

# lsdev -C | grep usb

对于具有标准操作系统客户端驱动程序的设备(例如闪存驱动器,键盘和鼠标),每个设备都表示为两个设备。 一个是操作系统设备,另一个是libusb设备。 例如,如果将闪存驱动器连接到AIX系统,则操作系统客户端驱动程序将设备枚举为usblibdev0libusb枚举设备为usbms0 。 如果没有操作系统客户端驱动程序要求一个设备,则该设备仅代表一个设备。 例如,如果将USB摄像机连接到AIX系统,则它将仅表示为usblibdev1

对于每个libusb设备(也具有AIX操作系统内置客户端驱动程序的设备),在ODM中会创建一个名为usbdevice的新属性,以标识libusb设备的相应客户端驱动程序的设备。 以下示例显示如何将libusb设备与操作系统客户端驱动程序的设备关联:

# lsattr -El usblibdev0 
                speed highspeed USB Protocol Speed of
                Device False 
                usbdevice usbms0 Actual USB Device with Client 
                Driver False

在此示例中,USB设备是闪存驱动器,其具有内置于Mass Storage Class客户端驱动程序(/usr/lib/drivers/usb/usbcd)的AIX操作系统。 usbdevice属性指示与usblibdev0设备关联的客户端驱动程序的设备为usbms0

您可以在以下位置找到有关libusb设备和相关驱动程序的更多信息: https : //www.ibm.com/support/knowledgecenter/ssw_aix_72/com.ibm.aix.ktechrf2/usblibdd_pass.htm

在AIX上编写libusb应用程序

在本节中,说明了使用libusb API的三个示例。 这些示例的说明如下:

listdevs:此示例打印所有连接到AIX系统的设备,并打印其供应商ID(VID),产品ID(PID),总线号,设备地址和端口号。

xusb :此示例从USB设备读取设备描述符,二进制

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用libusb_control_transfer函数通过发送控制命令来关闭设备电源。具体步骤如下: 1. 打开USB设备并获取其设备句柄; 2. 构建控制传输结构体,设置bmRequestType、bRequest、wValue、wIndex和wLength等参数; 3. 调用libusb_control_transfer函数发送控制命令; 4. 关闭设备并释放资源。 以下是示例代码: ``` #include <stdio.h> #include <libusb.h> #define VENDOR_ID 0x1234 #define PRODUCT_ID 0x5678 int main() { libusb_device_handle* handle = NULL; int ret = libusb_init(NULL); if (ret < 0) { printf("Failed to initialize libusb\n"); return 1; } handle = libusb_open_device_with_vid_pid(NULL, VENDOR_ID, PRODUCT_ID); if (handle == NULL) { printf("Failed to open USB device\n"); return 1; } // 构建控制传输结构体 unsigned char bmRequestType = LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_RECIPIENT_DEVICE | LIBUSB_ENDPOINT_OUT; unsigned char bRequest = 0x01; unsigned short wValue = 0x0000; unsigned short wIndex = 0x0000; unsigned char data = 0x00; unsigned short wLength = sizeof(data); // 发送控制命令 ret = libusb_control_transfer(handle, bmRequestType, bRequest, wValue, wIndex, &data, wLength, 0); if (ret < 0) { printf("Failed to send control command\n"); libusb_close(handle); libusb_exit(NULL); return 1; } // 关闭设备并释放资源 libusb_close(handle); libusb_exit(NULL); return 0; } ``` 在上述代码,控制传输结构体的参数可以根据实际情况进行修改,例如bRequest可以改为其它值以实现不同的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值