程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> USB OTG to PC USB API簡介,otgapi

USB OTG to PC USB API簡介,otgapi

編輯:C++入門知識

USB OTG to PC USB API簡介,otgapi


本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設備
//

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved