zoukankan      html  css  js  c++  java
  • USB OTG to PC USB API简介

    本API分为四部分:Linux或Android内核 (主要是gadget驱动)、linux端API及其DEMO、Windows 驱动、Windows API及其Demo。


     

    一、linux、Android内核

      1、 安装MCU对应的linux或Android内核开发编译环境。
      2、 解压Linux、Adroind内核源代码。注:本软件可以根据用户需求定制适合各种MCU的指定版本Linux、Android内核源代码。
      3、在内核源码根目录执行:
          #make distclean
      4、把本API压缩包中的/linux-kernel/config/ZZKJ_u2u_config复制到内核源代码根目录并更名为.config。
      5、把/linux-kernel/gadget目录的内容复制到内核的/dirvers/usb/gadget目录内,覆盖掉原来的文件。
      6、把/linux-kernel/arm_config目录的内容复制到内核的/arch/arm/configs目录内,覆盖掉原来的文件。
      7、把/linux-kernel/arch-mcuXXXX目录的内容复制到内核的/arch/arm/ arch-mcuXXXX目录内,覆盖掉原来的文件。
      8、把/linux-kernel/arm_plat-mcuXXXX目录的内容复制到内核的/arch/arm/ plat-mcuXXXX,覆盖掉原来的文件。
      9、编译内核:
          #make zImage
      10、如果编译内核前需要配置内核:
          #make menuconfig
      有关本API的配置可参照下面的图(注:下面的图是linux2.6.25的截图,可根据用户需要提供任何linux、android版本)。完成配置内核,选择 exit 保存退出。
    有关本API的配置:
     


     

    二、linux 端API及其demo

      位于API压缩包的u2uAPI_linux目录,这里的代码是unicode,汉字在windows下可能不能正常显示,在ubuntu下可正常显示。
    把本API压缩包的u2uAPI_linux目录解压到,工作目录,比如:/root/u2u,执行命令:
        #cd /root/u2u
        #make
      即可生成u2u可执行文件,把u2u可执行文件复制到sd卡中,插入OK210,执行:
        #sdcard/u2u
      即可启动API测试程序,程序启动后自动打开u2u设备,并进入接收状态。
      按‘Q'键退出,按‘S'键发送字符串“abcdefghijklmnopqrstuvwxyz”
      运行界面截图:
     

    三、windows驱动的安装

      u2u设备的windows驱动为压缩包的u2u_driver_win目录,把它解压。
      在Linux或Android上启动u2u API 测试程序后,连接Linux或Android的usb OTG口和PC USB口(也可在启动测试程序之前连接),PC端会提示发现新的设备,根据提示按常规在指定位置(驱动解压到的位置)安装u2u设备的驱动程序。

    四、windows API及其demo

      windows API及其demo为压缩包中u2uAPI目录,可提供VC6.0、VS20003、VS2005、VS2008、VS2010及以上、VB、Delphi、Java各种版本。
      debug、release目录下有编译好的test_lib.exe文件。这个demo启动后的界面为:
     
      先点击“打开并接收”按钮,打开u2u设备并启动接收线程。
      点击“发送”按钮,发送字符串“1234567890abcdefghijk”
      “close”按钮关闭u2u设备。“退出”按钮退出程序。

    五、API函数说明

    int u2u_open(int *pktSize)
    //
    //功能描述:打开u2u设备。
    //输入参数:*pktSize 用于返回保持寸。就收数据时,接收缓冲区应大于等于
    //     包尺寸;发送数据时,一次发送的数据长度应小于等于
    //     包尺寸。
    //      无论u2u设备是否打开成功,本函数都会返回包尺寸。
    //返回参数:0 成功
    //     1 u2u设备不存
    //     2 u2u设备配置失败
    //     3 打开u2u设备失败
    //


    int u2u_RecvData(void *recvBuf,int recvBufLen);
    //
    //功能描述: 从u2u usb设备接收数据
    //输入参数: recvBuf      接收数据的缓冲区指针。接收缓冲区的尺寸应当大
    //     于等于最大包尺寸,否则有可能造成数据丢失。
    //     recvBufLen    缓冲区的的长度
    //输出参数:>0    成功接收到数据,返回值为接收数据的长度
    //     0    没有数据可读
    //     -1    出错,u2u设备没有打开。
    //     -2    数据接收错误, 具体原因可调用strerror(errno)获取
    //     -3    数据接收错误, 不是u2u数据
    //     -4    包数据错误
    //     -5    接收缓冲区太小
    //


    int u2u_SendData(char *sendBuf, int len );
    //
    //功能描述:从u2u usb设备发送数据。发送的数据长度必须小于等于包尺寸,
    //     否则多出的数据会丢失。
    //输入参数:lpBuf    发送数据的缓冲区指针,发送缓冲区的尺寸应当小于
    //     等于包尺寸。
    //     len        发送的数据长度。
    //输出参数:>0         通过u2u设备发送的数据长度
    //     -1      u2u设备没有打开。
    //     -2    发送数据错误, 具体原因可调用strerror(errno)获取
    //

    void u2u_Close();
    //
    //关闭u2u设备
    //

  • 相关阅读:
    一个日期Js文件。 2013年10月12日 星期六 癸巳年九月初八
    【Cocosd2d实例教程二】地图编辑器Tiled的安装使用
    结构体快排qsort()
    Crypto API加密通信流程
    LA 4255 Guess
    hdu1005 Number Sequence(数论)
    c++异常 连续抛出异常
    IMP导入数据 报错 IMP-00058 ORA-01691 IMP-00028
    Groovy/Spock 测试导论
    Groovy 与 DSL
  • 原文地址:https://www.cnblogs.com/LiuKaiFa/p/5069526.html
Copyright © 2011-2022 走看看