我正在使用Magtek磁卡读卡器并通过USB将该MCR与Android设备连接.当我使用API 12及其以后它工作正常但当我将API版本更改为8时它崩溃并在Log cat中显示以下结果:
04-12 11:39:39.560: E/AndroidRuntime(276): java.lang.NoClassDefFoundError: android.hardware.usb.UsbManager
04-12 11:39:39.560: E/AndroidRuntime(276): at com.magtek.mobile.android.libDynamag.MagTeklibDynamag.openDevice(MagTeklibDynamag.java:98)
04-12 11:39:39.560: E/AndroidRuntime(276): at com.magtek.mobile.android.MagTekDemo.Dynamag.MagTekDemo.onResume(MagTekDemo.java:119)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.Activity.performResume(Activity.java:3823)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.os.Handler.dispatchMessage(Handler.java:99)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.os.Looper.loop(Looper.java:123)
04-12 11:39:39.560: E/AndroidRuntime(276): at android.app.ActivityThread.main(ActivityThread.java:4627)
04-12 11:39:39.560: E/AndroidRuntime(276): at java.lang.reflect.Method.invokeNative(Native Method)
04-12 11:39:39.560: E/AndroidRuntime(276): at java.lang.reflect.Method.invoke(Method.java:521)
04-12 …Run Code Online (Sandbox Code Playgroud) 无论如何我可以在Qt中进行USB编程吗?我正在使用基于Qt 5.0.0版本的Qt Creator 2.6,它是最新的Qt Creator,它与Microsoft Visual Studio 2010编译器一起使用.
我有一个名为" Dreamcheeky Thunder Missile Launcher " 的玩具,我需要对这款基于USB的设备进行编程.
我试过LibUSB,但它搞砸了一切.它甚至重命名了设备端口,我不得不使用USBDview软件撤消所有内容.但我想我安装错误了.我遵循了这些指示.这是64位的指令,但我得到32位,因为说明似乎没有太大的区别(而不是下载文件)我跟着它.这是我下载的 - libusb-win32-bin-1.2.6.0.zip
无论你推荐什么API都没关系,即使是libusb,但请你好好告诉我如何正确安装它.
我的操作系统是Windows 7终极32位.
我正在尝试与PS3的DS3控制器连接.我已经设法C#使用了一个实现,libusb但决定将我的实现移动到java.不幸的是,我转向java并不是那么顺利.该设备似乎在设备列表中找到,但当我尝试打开它时,我收到以下错误"USB错误4:无法打开USB设备:没有这样的设备(可能已断开连接)"
public class Main {
private static final short VID = 0x054c;
private static final short PID = 0x0268;
Context context;
public Main() {
context = new Context();
int result = LibUsb.init(context);
if (result != LibUsb.SUCCESS) {
throw new LibUsbException("Unable to initialize libusb.", result);
}
ByteBuffer data = ByteBuffer.allocate(49);
DeviceHandle ds3Handle = getDeviceHandle(findDevice(VID, PID));
LibUsb.controlTransfer(ds3Handle, (byte)0xa1, (byte)0x1, (short)0x101, (short)0, data, 1000L);
LibUsb.exit(context);
}
private Device findDevice(int vid, int pid) {
Device UsbDevice = …Run Code Online (Sandbox Code Playgroud) 我在我的 ubuntu 机器上做了以下操作:
检查 libudev.h 可用性...不检查 libudev.h 存在...不检查 libudev.h...不配置:错误:请求 udev 支持,但未安装 libudev 标头
我还尝试libudev使用以下命令进行安装sudo apt-get install libudev-dev,但失败并出现以下错误:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libudev1 udev
The following NEW packages will be installed:
libudev-dev
The following packages will be upgraded:
libudev1 udev
2 upgraded, 1 newly installed, 0 to remove and 83 not upgraded.
Need to get 1,197 kB …Run Code Online (Sandbox Code Playgroud) 我是 libusb c 编程的新手。我应该知道 libusb.h 和 usb.h 之间的区别吗?我已经在 Ubuntu(xenial) 中安装了它们,并带有 libusb-1.0-0-dev 和 libusb-dev 包。哪一个更好?它们来自同一个来源 libusb.info 吗?
谢谢,
稍微阅读一下后,我担心我的32位Delphi应用程序无法在Windows 7和其他64位Windows系统上使用libusb 64位驱动程序,并且它无法与我的自定义硬件通信这些系统上的设备.这是真的?如果是,是否有一些解决方法?我在这张照片中遗漏了什么吗?
我试着获取usb stick的urb信息.我写的如下:
#include <sys/ioctl.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <usb.h>
/* #include <stropts.h> */
/* #include <inttypes.h> */
#include <linux/usbdevice_fs.h>
/* #include <asm/byteorder.h> */
/* #include <linux/usb/ch9.h> */
#define USBDEVFS_REAPURB _IOW('U', 12, void *)
int main(int argc, char *argv[])
{
int fd;
int result;
int i;
struct usbdevfs_urb * receive;
receive = malloc(sizeof (struct usbdevfs_urb));
bzero(receive, sizeof (struct usbdevfs_urb));
char file[30];
strncpy (file, argv[1], 30);
if ((fd = open(file, O_RDWR)) < 0) …Run Code Online (Sandbox Code Playgroud) 我需要包libusb用于我正在安装的另一个包.
我尝试了以下似乎安装包,
sudo apt-get install libusb-dev
Run Code Online (Sandbox Code Playgroud)
但是当我尝试安装我得到的其他包时,
configure: error: Package requirements (libusb-1.0 >= 0.9.1) were not met:
No package 'libusb-1.0' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables LIBUSB_CFLAGS
and LIBUSB_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
Run Code Online (Sandbox Code Playgroud)
当我运行命令dpkg -L libusb-dev时,我得到:
/.
/usr
/usr/bin
/usr/bin/libusb-config
/usr/include
/usr/include/usb.h
/usr/lib
/usr/lib/libusb.a
/usr/lib/libusb.la
/usr/lib/pkgconfig
/usr/lib/pkgconfig/libusb.pc
/usr/share
/usr/share/doc
/usr/share/doc/libusb-dev
/usr/share/doc/libusb-dev/html
/usr/share/doc/libusb-dev/html/index.html
/usr/share/doc/libusb-dev/html/preface.html …Run Code Online (Sandbox Code Playgroud) 我在Ubuntu 12.04.5 LTS,x86_64.
我有一个使用libusb与计算机通信的USB设备.一旦我将其插入计算机并运行通信程序,我收到以下错误:
libusb couldn't open USB device /dev/bus/usb/008/004: Permission denied.
libusb requires write access to USB device nodes.
libusb failed to find the Optotrak USB device. Are you sure you have set the udev permissions correctly?
Run Code Online (Sandbox Code Playgroud)
所以,如果我按照以下方式修改/ dev/bus/usb/008/004:
sudo chmod 777 /dev/bus/usb/008/004
Run Code Online (Sandbox Code Playgroud)
再次运行通讯程序,然后设备完美运行.问题是每次我插入设备时,最后一个数字都会改变,所以每次usb总线都要chmod,但是因为并非所有用户都知道管理员密码,所以这是一个问题.
因此,制造商建议按如下方式编辑udev规则.在/etc/udev/rules.d中创建一个12-ndi规则:
BUS=="usb", SYSFS{idVendor}=="0403", SYSFS{idProduct}=="da77", GROUP="plugdev"
Run Code Online (Sandbox Code Playgroud)
(我已经用lsusb检查过SYSFS是否正确)
lsusb
Bus 008 Device 004: ID 0403:da77 Future Technology Devices International, Ltd
Run Code Online (Sandbox Code Playgroud)
然后重新加载规则:
sudo udevadm control --reload-rules
Run Code Online (Sandbox Code Playgroud)
但仍未正确设置总线008/004的权限.
如何在每次重启时制作这些规则?如果我改变USB设备的端口,我也想让它们永久化.
我在树莓派 3 (debian) 上运行 node.js。
我有一个小原型项目,它从我的涡轮训练器上的 ANT+ 发射器收集数据,这些数据通过 Suunto Movestick USB 加密狗发送。
我正在使用Ant-Plus节点模块来管理 ANT+ 协议和一个脚本,该脚本将数据输出到控制台并通过 REST API 发送到云存储。
无论如何,切入正题,一切正常,多进程启动和停止没有问题,直到我无意中通过点击ctrl + z而不是ctrl + c
现在我在尝试运行我的脚本时收到以下错误:
/home/pi/ant-plus/node_modules/usb/usb.js:168 this.device.__claimInterface(this.id) ^
Error: LIBUSB_ERROR_BUSY
at Error (native)
at Interface.claim (/home/pi/ant-plus/node_modules/usb/usb.js:168:14)
at GarminStick2.USBDriver.open (/home/pi/ant-plus/build/ant.js:287:20)
at Object.<anonymous> (/home/pi/ant-plus/sample/cadence-sensor.js:39:12)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
Run Code Online (Sandbox Code Playgroud)
在四处搜索后,似乎由于节点进程没有正常关闭,某些进程仍然连接到 USB。
我尝试了各种方法来终止进程:
ps | grep <something>
kill <somepid>
killall node
Run Code Online (Sandbox Code Playgroud)
不知何故,我不认为这是我需要杀死的节点进程,我“感觉”需要以某种方式清洁 USB 接口,但我不知道我将如何做到这一点。
该项目使用node-usb …