Libusb显示新设备

时间:2015-01-16 16:40:23

标签: c++ c linux libusb libusb-1.0

首先,我必须说我是libusb的新手。我有一个usb设备,我在linux中为这个设备编写代码。在我的代码中,我正在显示设备'供应商和产品ID。之后,我将数据从主机发送到设备。正如所料,产品ID正在发生变化。在这种变化之后我想要显示设备'供应商和产品ID再次。尽管我在终端中编写lsusb时看到了新的产品ID,但我无法显示代码。但是当我再次运行程序时,我可以显示。代码流程如下:

  struct    libusb_device_handle     *devh    = NULL;
              libusb_device                **devs;
              libusb_device                **devs2;
              libusb_context               *context1 = NULL;
              libusb_context               *context2 = NULL;    
              libusb_config_descriptor *config;

  libusb_init(&context1);

  libusb_set_debug(context1,3);

  counter = libusb_get_device_list(context1,&devs);

  printf("Devices in List.\n");
  ssize_t i;

  for(i = 0; i < counter; i++) printdev(devs[i]); // display function is printdev

之后,我发送数据和产品ID随着这些数据而变化。在此更改之后,我想显示新的设备列表,首先,我要发布设备列表并关闭会话。

libusb_free_device_list(devs,1);
libusb_exit(context1);

关闭会话后,我正在初始化新会话,我想获得新的设备列表。为此,我这样做:

 libusb_init(&context2);
 counter = libusb_get_device_list(context2,&devs2);
 for(i = 0; i < counter ; i++) printdev(devs2[i]);

但我无法显示新的设备列表。我可以显示旧设备列表。只有我可以通过再次运行程序显示新设备列表。在第一次产品ID更改过程后,我也可以用lsusb显示更改。

我不知道问题所在。

感谢您的帮助。

0 个答案:

没有答案