libusb在VC6.0下的开发
由于要写一个USB下载固件的东西,主要配合更新固件功能,所以不得不又要拾起好长时间没有用的VC了。搜集了一些资料,放到了博客里,大家感兴趣可以看看。
下面记录一下我的开发过程,以后也好回忆起来。
1. 下载LIBUSB-WIN32。安装libusb-win32-filter-bin-0.1.12.1.exe,记得要安装,不然不能测试。
2. 通过VC创建一个DIALOG。
3. 设置好界面
4. 正式开始USB设置
- 拷贝libusb0.dll、libusb.lib、usb.h到刚才创建的目录下。
- 打开VC->Setting->Link下,选择generate项,在library module下填写”libusb.lib “,其实主要添加libusb.lib。
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
相关日志
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.
