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傳輸函式也能使用中斷端點。
相關文章
- garmin USB: linux USB host驅動Linux
- linux usb 子系統(二)- host driverLinux
- CUDA程式設計(4.1)—— 宣告符(global、device、host等)程式設計dev
- Android之串列埠程式設計Android串列埠程式設計
- Android安全加密:HTTPS程式設計Android加密HTTP程式設計
- 閘道器never_host設計
- Android程式設計基礎 • 【第1章 Android程式入門】Android程式設計
- Host是什麼?如何設定host檔案?
- Android Qcom USB Driver學習(零)Android
- Android Qcom USB Driver學習(十四)Android
- Android 網路程式設計系列(4)使用 HttpUrlConnectionAndroid程式設計HTTP
- 【程式設計框架】Android可配置的ScrollView框架程式設計框架AndroidView
- Android網路程式設計:Retrofit原始碼解析Android程式設計原始碼
- Android Camera 程式設計從入門到精通Android程式設計
- USB xHCI Compliant Host Controller驅動是指支援USB 3.0及以上標準的主機控制器驅動程式。這種驅動程式允許計算機系統與USB 3.0及更高版本的裝置進行通訊和資料傳輸。Controller計算機
- 關於 Android 程式設計師最近的狀況Android程式設計師
- 推送——Android程式設計師‘一生的痛’!!Android程式設計師
- Android AOP程式設計之雙擊攔截實現Android程式設計
- Android JNI&NDK程式設計小結及建議Android程式設計
- Android程式設計師的Java後臺學習建議Android程式設計師Java
- Android程式設計師為什麼要去學Java後臺Android程式設計師Java
- 面向切面程式設計AspectJ在Android埋點的實踐程式設計Android
- Java 網路程式設計(TCP程式設計 和 UDP程式設計)Java程式設計TCPUDP
- 程式設計思想 面向切面程式設計程式設計
- USB共享網路:android手機通過USB與Ubuntu進行socket網路通訊AndroidUbuntu
- Go 程式碼中如何繫結 HostGo
- 適用於Android的OpenSL ES指南-程式設計注意事項Android程式設計
- 響應式程式設計在Android 中的一些探索程式設計Android
- 一名Android程式設計師的BAT面經和感想Android程式設計師BAT
- 那些 Android 程式設計師必會的檢視優化策略Android程式設計師優化
- 【go網路程式設計】-HTTP程式設計Go程式設計HTTP
- 程式語言設計,程式設計哲學程式設計
- 程式設計小記-程式設計規範程式設計
- 從程式設計到養生程式設計程式設計
- 程式設計模式-表驅動程式設計程式設計設計模式
- proxy_set _header Host $host;Header
- android 許可權元件設計Android元件
- Android面試題之Android中的設計模式Android面試題設計模式