我正在尝试修复一个伪装成虚拟COM端口的无响应USB设备.手动重新插入工作,但最多可能有12个这样的单位.是否有API命令来执行unplug/replug循环的程序化等效操作?
我想在工业中使用android,
我可以使用slickdevlabs.com库连接到Profilic和Ftdi USB转串口芯片,没有任何问题.
应用程序有一个服务,它在启动时启动,连接到USB串口并执行其他操作.
我的问题是主机设备没有与用户进行任何交互,
所以当android问
Allow the app "MyAPP" to access the USB device ?
[checkmark]Use by default for this USB device
Cancel OK
Run Code Online (Sandbox Code Playgroud)
没有人点击确定.
即使我默认检查使用...复选框,如果我重新插入USB,或重新启动主机设备,它会在下次启动时再次询问.
我使用SuperUser模式运行服务和应用程序,但没有区别,它再次询问.
我添加了意图过滤但没有区别,它每次都会问我.
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter>
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
<meta-data
android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"
android:resource="@xml/device_filter" />
Run Code Online (Sandbox Code Playgroud)
任何意见如何绕过或禁用它?
我有root和SU访问权限.
我收到这个错误......
信号量超时期限已过期.
在这条线上......
ThePorts.ActivePort1.Open();
......但我不时会得到它.当它发生时,它会一次又一次地发生.然后问题消失了几个小时或几天,然后又回来了.
串口是连接蓝牙的USB.
我认为这个人有一个非常相似的问题,但不是在C#
使用usbser.sys冻结SerialPort.Open/DeviceIoControl/GetcommState
我可以估计,我已经阅读了他的整个问题,以及由此产生的评论和答案,但我真的无法弄清楚哪一个解决了他的问题,或者C#是否与他的体验有很大不同.
感谢您对无能为力的任何帮助.这是它发生的实际代码.
public static void Open_ActivePortWeWillUse(String Drone_StringNameFromUser)
{
SerialPort TempSerialPort = new SerialPort(Drone_StringNameFromUser, (int) SerialPortSpeed);
ThePorts.ActivePort1 = TempSerialPort;
ThePorts.ActivePort1.DataBits = 8;
ThePorts.ActivePort1.Parity = Parity.None;
ThePorts.ActivePort1.StopBits = StopBits.One;
ThePorts.ActivePort1.DataReceived += new SerialDataReceivedEventHandler(OurBackGroundSerialPortReceiver);
ThePorts.ActivePort1.Open(); // "Sometimes" Error hits here
}
Run Code Online (Sandbox Code Playgroud) 我有两个基于相同USB-RS232芯片的不同USB设备.当我将它们插入USB时,它们被安装到/dev/ttyUSB0...3
我的问题是,在脚本中,我可以找出哪个是什么tty?
使用lsusb我可以区分它们:
$> lsusb | grep 0403:f850
Bus 004 Device 002: ID 0403:f850 Future Technology Devices International, Ltd
$> lsusb | grep 0403:6001
Bus 004 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Run Code Online (Sandbox Code Playgroud)
使用dmesg,我可以知道它们的安装位置:
$> dmesg | grep 'FTDI USB Serial Device converter now attached'
[36051.393350] usb 4-2: FTDI USB Serial Device converter now attached to ttyUSB1
[36061.823513] usb 4-1: FTDI USB Serial Device converter now attached to ttyUSB0
Run Code Online (Sandbox Code Playgroud)
但"usb 4-1"似乎与"Bus 004 Device 002"不对应. …
提前道歉我不能立即接受答案 - 只是想我想记下来,而我有问题......
简而言之:当我在Linux下使用用户空间C代码启动对usb-serial端口的写入时,我可以观察到三种不同的缓冲区大小 - 问题是,我想从用户空间C中检索所有这些大小代码本身.
比方说,我有一个带有FTDI FT232芯片的Arduino Duemillanove,它被编程为从PC读取来自usb /串行连接的输入字节,然后丢弃它们.当我在系统中插入此设备时(在Ubunty 11.04 Natty上执行此操作),我可以通过以下方式观察以下内容tail -f /var/log/syslog
:
Mar 21 08:05:05 mypc kernel: [ 679.197982] usbserial: USB Serial Driver core
Mar 21 08:05:05 mypc kernel: [ 679.223954] USB Serial support registered for FTDI USB Serial Device
Mar 21 08:05:05 mypc kernel: [ 679.227354] ftdi_sio 2-2:1.0: FTDI USB Serial Device converter detected
Mar 21 08:05:05 mypc kernel: [ 679.227633] usb 2-2: Detected FT232RL
Mar 21 08:05:05 mypc kernel: [ 679.227644] usb 2-2: Number …
Run Code Online (Sandbox Code Playgroud) 是否可以通过唯一标识符识别USB设备,例如操作系统具有Mac-ID,硬盘ID,以太网卡ID是否具有唯一标识符?我知道可以轻松更改USB分区的卷序列号,也可以在用户格式化时更改.
但是有ID可以使用WMI服务通过MFC(Visual C++或C#)检索某种"USB硬盘ID或USB硬件ID"吗?这样的标识符对于物理设备是否是唯一的?请澄清......
我正在研究需要通过USB进行通信的Android应用程序.我有一个Archos 101平板电脑(规格在这里:http://www.archos.com/products/ta/archos_101it/specs.html? country = us&lang = en ).它有一个完整的USB主机端口.我可以在USB端口中放置一个闪存USB驱动器,并将文件从闪存驱动器复制到内部存储器.
我有这个Arduino Fio板,附有XBee.我有一个XBee Explorer Dongle和另一个XBee,我打算将Archos 101平板电脑连接到USB端口.
到目前为止,我可以将XBee Explorer Dongle放入我的计算机并从Arduino Fio发送/接收数据,没问题.
有没有办法让Android通过USB通话?我知道在平板电脑的某个地方必须有允许USB通信的驱动程序,但我找不到访问它们或使用它们的方法.
我可以看到Android识别XBee Explorer Dongle.我下载了一个终端模拟器,我可以输入"dmesg",看到它看到了加密狗连接.但我不能做任何事情.
我似乎需要Android 的FTDI驱动程序.
我非常感谢帮助我的平板电脑与XBee Explorer Dongle进行通信.
我发现了一个用于读取FTDI设备USB数据的问题. 传输数据USB 我使用此代码用于多产设备,并且可以检测usb等,除了conn.bulkTransfer()给出-1.
private class UsbRunnable implements Runnable {
private final UsbDevice mDevice;
UsbRunnable(UsbDevice dev) {
mDevice = dev;
}
public void run() {//here the main USB functionality is implemented
UsbDeviceConnection conn = mUsbManager.openDevice(mDevice);
if (!conn.claimInterface(mDevice.getInterface(1), true)) {
l("in run(), no connection");
return;
}
l("in run(), connection");
conn.controlTransfer(0x40, 0, 0, 0, null, 0, 0);// reset
// mConnection.controlTransfer(0×40,
// 0, 1, 0, null, 0,
// 0);//clear Rx
conn.controlTransfer(0x40, 0, 2, 0, null, 0, 0);// clear Tx
conn.controlTransfer(0x40, 0x02, 0x0000, 0, null, …
Run Code Online (Sandbox Code Playgroud) 我刚从Ubuntu 10.04升级到一个项目,该项目通过USB串口以115,200波特连接嵌入式设备.升级后,它没有工作,但我重新启动,并能够连接.由于关闭并重新启动我的系统,我无法连接.串行线看起来像是以错误的波特率连接(快速的字符串如下所示:
"'''''''''''''''''ppppp'''''''''''''''pppppp'''''''''''"...
Run Code Online (Sandbox Code Playgroud)
USB设备正在被识别并设置为/dev/ttyUSB0
.当我尝试设置波特率时,stty
我得到:
$ sudo stty -F /dev/ttyUSB0 115200
stty: /dev/ttyUSB0: unable to perform all requested operations
Run Code Online (Sandbox Code Playgroud)
如果我尝试设置9600
它似乎工作:
$ sudo stty -F /dev/ttyUSB0 9600
Run Code Online (Sandbox Code Playgroud)
但其他事情都失败了:
$ sudo stty -F /dev/ttyUSB0 4800
stty: /dev/ttyUSB0: unable to perform all requested operations
Run Code Online (Sandbox Code Playgroud)
这是stty看到的:
$ stty -F /dev/ttyUSB0
speed 9600 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
Run Code Online (Sandbox Code Playgroud)
我可以使用stty(echo,echoe等)更改其他值,但不能更改波特率.
我在网上看到有人可以用 …