本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设备
//

USB OTG to PC USB API简介的更多相关文章

  1. USB OTG简单介绍

    1 引言 随着USB2.0版本号的公布,USB越来越流行,已经成为一种标准接口.如今,USB支持三种传输速率:低速(1.5Mb/s).全速(12Mb/s)和快速(480Mb/s),四种传输类型:块传输 ...

  2. USB OTG简要

    1 介绍 随着USB2.0发布版本号,USB更受欢迎.它已成为一种标准接口.现在,USB它支持三种速度:低速(1.5Mb/s).全速(12Mb/s)速(480Mb/s),四种传输类型:块传输.同步传输 ...

  3. USB OTG简介、与普通USB线的区别

    USB有三类接口A类接口                     -----------最常见的扁平接口,四芯  VCC   GND   D+   D- B类接口                    ...

  4. USB联机线编程接口(API)

    USB联机线编程接口(API) 2013-10-19 本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用. 关键字:USB隔离线.USB点对点通讯.USB通 ...

  5. USB OTG插入检测识别

    转载请标注原文地址:http://blog.csdn.net/uranus_wm/article/details/9838847 一 USB引脚一般四根线,定义如下: 为支持OTG功能,mini/mi ...

  6. USB otg 学习笔记

    1 USB OTG的工作原理 OTG补充规范对USB2.0的最重要的扩展是其更具节能性的电源管理和允许设备以主机和外设两种形式工作.OTG有两种设备类型:两用OTG设备(Dualrole device ...

  7. 详述USB OTG发展及协议标准

    USB On-The-Go 扩大了USB 的应用领域,将USB 从传统的PC 与外设通讯的模式,扩展到移动电子和嵌入式领域中,抛开主机PC,实现通常的外设与外设之间点对点(Point to Point ...

  8. USB OTG原理+ ID 检测原理

    OTG 检测的原理是: USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG).USB OTG技术可实现没有主机时 ...

  9. USB OTG简单介绍、与普通USB线的差别

    USB有三类接口A类接口                     -----------最常见的扁平接口,四芯  VCC   GND   D+   D- B类接口                    ...

随机推荐

  1. 【Ecstore2.0】计划任务/队列/导入导出 的执行问题

    [环境]CENTOS6.3 + wdcp(php5.3) [症状]可正常加入队列,但不执行队列 [原因]大部份都是用户权限造成 [原理] Ecstore2.0的导入导出.发送邮件.日常清理备份等任务操 ...

  2. ECSTORE2.0 去页面底部版权

    ECstore系统在每个页面底部都有版权信息,非常烦人,之前的解决方法是修改系统代码,但是对不懂的php代码人来说是个很困扰的事情. 现在ECStore在版本为2.0.32中进行了代码更新,只需要在c ...

  3. PHPCMS V9网站更换域名的方法

    网站在发展的过程中,很可能多次的修改域名.那么在phpcms v9中我们要怎么进行设置呢? 请进行以下步骤的修改: 1.修改/caches/configs/system.php里面所有和域名有关的,把 ...

  4. wordpress后台打开缓慢的临时解决方法

    解决方法是添加下面的主题在目前的代码在functions.php: //禁用Open Sans class Disable_Google_Fonts { public function __const ...

  5. delphi2010 开发及调试WebService 实例

    使用delphi已经10多年了,一直搞桌面程序开发,对Webservice一直很陌生,近来因工作需要,学习delphi开发WebService,担心遗忘,作此笔记. 特别感谢 中塑在线技术总监 大犇 ...

  6. 用dup2和dup产生一份file descriptor 的拷贝

    在类Unix操作系统里面,.dup2和dup都通过系统调用来产生一份file descriptor 的拷贝.   dup对我来说还很简单   int dup(int filedes);   dup2就 ...

  7. C#中HashTable和快速排序的用法

    题目主要是写一个程序,分析一个文本文件(英文文章)中各个词出现的频率,并且把频率最高的10个词打印出来.   自从周四拿到题目以后,发现又要用到万恶的数据结构了,不得不说这是我的短板,所有上周20号到 ...

  8. 【转】关于FPGA中建立时间和保持时间的探讨

      时钟是整个电路最重要.最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错:因而明确FPGA设计中决定系统时钟的因素,尽 ...

  9. 摇滚吧HTML5!Jsonic超声波前端交互!

    前些年吹过一阵canvas制作html5游戏的东风,相信不少同学重温了一把高中物理课本上的牛顿定律.时光如梭,你是否还记得牛顿定律后面一章的各种机械波的物理定律?环视四周,光纤.wifi.蓝牙.广播都 ...

  10. Javascript Promise 学习 (中)

    时隔多日,对promise有了多一点点的了解. 最近用angularjs 做开发,所以研究了一下它的 $q 功能不算很强大,算是简化版的 Q.js 参考了一下源码,不过我的等级还差很多... 作为学习 ...