#include <usb.h>
/* usb.h
这个头文件是要包括的,里面包含了必须要用到的数据结构
*/
/*
我们将一个设备的属性用一个结构体来概括
*/
typedef struct
{
struct usb_device* udev;
usb_dev_handle* device_handle;
/*
这里可以添加设备的其他属性,这里只列出每个设备要用到的属性
*/
} device_descript;
/*
用来设置传输数据的时间延迟
*/
#define USB_TIMEOUT 10000
/*
厂家
ID
和产品
ID */
#define VENDOR_ID 0xffff
#define PRODUCT_ID 0xffff
/*
这里定义数组来保存设备的相关属性,
DEVICE_MINOR
可以设置能够同时操作的设备数量,用全局变量的目的在于方便保存属性
*/
#define DEVICE_MINOR 16
int g_num;
device_descript g_list[ DEVICE_MINOR ];
/*
我们写个设备先找到设备,并把相关信息保存在
g_list
中
*/
int Device_Find()
{
struct usb_bus *bus;
struct usb_device *dev;
g_num = 0;
usb_find_busses();
usb_find_devices();
/*
寻找设备
*/
for (bus = usb_busses; bus; bus = bus->next) {
for (dev = bus->devices; dev; dev = dev->next) {
if(dev->descriptor.idVendor==VENDOR_ID&& dev->descriptor.idProduct == PRODUCT_ID) {
/*
保存设备信息
*/
if (g_num < DEVICE_MINOR) {
g_list[g_num].udev = dev;
g_num ++;
}
}
}
}
return g_num;
}
/*
找到设备后,我们根据信息打开设备
*/
int Device_Open()
{
/*
根据情况打开你所需要操作的设备,这里我们仅列出伪代码
*/
if(g_list[g_num].udev != NULL) {
g_list[g_num].device_handle = usb_open(g_list[g_num].udev);
}
}
/*
下面就是操作设备的函数了,我们就不列出来拉,大家可以参考上面的介绍
*/
int DeviceWite(int handle)
{
/*
填写相关代码,具体查看设备协议
*/
}
int DeviceOpen(int handle)
{
/*
填写相关代码,具体查看设备协议
*/
}
/*
最后不要忘记关闭设备
*/
void Device_close(int handle)
{
/*
调用
usb_close */
}
0人
|
了这篇文章 |
点击图片可刷新验证码请点击后输入验证码博客过2级,无需填写验证码
同时赞一个