如何访问扩展板上的USB口


(oursyslink) #1

需求:
我们需要通过此USB口跟底板(单片机)进行通信(按串口方式通信)

问题:
访问不到Rokid mini扩展板上的USB口

是不是要给我们厂商id和产品id?否则的话,请问该怎么访问?

以下代码是我们写的,iterator 为空,找不到设备:
mPermissionIntent = PendingIntent.getBroadcast(MainActivity.instance, 0, new Intent(ACTION_DEVICE_PERMISSION), 0);
IntentFilter permissionFilter = new IntentFilter(ACTION_DEVICE_PERMISSION);
MainActivity.instance.registerReceiver(mUsbReceiver, permissionFilter);

mUsbManager = (UsbManager) MainActivity.instance.getSystemService(Context.USB_SERVICE);

HashMap<String, UsbDevice> deviceHashMap = mUsbManager.getDeviceList();
Iterator iterator = deviceHashMap.values().iterator();

我们已经配置好的USB厂商ID和产品ID:


<!-- 0x0403 / 0x6015: FTDI FT231X -->
<usb-device vendor-id="1027" product-id="24597" />

<!-- 0x2341 / Arduino -->
<usb-device vendor-id="9025" />

<!-- 0x16C0 / 0x0483: Teensyduino  -->
<usb-device vendor-id="5824" product-id="1155" />

<!-- 0x10C4 / 0xEA60: CP210x UART Bridge -->
<usb-device vendor-id="4292" product-id="60000" />

<!-- 0x067B / 0x2303: Prolific PL2303 -->
<usb-device vendor-id="1659" product-id="8963" />

<!-- 0x1a86 / 0x7523: Qinheng CH340 -->
<usb-device vendor-id="6790" product-id="29987" />

(tao.zeng) #2

您好,这个需求需要内核支持。可以提供您的 VID和PID我们加入。当然最好可以把您的设备寄给我们调试。


(oursyslink) #3

Rokid mini的扩展板不是你们的吗,怎么让我们提供VID和PID,不是很理解哦。。。


(tao.zeng) #4

扩展版提供一个USB HOST, 一个调试串口。 您需要用哪一个?


(oursyslink) #5

要用USB HOST


(tao.zeng) #6

USB HOST的pid和vid用lsusb就可以看到。


(medea) #7

使用
1,adb shell
2,lsusb
可以获得如下信息:
Bus 001 Device 002: ID 058f:6387
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0003

从上面可以看到
插入的USB存储卡是 PID/VID分别是 058F: 6387

底层是可以的, 你按照这种方法看看底层是否可以获得PID/VID。

如果可以看到这些信息,说明framework这一层有问题。


(oursyslink) #8

现在能访问到了,但之前就不行,什么都没改。。。
只是现在有个新的问题:
访问这个USB设备需要手动赋予权限,而我们的使用环境里是没有屏的,无法手动操作,不知道你们能不能在framework里面把对外设的使用权限默认都打开啊?


(oursyslink) #9

我觉得这个权限有必要默认就打开,因为拿mini开发板的公司一般都会用它的扩展口去连他们的外设,如果都像手机那样每次都手工开通权限,可用性就很差了


(medea) #10

您的建议非常好,我们将在我们下一版本的Android开源源代码里面加入这个需求。

我们有源代码和产品镜像版本。开发板默认的发出的镜像是产品的版本,拥有和产品绝大多数的功能。主要是为了开发Skill的人群准备的。所以权限会比较苛刻。

另外针对想要使用扩栈板扩展硬件外设的开发者,我们有开源的代码。

Linux开源代码下载与指南链接:


Android开源代码下载与指南链接:


Sill开发指南链接
https://developer.rokid.com/docs/2-RokidDocument/1-SkillsKit/skill-sample-coffee.html

你可以下载源代码来进行您的高阶开发任务。


S905D开发套件扩展板的UART与外设通讯
(oursyslink) #11

知道了,谢谢!


(medea) #12

我们这几天会出一些硬件和语音结合的Demo的教程。敬请关注!