标签: usb

Android USB主机通讯

我正在开发一个利用Android 3.2中的USB Host功能的项目.一般来说,我在USB /串行通信方面缺乏令人遗憾的缺乏知识和才能.我也无法找到任何我需要做的好示例代码.

我需要从USB通信设备上读取.
例如:当我通过Putty(在我的电脑上)连接时,我输入:

>GO
Run Code Online (Sandbox Code Playgroud)

设备开始为我喷出数据.俯仰/滚动/温度/校验.

例如:

$R1.217P-0.986T26.3*60
$R1.217P-0.986T26.3*60
$R1.217P-0.987T26.3*61
$R1.217P-0.986T26.3*60
$R1.217P-0.985T26.3*63
Run Code Online (Sandbox Code Playgroud)

我可以从Android设备发送初始'GO'命令,此时我收到'GO'的回音.

然后在任何后续读取上没有别的.

我该怎么做:1)发送'go'命令.2)读入结果数据流.

我正在使用的USB设备具有以下接口(端点).

设备类别:通讯设备(0x2)

接口:

接口#0类:通信设备(0x2)端点#0方向:入站(0x80)类型:中断(0x3)轮询间隔:255最大数据包大小:32属性:000000011

接口#1类:通信设备类(CDC)(0xa)端点#0地址:129编号:1方向:入站(0x80)类型:批量(0x2)轮询间隔(0)最大数据包大小:32属性:000000010

端点#1地址:2编号:2方向:出站(0x0)类型:批量(0x2)轮询间隔(0)最大数据包大小:32属性:000000010

我能够处理权限,连接到设备,找到正确的接口并分配端点.我只是想弄清楚使用哪种技术发送初始命令读取随后的数据.我尝试了bulkTransfer和controlTransfer的不同组合,没有运气.

谢谢.

我正在使用界面#1,如下所示:

public AcmDevice(UsbDeviceConnection usbDeviceConnection, UsbInterface usbInterface) {
    Preconditions.checkState(usbDeviceConnection.claimInterface(usbInterface, true));
    this.usbDeviceConnection = usbDeviceConnection;

    UsbEndpoint epOut = null;
    UsbEndpoint epIn = null;
    // look for our bulk endpoints
    for (int i = 0; i < usbInterface.getEndpointCount(); i++) {
      UsbEndpoint ep = usbInterface.getEndpoint(i);
     Log.d(TAG, "EP " + i + ": " + ep.getType());
      if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { …
Run Code Online (Sandbox Code Playgroud)

io usb android serial-communication

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

如何检测USB断开事件?(Windows,.NET C#应用程序)

目前我这样做是为了查看一个掩盖的USB设备列表(专门为我正在使用的设备屏蔽),如果它在那里,我继续,如果没有,那么我通知用户设备没有连接.通过USB外围控制器芯片制造商的.NET库为我提供了获取USB设备列表的方法.

是否存在USB设备断开连接的事件?

.net usb events disconnect

15
推荐指数
1
解决办法
2万
查看次数

Android:检测USB

有没有办法在您的活动/应用程序中(以编程方式)知道用户已通过USB将手机连接到PC?

usb android

15
推荐指数
5
解决办法
3万
查看次数

Android外置摄像头选项 - 叠加在视频流之上,没有中间人服务器/路由器

我正在寻找一种从Android设备与外部摄像头连接的方法.它需要成为外置摄像头的原因是因为我需要能够修改摄像头(移除红外滤镜)而且我不想破坏车载手机摄像头.

无论相机如何通过USB,蓝牙,WiFi或其他通信协议连接都无关紧要,这两个设备只需要能够在没有中间服务器/路由器的情况下进行通话.

我正在寻找一个解决方案:

  • 不需要生根或重建Android/Linux内核(绝对必须)
  • 允许我在图像/视频上叠加项目(好)
  • 访问视频流进行图像分析(最好)

最后一项要求不是必需的,但会很好.

我探讨的选项:

  • USB摄像头:根据http://brain.cc.kogakuin.ac.jp/research/usb-e.html重建Linux内核,并尝试使用相机提供的代码:http://www.amazon.com/gp/product/B002X3VEIE/ref = oh_o02_s00_i00_details.没有丝毫工作.我后来才知道作者使用的是CM9 mod,但这并不是一个选项,因为它对市场上的应用程序来说不实用.
  • 蓝牙摄像头:LooxcieCountourGPS看起来是最好的选择,但是Feed会流式传输到他们的应用程序,他们没有API或SDK,所以如何覆盖他们的视频源?
  • IP摄像头:对我而言,这看起来是最有前途的选择,但如何在没有中间服务器/路由器的情况下访问IP摄像机视频源?带有WiFi BacPac的GoPro HD Hero2看起来很有前景,但它还没有出来,我可以告诉你需要使用类似于蓝牙相机选项的应用程序.哪些相机可以让我连接到它们并接收直接视频输入,我该如何以编程方式进行此操作?

如果连接到IP摄像机没有中间人可以在代码Android和MJPEGAndroid上(MJEPG)获取IP摄像头的视频流看起来很有希望.

我可以覆盖其他应用视频源吗?是否可以直接连接到IP摄像头?任何建议的选项非常感谢.

usb camera android bluetooth ip-camera

15
推荐指数
1
解决办法
4万
查看次数

如何识别USB设备?

是否可以通过唯一标识符识别USB设备,例如操作系统具有Mac-ID,硬盘ID,以太网卡ID是否具有唯一标识符?我知道可以轻松更改USB分区的卷序列号,也可以在用户格式化时更改.

但是有ID可以使用WMI服务通过MFC(Visual C++或C#)检索某种"USB硬盘ID或USB硬件ID"吗?这样的标识符对于物理设备是否是唯一的?请澄清......

usb usbserial usb-drive visual-c++ usb-flash-drive

15
推荐指数
1
解决办法
2万
查看次数

Android 4.2.2 USB调试"始终允许从此计算机"选项导致设备的目标未知?

在选择"始终允许来自此计算机"后,我在连接我的4.2.2安卓设备与PC时遇到问题.

我在4.2.2 USB调试中选择了"始终允许来自这台电脑",第一次工作正常,但是当我尝试其他时间时,我的设备总是处于脱机状态.我已尝试使用另一个也是4.2.2的设备和USB调试弹出窗口,当我单击确定(不选择"始终允许从此计算机")时,设备列表变为在线状态.

我尝试了以下方法,但没有用

  • adb kill-server/adb start-server /和adb devices
  • 安装新的eclipse,android SDK和ADT
  • 插拔我的设备一千次
  • 尝试重复此链接中的步骤

无论如何,一旦我选择了摆脱"始终允许从这台计算机"?

debugging usb android adb android-4.2-jelly-bean

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

usb设备android,c#Xamarin

我最近开始写Xamarin,编写代码来查看连接到主机的设备时遇到了一些问题.

我已阅读SDK文档,所有文档都是用java编写的.我正在尝试将java更改为C#,我将其编码为查找附加的设备:

UsbManager manager = (UsbManager)GetSystemService (Context.UsbService);
display.Text += " /n inizializzo il manager";
display.Text += "numero dispositivi: ";
display.Text += manager.DeviceList.Count;
Run Code Online (Sandbox Code Playgroud)

使用"usb manager"应用程序,我可以看到所有的usb附加,有3个.但是这个代码看起来是0 usb附加.

我不明白为什么.

c# usb android xamarin.android xamarin

15
推荐指数
1
解决办法
3873
查看次数

LibUsb声称接口访问被拒绝Java

我希望能够从USB计步器读取数据.我在Java中尝试这个,我正在使用LibUsb和Usb4Java库.我似乎无法声称usb管道或类似的东西.

我正在使用的代码:

final Context context = new Context();

    int result = LibUsb.init(context);
    if (result < 0)
    {
        throw new LibUsbException("Unable to initialize libusb", result);
    }

    DeviceHandle handle = LibUsb.openDeviceWithVidPid(context, vid, pid);
    if (handle != null)
    {
        Device d = LibUsb.getDevice(handle);
        int res = LibUsb.claimInterface(handle, 0);
Run Code Online (Sandbox Code Playgroud)

Int res返回'-3',即'LIBUSB_ERROR_ACCESS'

设备已找到但不可索赔.USB设备只有1个接口.

任何帮助,将不胜感激!

java usb libusb

15
推荐指数
1
解决办法
1520
查看次数

USBDEVFS_RESET与IOCTL_USB_RESET

我似乎不同的抽象之间纠结的USB堆栈上..有什么不同betweeen IOCTL_USB_RESETUSBDEVFS_RESET解雇对一个USB设备?这两个调用最终会在接口上触发相同的低级操作,还是有区别?

我注意到USBDEVFS_RESET有时用'相当于重新插入和重新枚举设备'来描述,而我自己发现,触发IOCTL_USB_RESET(由libusb的usb_reset()调用完成)确实会触发重置消息dmesg但没有新的"枚举",这将导致通常我猜多线USB检测和识别消息.

由于IOCTL_USB_RESET解决我的问题(卡住usb设备)是不可行的,甚至不会触发重新计算,有没有机会USBDEVFS_RESET做得更好?

linux usb ioctl

15
推荐指数
1
解决办法
4059
查看次数

是否可以在XCODE中调试应用程序无线或不连接USB电缆?

如何在没有电缆的情况下连接xcode中的设备.连接电缆很麻烦,而我的USB是松散的,因此它与PC断开连接.

debugging macos usb xcode ios

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