如今,PC势弱,手机、平板大行其道,安卓、苹果、win三大平台混战,设备厂商苦之久矣!
我们的产品是一个基于usb连接的设备,为了方便用户使用,以及争取最多的二次开发厂商支持,
我们希望这样usb设备是这样的 --
1. 无论win32还win64都不需要另外安装驱动程序就能连接
2. 安卓下不需要root就能访问
3. iOS无需越狱能访问
4. 一般linux usb能直接支持,无需用户自己加入额外的内核驱动
(当然,所谓 “免驱” 是通俗说法,所有平台都需要usb驱动。只是想最大程序简化用户安装使用)
要实现这样的目标,选择一个最合适的usb设备类就是最基本的要求。
经常用来实现usb沟通的一些类,比如usb串口,u盘,usb鼠标、键盘、自定义的hid或bulk传输设备,
都是备选的目标。然而,不是每个类型的设备都能达到以上的目标。比如将设备模拟成u盘,系统会
多出盘符;将设备做成usb串口,虽然各平台都有现成的驱动用,但要用户安装总不免折腾。。
几经考虑,我们决定做这样的一个玩意 --
这个设备包含两个interfaces,第一个interface是标准usb键盘,并支持控制传输读写数据;
第二个interface是一个自定义的 "hid设备",支持device向host发送数据。
这个设备可以达到什么样的目标呢?比我们最初的构想还要好!--
1. 兼容多个平台。我们已经验证 windows,linux 都达到所谓“免驱” 目标,安卓也不用root验证通讯成功。
iOS我们暂时尚未验证,但有一些技术考察看,我们相信这个不成问题。
2. 双向的数据通讯
3. 设备有消息向主机发送时,主机无需轮询。标准的键盘接口,可随时向主机发送输入信息。
4. 第二个interface,在不方便使用键盘发送消息时,可以随时向主机发送信息。
(待续,usb设备固件编程、windows/linux/安卓编程)