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设备
//
USB OTG to PC USB API简介的更多相关文章
- USB OTG简单介绍
1 引言 随着USB2.0版本号的公布,USB越来越流行,已经成为一种标准接口.如今,USB支持三种传输速率:低速(1.5Mb/s).全速(12Mb/s)和快速(480Mb/s),四种传输类型:块传输 ...
- USB OTG简要
1 介绍 随着USB2.0发布版本号,USB更受欢迎.它已成为一种标准接口.现在,USB它支持三种速度:低速(1.5Mb/s).全速(12Mb/s)速(480Mb/s),四种传输类型:块传输.同步传输 ...
- USB OTG简介、与普通USB线的区别
USB有三类接口A类接口 -----------最常见的扁平接口,四芯 VCC GND D+ D- B类接口 ...
- USB联机线编程接口(API)
USB联机线编程接口(API) 2013-10-19 本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用. 关键字:USB隔离线.USB点对点通讯.USB通 ...
- USB OTG插入检测识别
转载请标注原文地址:http://blog.csdn.net/uranus_wm/article/details/9838847 一 USB引脚一般四根线,定义如下: 为支持OTG功能,mini/mi ...
- USB otg 学习笔记
1 USB OTG的工作原理 OTG补充规范对USB2.0的最重要的扩展是其更具节能性的电源管理和允许设备以主机和外设两种形式工作.OTG有两种设备类型:两用OTG设备(Dualrole device ...
- 详述USB OTG发展及协议标准
USB On-The-Go 扩大了USB 的应用领域,将USB 从传统的PC 与外设通讯的模式,扩展到移动电子和嵌入式领域中,抛开主机PC,实现通常的外设与外设之间点对点(Point to Point ...
- USB OTG原理+ ID 检测原理
OTG 检测的原理是: USB OTG标准在完全兼容USB2.0标准的基础上,增添了电源管理(节省功耗)功能,它允许设备既可作为主机,也可作为外设操作(两用OTG).USB OTG技术可实现没有主机时 ...
- USB OTG简单介绍、与普通USB线的差别
USB有三类接口A类接口 -----------最常见的扁平接口,四芯 VCC GND D+ D- B类接口 ...
随机推荐
- Redis+PHP扩展的安装和Redis集群的配置 与 PHP负载均衡开发方案
以前有想过用 Memcache 实现M/S架构的负载均衡方案,直到听说了 Redis 后才发现它做得更好.发了几天时间研究了一下 Redis ,感觉真的很不错,特整理一下! 以下操作都是在 SUSE ...
- SCM管理器
OpenSCManager 打开SCM管理器 CloseServiceHandle 关闭句柄 CreateService 创建服务 OpenService 打开服务 ControlService 控制 ...
- Oracle 存储过程介绍
存储过程 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END; 行1: CREATE OR REPLACE PROCEDURE ...
- 2015年6月股灾永远载入A股史册
之前很奇怪这次牛市行情的暴涨与暴跌,后来发现成交量是以往不可想象的,而这一切的源头就是融资融券,也就是杠杆. 杠杆的作用是无穷的,就像阿基米德说的那样“给我一个支点,我就能撬起地球”. 杠杆是个放大器 ...
- Sicily 1129. ISBN
题目地址:1129. ISBN 思路: 这道题比较简单,只要看懂题目就应该可以了.那就解释下题目好了,题目意思是按照权值计算这10个数字和,依据这个和计算还差多少可以对11整除,若还差10,那么在这个 ...
- XJOI网上同步测试DAY14 T2
思路:先考虑在D高度的最小圆覆盖,再一层一层往下走时,可以保证圆心与最开始的圆相同的时候答案是最优的. 时间复杂度O(n) 有一个坑点,就是我用了srand(time(NULL))就T了,RP太差了. ...
- Android addView动态给Activity添加View组件
本文主要讲述如何动态给UI界面添加布局和控件,在编程的时候很多时候需要动态显示一些内容,在动态添加View的时候,主要使用addView方法. 1. addView方法简介 在Android 中,可以 ...
- iOS 9之Safari广告拦截器(Content Blocker)
金田( github 示例源码) 相对于谷歌对广告拦截的禁止,苹果与之态度截然相反,继Mac版Safari加入广告拦截工具之后,即将到来的iOS9对Safari也引入了内容拦截插件-Content B ...
- 【转】Android:控件Spinner实现下拉列表
原文网址:http://www.cnblogs.com/tinyphp/p/3858920.html 在Web开发中,HTML提供了下拉列表的实现,就是使用<select>元素实现一个下拉 ...
- Delphi EurekaLog 调试内存泄露方法
要使用EurekaLog进行内存泄露检测,需要手动开启"EurekaLog Options..."下的"Advanced Options"旁的"Mem ...