创建博客 登录  
 关注
   显示下一条  |  关闭

Hartley 开发

软硬件开发的乐园

 
 
 

日志

 
 

vc6 & libusb  

2008-10-10 16:50:38|  分类: VC |  标签: |字号 订阅

偶然间把一个usbbulk 的实验在java 里实现了,刚才又在VC 下用libusb 做了一个,虽然很简单,但也是遇到一个问题,在这里记下,为了备忘,也为了让同路人少走弯路。
    
首先 usb.h libusb0.dll libusb.lib 放到工程目录里,然后就是要在project setting 里添加libusb.lib 如下图:

vc6  libusb - Aoner - Hartley 开发

 

然后就是写代码了,开始的时候不知道流程,总提示 could not claim interface 0 , 却不知道怎么办,偶尔在http://lists.alioth.debian.org/pipermail/sane-devel/2003-February/006638.html

看到usb_set_configuration(hdev, 1);

于是有了下面测试成功的程序:

       // usb_paul.cpp : Defines the entry point for the console application.

//paul phenix s-yaojing@163.com

 

#include "stdafx.h"

#include "usb.h"

 

#define  USB_VID 0x547

#define  USB_PID 0x1002

 

int main(int argc, char* argv[])

{

       struct usb_bus *bus;

       struct usb_device *dev;

       usb_dev_handle  *hdev;

       char writedata[] = {1,2,3,4,5};

       char readdata[sizeof(writedata)];  

 

       printf("Hello World!\n");

 

       usb_init();

       usb_set_debug(3);

      

       usb_find_busses();

       usb_find_devices();

 

       for (bus = usb_get_busses(); bus;bus->next)

       {

              for (dev = bus->devices; dev; dev->next)

              {

                     hdev = usb_open(dev);

 

                     if (hdev)

                     {                         

                            int VID = dev->descriptor.idVendor;

                            int PID = dev->descriptor.idProduct;

                           

                    

                            if ((VID == USB_VID)&(PID == USB_PID))

                            {

                                   printf("The PID is 0x%4x \n",PID);

                                   printf("The VID is 0x%4x \n",VID);

                                   usb_set_configuration(hdev, 1);

                                   usb_claim_interface(hdev,0);

                                   usb_bulk_write(hdev,0x04,writedata,sizeof(writedata),2000);

 

                                   usb_bulk_read(hdev,0x88,readdata,sizeof(readdata),2000);

 

                            }

                            printf("Readdata is :\n");

                            for (int i =0 ;i<sizeof(readdata);i++)

                            {

                                   printf("Readdata is %d ",readdata[i]);

                            }                  

                     }

                     usb_close(hdev);

                     break;

              }

              break;

       }

 

 

       return 0;

}

 

其实功能很简单,就是在一个端点写入一组数据,然后在另外的一个端点读出,然后打印出来。在68013上跑的程序是bulkloop

 



  评论这张
转发至微博
转发至微博
0   分享到:        
阅读(1016)| 评论(0)| 引用 (0) |举报

历史上的今天

相关文章

最近读者

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--相关文章--> <#--历史上的今天--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012