zoukankan      html  css  js  c++  java
  • 嵌入式编程:四平台免驱的usb设备(一)

    如今,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/安卓编程)

  • 相关阅读:
    codeforces_1075_C. The Tower is Going Home
    leetcode_Stone Game_dp_思维
    leetcode_Counting Bits_dp
    Divide and Conquer_1.最大连续子数组
    python_MachineLearning_感知机PLA
    IIS中启用gzip压缩(网站优化)
    asp.net运行机制图
    asp.net 的那点事(2、浏览器和一般处理程序)
    asp.net 的那点事(1、当用户在浏览器地址栏输入了网址后,发生了什么?)
    android环境搭配 运行android sdk manager时出现错误问题解决
  • 原文地址:https://www.cnblogs.com/xhawk18/p/4668806.html
Copyright © 2011-2022 走看看