android USB host程式設計
測試手機:華為p8
測試系統:android
-------------------------------------------
android的native層usbhost供java層android usb api呼叫。
使用native層的usb host需要libusbhost.so和usbhost.h兩個檔案。libusbhost.so和usbhost.h均可以在aos ndk裡找到,usbhost.c在android原始碼目錄下:/system/core/libusbhost/
1. 初始化
usbHostContext = usb_host_init();
2. 建立一個執行緒執行usb_host_run(),進行USB device的插入和拔出監聽
while(1)
{
usb_host_run(usbHostContext, usb_device_added, usb_device_removed, NULL, client_dat);
printf("\n err:usb_host_run() return. \n\n");
pthread_exit("usb_run exit");
}
3. 實現裝置插入和拔出回撥
插入回撥:static int usb_device_added(const char *devname, void* client_data)
拔出回撥:static int usb_device_removed(const char *devname, void* client_data)
在插入回撥裡可以利用devname開啟一個USB裝置:
struct usb_device * usbdevice = usb_device_open(devname);
利用獲取到的PID和VID判斷是否是使用者需要的USB device
int usb_vid = usb_device_get_vendor_id(usbdevice);
int usb_pid = usb_device_get_product_id(usbdevice);
在拔出回撥中處理USB裝置關閉及資源釋放的工作。
4. 開啟裝置後掛接用到的usb 介面:
ret = usb_device_claim_interface(usbdevice, 0);
5. 進行資料傳輸:
length = usb_device_bulk_transfer(udevice, BULK_OUT, bulk_send_buf, 4, 100);
注:usbhost只提供了bulk和控制傳輸,但bulk傳輸函式也能使用中斷端點。
相關文章
- Android 系統使用USB OTG功能/開啟USB Host API功能AndroidOTGAPI
- 安卓USB開發教程 USB Host安卓
- garmin USB: linux USB host驅動Linux
- 安卓USB開發教程 USB Host 與 Accessory安卓
- linux usb 子系統(二)- host driverLinux
- CUDA程式設計(4.1)—— 宣告符(global、device、host等)程式設計dev
- Android UsbDeviceManager 程式碼分析Androiddev
- 安卓之USB主機(Host)與配件(Accessory)模式安卓模式
- Android AOP面向切面設計程式設計Android程式設計
- Android USB預設連線模式為MTPAndroid模式
- 如何自學Android程式設計?Android程式設計
- android通過USB使用真機除錯程式Android除錯
- 我學習USB設計的歷程
- Android 程式設計程式碼-自定義 ToastAndroid程式設計AST
- Android之串列埠程式設計Android串列埠程式設計
- Android 多視窗程式設計Android程式設計
- Android之網路程式設計Android程式設計
- Android面向切面程式設計(AOP)Android程式設計
- android socket程式設計例項Android程式設計
- build libusb for AndroidUIAndroid
- Host是什麼?如何設定host檔案?
- Android程式設計基礎 • 【第1章 Android程式入門】Android程式設計
- Android安全加密:HTTPS程式設計Android加密HTTP程式設計
- Android混合程式設計:WebView實踐Android程式設計WebView
- android程式設計師面試寶典Android程式設計師面試
- Android事件驅動程式設計(二)Android事件程式設計
- Android事件驅動程式設計(三)Android事件程式設計
- Android事件驅動程式設計(一)Android事件程式設計
- Android 程式設計下的 Secret CodeAndroid程式設計
- Android獲得statusBar高度Android
- Android 程式設計下設定 Activity 切換動畫Android程式設計動畫
- Android 程式設計下 App Install LocationAndroid程式設計APP
- 程式設計師之路:以Android證道程式設計師Android
- 為啥程式設計師喜歡Android?程式設計師Android
- 黑馬程式設計師Java培訓和Android培訓:程式設計基礎程式設計師JavaAndroid
- USB xHCI Compliant Host Controller驅動是指支援USB 3.0及以上標準的主機控制器驅動程式。這種驅動程式允許計算機系統與USB 3.0及更高版本的裝置進行通訊和資料傳輸。Controller計算機
- Libusb開發教程 USB裝置程式開發
- Android網路程式設計:Retrofit原始碼解析Android程式設計原始碼