#include <usb.h>
#include <stdio.h> #define VERSION "0.1.0"
#define VENDOR_ID 0x0925
#define PRODUCT_ID 0x7001
#define INTERFACE 0
const static int reqIntLen=;
const static int endpoint_Int_in=0x81; /* endpoint 0x81 address for IN */
const static int endpoint_Int_out=0x01; /* endpoint 1 address for OUT */ const static int timeout=; /* timeout in ms */ void bad(const char *why) {
fprintf(stderr,"Fatal error> %s\n",why);
exit();
} usb_dev_handle *find_lvr_hid(); usb_dev_handle* setup_libusb_access() {
usb_dev_handle *lvr_hid;
int retval;
char dname[] = {};
usb_set_debug();
usb_init();
usb_find_busses();
usb_find_devices(); if(!(lvr_hid = find_lvr_hid())) {
printf("Couldn't find the USB device, Exiting\n");
return NULL;
} #ifdef LINUX
retval = usb_get_driver_np(lvr_hid, , dname, );
if (!retval)
usb_detach_kernel_driver_np(lvr_hid, ); #endif retval=usb_set_configuration(lvr_hid, );
if ( retval < ) {
printf("Could not set configuration 1 : %d\n", retval);
return NULL;
}
retval = retval=usb_claim_interface(lvr_hid, INTERFACE);
if ( retval < ) {
printf("Could not claim interface: %d\n", retval);
return NULL;
} return lvr_hid;
} usb_dev_handle *find_lvr_hid()
{
struct usb_bus *bus;
struct usb_device *dev; 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 ) {
usb_dev_handle *handle;
printf("lvr_hid with Vendor Id: %x and Product Id: %x found.\n", VENDOR_ID, PRODUCT_ID);
if (!(handle = usb_open(dev))) {
printf("Could not open USB device\n");
return NULL;
} return handle;
} }
} return NULL;
} /*
void test_control_transfer(usb_dev_handle *dev)
{
// usb_set_altinterface(dev, 0);
usb_release_interface(dev, 0);
}
*/
void test_interrupt_transfer(usb_dev_handle *dev)
{
int r,i;
char answer[reqIntLen];
char question[reqIntLen];
for (i=;i<reqIntLen; i++) question[i]=i;
r = usb_interrupt_write(dev, endpoint_Int_out, question, reqIntLen, timeout);
if( r < )
{
perror("USB interrupt write"); bad("USB write failed");
}
r = usb_interrupt_read(dev, endpoint_Int_in, answer, reqIntLen, timeout);
if( r != reqIntLen )
{
perror("USB interrupt read"); bad("USB read failed");
}
for (i=;i<reqIntLen; i++) printf("%i, %i, \n",question[i],answer[i]);
// usb_set_altinterface(dev, 0);
usb_release_interface(dev, );
} int main( int argc, char **argv)
{
usb_dev_handle *lvr_hid;
if ((lvr_hid = setup_libusb_access()) == NULL) {
exit(-);
}
// test_control_transfer(lvr_hid); //not implemented yet
test_interrupt_transfer(lvr_hid);
usb_close(lvr_hid); return ;
}

最新文章

  1. 【oracle】数据泵expdp与impdp
  2. hive学习
  3. Java多线程与并发库高级应用-可阻塞的队列
  4. Thinkphp 模板中直接对数据处理 模板中使用函数 中文字符串截取
  5. c语言中的指针问题
  6. CentOS下搭建nginx+php环境
  7. 2014年4月份第3周51Aspx源码发布详情
  8. phpcms 在后台增加了一个模型的话,在数据库中就会相应的增加数据库表
  9. C++ 面试题整理
  10. Eclipse中查看JDK源码设置
  11. php 二维数组转换成树状数组(转)
  12. 安装Logstash
  13. python2.6.6安装MySQL-python模块正确方法
  14. Web开发资料
  15. PHP opcache扩展安装
  16. EF 6.x实现dynamic动态查询
  17. qt无法定位程序输入点 于动态链接库 qt5core.dll
  18. spark collect获取所有元素
  19. C# TinyMapper
  20. IOS - IPhone或IPAD,如何恢复出厂操作系统?

热门文章

  1. 生产Web架构优化方案(动态转静态)
  2. HyperLedger Fabric 1.4 超级账本简介(5.2)
  3. POJ 3210 : Coins
  4. ABAP CDS ON HANA-(5)テーブル結合ビュー
  5. 什么是Session共享?请举出使用场景
  6. 5 多线程 模拟qq聊天
  7. 步骤1:JMeter 录制脚本接口测试
  8. 名字管理系统demo
  9. LR创建数据源读取excel
  10. SQL 语句中 exists和not exists的用法