我想通过Windows上的软件重启USB设备.
我正在开发一个小型USB功率微控制器.该芯片将在电源循环中恢复原生行为并允许代码下载.由于我的代码会在出现问题时使设备崩溃 - 使其忽略所有USB命令 - 我必须从系统中物理拔出设备.
我想远程进行开发,而不必亲自到场.
到目前为止,我已尝试使用"devcon"来禁用部分USB堆栈.虽然这会将集线器带入D3(应该关闭电源!),但仍然会为设备供电.
是否有任何预先存在的解决方案或SetupAPI技巧可能会有所帮助?
我们如何在Python中查询连接的USB设备信息?我想获得UID设备名称(例如:SonyEricsson W660),设备路径(例如:/ dev/ttyACM0)
还有什么是上述信息中最好的参数,用于识别设备何时再次连接?(UID?)
我正在研究Ubuntu 11.04.
ATM我有这个代码(使用pyUSB)
busses = usb.busses()
for bus in busses:
devices = bus.devices
for dev in devices:
print repr(dev)
print "Device:", dev.filename
print " idVendor: %d (0x%04x)" % (dev.idVendor, dev.idVendor)
print " idProduct: %d (0x%04x)" % (dev.idProduct, dev.idProduct)
print "Manufacturer:", dev.iManufacturer
print "Serial:", dev.iSerialNumber
print "Product:", dev.iProduct
Run Code Online (Sandbox Code Playgroud)
问题是我没有得到所需的输出,会粘贴一个例子:
<usb.legacy.Device object at 0x1653990>
Device:
idVendor: 4046 (0x0fce)
idProduct: 53411 (0xd0a3)
Manufacturer: 1
Serial: 3
Product: 2
Run Code Online (Sandbox Code Playgroud)
首先我没有文件名,这对我来说最重要.我假设它是/ dev/ttyACM0等部分.其次,我猜每个USB设备都有一些UID,或者我应该同时使用Vendor或Product id?
编辑:显然我有一些设置问题,我想我使用错误的USB库.(使用libusb0.1)ATM.这就是我将Device(dev.filename)字符串设为空的原因.如果有人可以请告诉他在什么操作系统上他正在使用什么USB库以及我认为它将解决我的问题的哪个版本的PyUSB.
有没有人能够得到android.hardware.usb.action.USB_DEVICE_ATTACHED"工作?
好吧,我正在尝试使用新的USB主机模式功能来检测何时连接USB设备.出于我的目的,我希望在设备连接时得到通知.我无法看到它发生.我正在使用我知道有效的广播接收器(当我听到其他东西时,例如按下主页按钮.无论我尝试什么,我似乎无法获得触发的意图......所以让事情变得简单我决定忘记我的项目,并尝试使用谷歌自己的示例代码,看看我是否至少可以做到这一点.我没有一个导弹发射器,但我想我至少可以得到它USB_Device_Attached没有去.我调整了代码以适用于其他设备.首先我尝试调整设备过滤器xml.我添加了我的设备(键盘):
<usb-device vendor-id="1050" product-id="0010" />
Run Code Online (Sandbox Code Playgroud)
我从lsusb命令获得了供应商和产品.连接设备后,logcat会显示找到该设备
D/EventHub( 144): No input device configuration file found for device 'Yubico Yubico Yubikey II'.
I/EventHub( 144): New device: id=43, fd=219, path='/dev/input/event8', name='Yubico Yubico Yubikey II', classes=0x80000003, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false
I/InputReader( 144): Device added: id=43, name='Yubico Yubico Yubikey II', sources=0x00000101
I/ActivityManager( 144): Config changed: { scale=1.0 imsi=0/0 loc=en_US touch=3 keys=2/1/1 nav=1/2 orien=L layout=0x10000014 uiMode=0x11 seq=47}
D/MissileLauncherActivity(16191): intent: android.intent.action.MAIN
I/EventHub( 144): Removed device: path=/dev/input/event8 name=Yubico Yubico Yubikey II id=43 fd=219 classes=0x80000003
I/InputReader( 144): Device …Run Code Online (Sandbox Code Playgroud) 我希望能够将计算机A的USB端口连接到计算机B的USB端口,以使计算机A充当计算机B的键盘.
知道我会怎么做吗?
我不是在寻找一个现成的解决方案(虽然如果已经存在并且是开放源代码我不会反对),但是对于一个起点或一个好的资源.
我想我需要编写一个模拟键盘协议的驱动程序,我还需要整理整个USB主/从场景.
无论如何,任何帮助将不胜感激.
PS我也想用鼠标做,但我想这将是一个非常相似的过程,我认为(但我可能会被误解)从键盘开始会更容易.
有没有办法在Mac OS X上自动启动USB连接或CD插入应用程序?它在Windows上很容易,但我发现它AutoRun.Inf根本不适用于Mac.
我正在考虑从Eclipse切换到Intellij.我喜欢Eclipse的一件事是整个安装只是一个文件夹,我可以把它放在USB记忆棒上并根据需要将其复制到另一台计算机上.我的所有插件,设置和其他所有东西都随我而来,我所要做的就是复制一个文件夹.
有什么办法可以用Intellij做到这一点吗?
我正在开发一个Android应用程序,我必须在其中与USB设备进行通信.我尝试在我的应用中使用标准谷歌API,但设备列表总是空的.
如果我使用谷歌API的USB设备信息相同的事情.google api搜索到的设备列表为空,
lsusb给出以下结果:
Bus 001 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0001
Bus 002 Device 002: ID 2226:0014
Run Code Online (Sandbox Code Playgroud)
我的设备是2226:0014
日食日志:
I/USB3G(92): event { 'add', '/devices/platform/sw-ehci.1/usb2/2-1', 'usb', '', 189, 133 }
I/USB3G(92): path : '/sys/devices/platform/sw-ehci.1/usb2/2-1'
I/USB3G(92): VID :size 5,vid_path '/sys/devices/platform/sw-ehci.1/usb2/2-1/idVendor',VID '2226
I/USB3G(92): '.
I/USB3G(92): PID :size 5,Pid_path '/sys/devices/platform/sw-ehci.1/usb2/2-1/idProduct',PID '0014
I/USB3G(92): '.
I/USB3G(92): cmd=/system/etc/usb_modeswitch.sh /system/etc/usb_modeswitch.d/2226_0014 &,
I/USB3G(92): excute ret : 0,err:No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果我插入像rs232适配器,蓝牙加密狗这样的设备,没有任何反应,API和lsusb没有任何结果.
设备的Prtocol基于ezusb库.Android v.:4.0.3内核版本:3.0.8固件版本:crane_evb-eng 4.0.3 IMLK74k 20120330
有没有办法通过API访问隐藏的USB设备,还是应该通过编写驱动程序并将其修补到固件来实现对该设备的支持? …
我有一个流行的绘图板,我用USB连接到我的电脑.连接后,平板电脑会检测手部动作并相应地操纵指针.平板电脑正在某处将这些数据传输到我的电脑.
我的目标是在处理数据后拦截这些传输并操纵鼠标.我发现的流行语是:设备驱动程序和HID,但我还没有能够拼凑到更多.
假设这是可能的,我有几个问题:
我的电脑正在运行Ubuntu(但是非常感谢与任何形式的Linux操作系统相关的答案!).
注意:此问题类似,但适用于Windows.
我对这三个概念感到困惑.
我的理解是,Serial Port通常意味着RS-232兼容端口(RS =推荐标准).USB代表Universal Serial Bus.所以它的名字包含串口,是否支持RS-232?什么Universal意思?
COM端口是什么意思?
汉斯回答的一些理解:
为了减少工作量,设备制造商通常也会使其设备的行为类似于串行端口设备.这依赖于许多操作系统和语言库已经包含串行端口通信支持的事实.虽然这种支持无法与真正匹配的设备驱动程序相媲美.
关于Serial Port HOW-TO的一个很好的参考文档.
顺便说一下,Linux Document Project非常有用.