libusb在VC6.0下的开发

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

由于要写一个USB下载固件的东西,主要配合更新固件功能,搜集了一些资料,放到了博客里,方便以后查阅。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项,在librarymodule下填写”libusb.lib“,其实主要添加libusb.lib。5.program.#includeusb.h/*usb.h这个头文件是要包括的,里面包含了必须要用到的数据结构*//*我们将一个设备的属性用一个结构体来概括*/typedefstruct{structusb_device*udev;usb_dev_handle*device_handle;/*这里可以添加设备的其他属性,这里只列出每个设备要用到的属性*/}device_descript;/*用来设置传输数据的时间延迟*/#defineUSB_TIMEOUT10000/*厂家ID和产品ID*/#defineVENDOR_ID0xffff#definePRODUCT_ID0xffff/*这里定义数组来保存设备的相关属性,DEVICE_MINOR可以设置能够同时操作的设备数量,用全局变量的目的在于方便保存属性*/#defineDEVICE_MINOR16intg_num;device_descriptg_list[DEVICE_MINOR];//发现DEVICE。发现一个奇怪的问题,VMWARE中不能运行,但是到真实的PC就可以,看来我要启动到PC下开发了。void::OnButtonDevie(){//TODO:Addyourcontrolnotificationhandlercodeherestructusb_bus*bus;structusb_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_numDEVICE_MINOR){g_list[g_num].udev=dev;g_num++;}}}}m_nInfo.Format(”Founded%d\n”,g_num);UpdateData(FALSE);}好了,至此,就可以用USB其他的函数完成读写。6.关键函数使用usb_control_msg--------unsignedcharOutbuf[8];unsignedcharrequest=0x01;Outbuf[0]='1';Outbuf[1]='2';Outbuf[2]='3';Outbuf[3]=0x33;Outbuf[4]=0x44;Outbuf[5]=0x55;Outbuf[6]=0x66;Outbuf[7]=0x77;//usb_control_msg先发送setup包,然后根据发送缓冲区的大小,发送in或out包unsignedcharnbytes=usb_control_msg(M_USBhandle,USB_TYPE_VENDOR|USB_RECIP_DEVICE|USB_ENDPOINT_OUT,request,0x00,0x00,(char*)Outbuf,0x08,5000);usb_control_msg将会引起主机向从机发送setup事件,setup传输的数据阶段就是usb_control_msg函数中的参数,另外,setup事物之后,主机会向从机发送out事物,根据Outbuf的数据和定义的size来发送数据usb_interrupt_write----根据设备定义的中断out端点发送数据,直接以out事务的形式发送usb_interrupt_read--------根据设备的描述符里定义的中断查询时间,主机会以这个间隔来发送int请求,等待从机的数据返回

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功