标签: usb

Android平板电脑和相机之间的USB bulkTransfer

我想使用该bulkTransfer功能在相机和Android平板电脑设备之间交换数据/命令.我写了这个Activity,但该方法bulkTransfer返回-1(错误状态).为什么会返回错误?

public class MainActivity extends Activity {

    private TextView text;
    private int TIMEOUT = 1000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (TextView) findViewById(R.id.txt);
        usbTest();
    }

    private void usbTest() {
        UsbDevice device = (UsbDevice) getIntent().getParcelableExtra(
                                                                      UsbManager.EXTRA_DEVICE);
        if (device == null)
            text.setText("device null");
        else
            text.setText("device not null");

        UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
        HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
        text.setText(text.getText() + "\nDevices connected: "
                     + deviceList.values().size());
        Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();

        while (deviceIterator.hasNext()) {
            device …
Run Code Online (Sandbox Code Playgroud)

java usb android android-camera

42
推荐指数
1
解决办法
1997
查看次数

如何在Windows下嗅探USB端口?

我不时需要在Windows下转储USB流量,主要是为了支持Linux下的硬件,因此我的主要目标是生成用于协议分析的转储文件.

对于USB流量,似乎SniffUsb是明显的赢家......它在Windows XP下运行(但不是更晚),并且具有比早期版本更好的GUI.它产生巨大的转储文件,但一切都在那里.

但是,我的设备实际上是一个USB串行设备,所以我转向Portmon,它可以在没有USB开销的情况下嗅探串口流量.

windows usb usbserial sniffing

37
推荐指数
5
解决办法
8万
查看次数

如何模拟USB设备?

我团队的其他成员将为我的应用程序提供一个简单的非标准USB麦克风,但在完成之前我将不得不模仿它,以进行集成测试.

  1. 物理环回有任何风险吗? 就在这里
  2. 物理环回会起作用吗?只有USB 桥接器
  3. 有什么办法可以创建逻辑环回吗?(MSDN对此有所了解)
  4. 有没有通用的USB仿真软件?

如果有很多可用的选项,我宁愿使用.NET/Matlab/Python解决方案.

usb emulation device-emulation

37
推荐指数
1
解决办法
5万
查看次数

Android USB主机 - bulkTransfer()正在丢失数据

我正在尝试从基于FTDI 2232H芯片的自定义设备接收数据.

我使用的是简单的异步FIFO模式,输入数据速率为3.2MB /秒.

一切都与我的电脑上的测试代码完美配合,但我在Toshiba Thrive上接收数据时遇到了问题.

TDI的Android驱动程序失败了,所以我使用Java进行编码.

我可以完美地接收95%以上的数据,但每隔一段时间数据就会"溅"出来,并且我会获得相同的4-5K数据的一部分两到三次,然后回到良好的数据.

我对Thrive或Android的速度不是太快,因为我以前的数据是双倍(6.4MB /秒),而且它也有95%左右.(所以一半的速度应该没问题.)

似乎在Android中发生的缓冲(或双缓冲)中存在某种错误.(它不是FTDI 2232H中的缓冲区,因为重复数据大于芯片的4K内部缓冲区.)

设置代码很简单,而且它几乎可以完美地工作.

发生数据抓取的循环非常简单:

while(!fStop)
  if(totalLen < BIG_BUFF_LEN-IN_BUFF_LEN)
  {
    len=conn.bulkTransfer(epIN, inBuff, IN_BUFF_LEN, 0);
    System.arraycopy(inBuff, 0, bigBuff, totalLen, len);
    totalLen+=len;
  }
Run Code Online (Sandbox Code Playgroud)

如果您认为这是arraycopy的时间延迟 - 即使我评论该行,我仍然会丢失数据.

IN_BUFF_LEN是16384(即使我增加了inBuff的大小,bulkTransfer也不会返回更多).

bigBuff是几兆字节.

作为第二个问题 - 有没有人知道如何传递一个指向bulkTransfer的指针,它将直接填充bigBuff--在一个偏移处(不是从位置'0'开始?

usb android host

37
推荐指数
1
解决办法
5309
查看次数

Android USB主机模式"软模式"驱动程序,适用于符合标准的USB设备

既然Android API支持直接使用USB设备(从3.1开始),我很好奇是否有任何工作要为一些更受欢迎的类兼容设备(如音频或HID)创建"软模式"驱动程序.

换句话说,是否有任何开源项目将特定类设备的更有用的通信包含在可以添加到Android项目的Java类中?

出于我的目的,我对USB音频特别感兴趣,但似乎从Linux内核模块源派生的社区构建的一组类可能对许多项目有益.我的希望是其他人已经想到了同样的事情并且已经开始工作了.任何指向这个方向的人都会非常感激.


我偶然发现了一些资源:

usb android driver device-driver

37
推荐指数
1
解决办法
3526
查看次数

我如何在Python中用Linux监听'usb device inserted'事件?

我想在Linux中为Amarok编写一个Python脚本,以自动将stackoverflow播客复制到我的播放器.当我插入播放器时,它会挂载驱动器,复制任何待处理的播客,然后弹出播放器.我该如何收听"插入"事件?我已经查看过了,但找不到一个好的例子.

python linux usb

35
推荐指数
3
解决办法
4万
查看次数

如何以编程方式拔出和重新插入任意USB设备?

我正在尝试修复一个伪装成虚拟COM端口的无响应USB设备.手动重新插入工作,但最多可能有12个这样的单位.是否有API命令来执行unplug/replug循环的程序化等效操作?

c++ usb winapi usbserial

34
推荐指数
2
解决办法
5万
查看次数

使用PC切换多个灯泡最简单,最实用的方法是什么?

这个问题主要与电子相关,但它也有编程方面.

关于这个问题的一些背景

我们办公室的墙上有一盏红绿灯.当人们进入办公室时,他们可以立即从交通信号灯中判断昨晚的自动构建和测试是否顺利进行:绿色表示所有测试均通过,黄色表示某些测试失败,红色表示某些构建失败.

现在,交通信号灯上悬挂着三根电缆上的三个开关,有人每天早上都需要手动切换这些电缆.我正在寻找一种通过PC自动完成此过程的简便方法.

关于我的一些背景

我可以写软件.我有一些焊接经验.我知道数字设计理论,但我从未构建过物理设备.我的手上没有太多时间.

这个问题

如何以最少的努力(和投资)从PC控制三个110V灯泡(或任何设备)?

一些松懈的约束

  • 我不关心编写软件来控制串口/ USB端口的努力.
  • 话虽如此,如果我不必编写任何软件并只使用现有工具,那就太好了.
  • 我不想做任何焊接!我可以使用其中一个爱好工具包,将组件推入插槽等.或许它可能来自Toys"R"Us.
  • 我愿意购买像Arduino板这样的现有设备.
  • 如果我能用只是躺着的零件来完成它,那将是很好的.例如,我有一个旧的2400Bd调制解调器,我可以拆开(但是,可能会接着进行一些焊接).

更新

答案中提到的类似项目:

usb continuous-integration electronics serial-port

34
推荐指数
5
解决办法
3254
查看次数

Android 3.1 USB主机 - BroadcastReceiver不接收USB_DEVICE_ATTACHED

在developer.android.com上完成了USB主机的描述和示例,以检测连接和分离的USB设备.

如果我在清单文件中使用intent-filter在连接设备时启动我的应用程序,它可以正常工作:插入,设备被检测到,android要求启动应用程序的权限,设备信息显示在表格中.

我正在开发的应用程序不应仅在连接/分离设备时启动/完成(例如,数据管理目的).此外,如果应用程序已在运行,我也不希望弹出对话框.因此,如果连接了设备,我决定不直接启动活动,而是注册一个BroadcastReceiver,如果某个设备处于分离状态,那么(稍后)应该通知活动.这个接收器很好地识别分离动作,但不识别附着动作.

我错过了权限或数据属性或类似的东西吗?本教程和示例没有说明其他必要属性.

这是清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest 
  xmlns:android="http://schemas.android.com/apk/res/android"
  package="de.visira.smartfdr"
  android:versionCode="1"
  android:versionName="1.0">

<uses-sdk android:minSdkVersion="12" />
<uses-feature android:name="android.hardware.usb.host" />

<application android:icon="@drawable/icon" android:label="@string/app_name">


    <receiver android:name=".usb.Detector">
        <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" />
    </receiver>
</application>
Run Code Online (Sandbox Code Playgroud)

和接收器:

public class FDRDetector extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();

    Toast.makeText(context, "Action: " + action, 3).show();
            // pops up only if action == DETACHED
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么相同的intent-filter工作,如果我在一个活动上使用它们,但是如果它们应用于接收器则不行?即使我在代码中设置了接收器和过滤器,也无法识别附件. …

java usb android

34
推荐指数
3
解决办法
2万
查看次数

Android - 丢失传入(高速)USB数据

使用Android时,我丢失了传入USB数据流的数据,在Windows中读取相同的设备/流时我不会丢失这些数据.(我知道Android不是一个实时操作系统,但Windows也不是,而Windows在跟上数据方面没有问题.)

我使用具有内置4K缓冲区的FTDI 2232H芯片以大约3.5MB /秒的速度传输数据.libusb中的bulk_transfer调用一次可以请求16K,因此Android需要每4ms左右收集一次USB缓冲区的内容.

我试过:用Java和C语言编写,将线程(和/或进程)优先级提高到它的最高,同步和异步例程,我甚至为每个USB读取传递一个单独的缓冲区,所以我甚至不需要复制连续读取之间的数据.(在传输过程中没有垃圾收集.)我只需要缓冲20MB的数据,所以这都是RAM.

尽管如此,Android还是"没有绕过"USB数据,有时在读取之间等待长达12ms,导致一堆数据丢失.

有没有人有任何想法?DMA?对内核有某种"实时"请求?

usb android real-time

34
推荐指数
1
解决办法
2849
查看次数