分享

android通过USB控制外设问题

 quasiceo 2015-07-04

7月18日杭州 OSC 源创会正在报名,送机械键盘和开源无码内裤  

我最近在android平板上开发一个程序,可以通过mini Usb控制外部设备,外部设备接口是串口转USB。平板和外部设备之间通过OTG线连接,设备由平板供电。
系统本意是想通过平板可以向设备发送串口指令。
我采用Android 4.0.3系统里面USb Host方法实现,目前可以发现设备并打开设备了。


问题是:我怎么通过UsbDeviceConnection类里面的controlTransfer方法设置串口的波特率,停止位。 或者有什么好的方法可以告知一二。

多谢论坛里面的高手给予指点。谢谢。。。

lucasli lucasli
发帖于 3年前
21回/18080阅

按票数排序  显示最新答案   共有21个答案 (最后回答: 1年前)

    0
  • freyou freyou 3年前
    目前手机想通过OTG驱动华为EC122无线网卡,但是不知道如何搞驱动,华为倒是有Linux版本的驱动,有没有专家能搞出个apk的驱动安装或者其他的啊,安卓系统是4.0.4(MiUI ICS21)
    评论(0)| 引用此答案| 举报 (2012-11-29 10:39)
  • 0
  • envenlope envenlope 2年前

    引用来自“lucasli”的答案

    看了很多资料包括USB规范,基本上都是使用下面的方式来设置波特率和数据位的。
    ret = usbConn.controlTransfer(0x40 , 0x04, 0x0008, 0, null, 0, 0);
    ret = usbConn.controlTransfer(0x40 , 0x03, 0x0271, 0, null, 0, 0);

    但是在我的PAD上确返回-1,并且无法通信。

    usb host模式 应该怎么设置波特率呀  我的设备的波特率为9600 bps
    评论(0)| 引用此答案| 举报 (2013-01-18 11:28)
  • 0
  • jiura jiura 2年前
    我也有类似的问题需要解决呀。。LZ 怎么才能详细请教你啊 ?
    评论(0)| 引用此答案| 举报 (2013-02-25 20:36)
  • 0
  • mianliao mianliao 2年前
    你好,我想问问,我的程序一到claimInterface(usbInterface, forceClain);就出错,后面的controlTransfer()就没法用了,希望给点建议啊!
    --- 共有 1 条评论 ---
    • ydww 你好,调用connection.claimInterface(intf, false);出错,是connecion=null,现在我也遇到了这个问题,请问您解决了没,可以请教一下吗 (2年前)   回复
    评论(1)| 引用此答案| 举报 (2013-03-31 15:49)
  • 0
  • ydww ydww 2年前
    您好,直接使用  UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
            HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
            Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
            while(deviceIterator.hasNext()){
                UsbDevice device2 = deviceIterator.next();
                System.out.println("device2--------"+device2);
                //your code
            }返回了null,请问怎么回事呢
    --- 共有 1 条评论 ---
    • chm_love 这里返回的是已连接的设备,返回null可能是: 1.没有任何外部设备连接(比如通过otg连接读卡器) 2.你连接的是电脑 (1年前)   回复
    评论(1)| 引用此答案| 举报 (2013-04-22 11:11)
  • 0
  • mianliao mianliao 2年前

    问题已解决

     deviceConnection=manager.openDevice(device);
        if(!manager.hasPermission(device)){
        //请求UsbManager接入device

        manager.requestPermission(device, mPermissionIntent);
        }   

    --- 共有 1 条评论 ---
    • 九十度 usbDeviceConnection.claimInterface(usbInterface, true),,,,运行出错你是怎么解决的 (2年前)   回复
    评论(1)| 引用此答案| 举报 (2013-04-24 11:28)
  • 0
  • fstcd fstcd 2年前
    成都富士达淘宝上有现成产品和通讯软件,安卓usb 转 232,不要otg支持
    评论(0)| 引用此答案| 举报 (2013-07-19 09:46)
  • 0
  • 毛国祥 毛国祥 2年前
    我想请问 Android USB HOST android.hardware.usb.host.xml这个文件PUSH system/etc/persision 出错只读文件  怎么解决的 ?我QQ 63093090@qq.com           3Q
    --- 共有 2 条评论 ---
    • llz root后,进入adb shell,使用chmod命令将permissions目录赋权限 (2年前)   回复
    • _hongpan root一下就可以啦 (2年前)   回复
    评论(2)| 引用此答案| 举报 (2013-07-23 13:15)
  • 0
  • auyang410 auyang410 2年前

    你好,lucasli,我目前使用controlTransfer()遇到返回-1的问题,枚举设备,打开设备,获取端点0(类型为中断)等一系列动作都正常,但调用ret=mDeviceConnection.controlTransfer(0x21, 0x9, 0x200, 0, message, message.length, 0);返回-1,不知你是如何解决的?谢谢!

    我的device是hid类型,在pc上对hid的端点0写数据没问题,但在三星的S3手机上controlTransfer使用写数据就不行,不知哪里设置不正常?

    --- 共有 3 条评论 ---
    • alex_gaofeng @auyang410 我想请教一下,您是什么HID设备,可以支持可读可写双向的? 鼠标键盘都是单向的 (2年前)   回复
    • 符李腾 回复 @auyang410 : 请问这个UsbConnection.controlTransfer方法参数怎么传,我用其他的如:bulkTransfer和UsbRequest都拿不到数据,这个知道原因,求教、求救啊 (2年前)   回复
    • auyang410 已经可以了,controlTransfer只针对端点0,使用request可以与其它端点通信! (2年前)   回复

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多