1. 程式人生 > >USB OTG to PC USB API簡介

USB OTG to PC USB API簡介

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裝置
//