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