libusb在VC6.0下的开发

由于要写一个USB下载固件的东西,主要配合更新固件功能,所以不得不又要拾起好长时间没有用的VC了。搜集了一些资料,放到了博客里,大家感兴趣可以看看。

下面记录一下我的开发过程,以后也好回忆起来。

1. 下载LIBUSB-WIN32。安装libusb-win32-filter-bin-0.1.12.1.exe,记得要安装,不然不能测试。

2. 通过VC创建一个DIALOG。

3. 设置好界面

4. 正式开始USB设置

5 . program.


#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 ];

//发现DEVICE。发现一个奇怪的问题,VMWARE中不能运行,但是到真实的PC就可以,看来我要启动到PC下开发了。

void :: OnButtonDevie()
{
// TODO: Add your control notification handler code here
struct usb_bus *bus;
struct usb_device *dev;
g_num = 0;
usb_init();
usb_set_debug(3);
usb_find_busses();
usb_find_devices();

/* */
for (bus = usb_get_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 ++;
}
}
}
}
m_nInfo.Format(”Founded %d \n”,g_num);
UpdateData(FALSE);
}

好了,至此,就可以用USB其他的函数完成读写了。


Dr.Jack. 2009.6.3







Del.icio.us : ,

该日志未加标签。
News, usb

相关日志

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Leave Comment

(必填)

(必填)