当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 高手看下这个程序
帖子发表于 : 2008-11-27 16:39 

注册: 2008-11-23 11:36
帖子: 13
送出感谢: 0 次
接收感谢: 0 次
代码:
//从一个USB设备(U盘)里读取一个BUF_SIZE的数据到BUF中,什么也没读到阿
#include<usb.h>
#include<stdio.h>
#include<string.h>
#define BUF_SIZE 1024
#define USB_TIMEOUT 1000
#define VENDOR_ID  0x0204  //USB设备的厂商编号
#define PRODUCT_ID 0x6025  //USB设备的产品编号
usb_dev_handle* Device_Find();
int Device_Read(usb_dev_handle* handle,char readBuf[]);
int Device_Close(usb_dev_handle *handle);
usb_dev_handle *tavor_udev;//USB设备句柄
int main()
{
    int readLen;
    char BUF[BUF_SIZE+1];
    Device_Find();
    if(!tavor_udev)
    {
       printf("cannot open USB devices!\n");
       exit(1);
    }
    readLen=Device_Read(tavor_udev,BUF);//这里的返回值readLen好像是对的,等于BUF的空间大小
    printf("%d\n",readLen);
    if(readLen<0)
       printf("failed to read data from USB devices!\n");
    else
    {
      printf("%s  %d\n",BUF,strlen(BUF)); //但是BUF里面什么也没有
    }
   Device_Close(tavor_udev);
   return 0;
}
usb_dev_handle* Device_Find()
{
    struct usb_bus  *bus;
    struct usb_device *dev;
    struct usb_bus  *busses;
    usb_init();
    usb_find_busses();
    usb_find_devices();
    busses=usb_get_busses();
    for(bus=busses;bus;bus=bus->next)
    {
        for(dev=bus->devices;dev;dev=dev->next)
           if(dev->descriptor.idVendor==VENDOR_ID && dev->descriptor.idProduct==PRODUCT_ID)
          {
               tavor_udev=usb_open(dev);
               return tavor_udev;
          }
    }
    printf("USB devices cannot be found!\n");
    return tavor_udev;
}

int Device_Read(usb_dev_handle* handle,char readBuf[])
{
    int readLen;
    usb_claim_interface(handle,0);
   //下面的4个参数0x80,0,0x300,0不知道具体怎么写,网上说的都不清楚
    readLen=usb_control_msg(handle,0x80,0,0x300,0,readBuf,BUF_SIZE,USB_TIMEOUT);
   if(readLen>0)
      readBuf[readLen]='\0';
   usb_release_interface(handle,0);
   return readLen;
}

int Device_Close(usb_dev_handle *handle)
{
    if(handle)
    usb_close(handle);
}

xiaoyuer@xiaoyuer-desktop:~/program/usb$ cc -L/usr/lib -lusb usb.c
xiaoyuer@xiaoyuer-desktop:~/program/usb$ sudo ./a.out
USB devices cannot be found!
cannot open USB devices!
xiaoyuer@xiaoyuer-desktop:~/program/usb$ sudo ./a.out
1024
  0
xiaoyuer@xiaoyuer-desktop:~/program/usb$



页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 1 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译