本API分為四部分:Linux或Android內核 (主要是gadget驅動)、linux端API及其DEMO、Windows 驅動、Windows API及其Demo。
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的配置:
位於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”
運行界面截圖:
u2u設備的windows驅動為壓縮包的u2u_driver_win目錄,把它解壓。
在Linux或Android上啟動u2u API 測試程序後,連接Linux或Android的usb OTG口和PC
USB口(也可在啟動測試程序之前連接),PC端會提示發現新的設備,根據提示按常規在指定位置(驅動解壓到的位置)安裝u2u設備的驅動程序。
windows API及其demo為壓縮包中u2uAPI目錄,可提供VC6.0、VS20003、VS2005、VS2008、VS2010及以上、VB、Delphi、Java各種版本。
debug、release目錄下有編譯好的test_lib.exe文件。這個demo啟動後的界面為:
先點擊“打開並接收”按鈕,打開u2u設備並啟動接收線程。
點擊“發送”按鈕,發送字符串“1234567890abcdefghijk”
“close”按鈕關閉u2u設備。“退出”按鈕退出程序。
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設備
//