一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

關(guān)于android USB Host 串口編程

 JS資料庫(kù) 2014-06-24

環(huán)境:android 平板4.1 ,OTG線,串口轉(zhuǎn)usb線,開發(fā)板

-------------------------------------------------

任務(wù):使用平板發(fā)送指令給開發(fā)板,開發(fā)板接受后,比如開始打印、

即使用android host 來連接外設(shè)。

 

 

基礎(chǔ)知識(shí):

做usb通信,首先要先弄清楚哪邊是HOST那邊是SLAVE。

比如你的android手機(jī)做host,要獲得slave,用UsbDevice表示slave

要是你的android手機(jī)做slave,要獲得host,用UsbAccessory表示host

以前沒有接觸過android USB Host編程。來到這個(gè)公司后,第一個(gè)任務(wù)就是寫一個(gè)android平板的usb host 的demo,和打印機(jī),ic卡等通信。

一、說一下USB HOST的用處:

       USB設(shè)備分為HOST(主設(shè)備)和SLAVE(從設(shè)備),只有當(dāng)一臺(tái)HOST與一臺(tái)SLAVE連接時(shí)才能實(shí)現(xiàn)數(shù)據(jù)的傳輸。android支持實(shí)現(xiàn)了android外設(shè)協(xié)議的USB硬件。Android外設(shè)和主機(jī)模式,在android3.1或者更高的平臺(tái)上直接支持。但是,對(duì)USB主機(jī)和外設(shè)模式的支持,最終還是要取決于設(shè)備的硬件,而不僅僅是看平臺(tái)的等級(jí)。
我上網(wǎng)搜了一下,早期的一些夏新的手機(jī),以及htc的WM手機(jī)支持USB HOST功能,而現(xiàn)在的android手機(jī)中支持USB HOST的還很非常少,查到的支持USB HOST功能的手機(jī)有三星的I9250,HTC手機(jī)暫未發(fā)現(xiàn),現(xiàn)在測(cè)試使用的HTC T328w不支持USB HOST功能。所以,測(cè)試條件不太充分。
       另外,USB HOST的主要用處,一般是android手機(jī)做HOST主設(shè)備,用來控制其他一些元器件,比如,單片機(jī),鼠標(biāo),游戲手柄,數(shù)碼相機(jī),等等。
說到手機(jī)的usb host 一般用OTG線連接usb外界設(shè)備,但是OTG是什么呢? 今天我才懂,慚愧啊,
這里在簡(jiǎn)單說明下:OTG即On-The-Go,是近年來發(fā)展起來的技術(shù),主要應(yīng)用是讓不同的USB設(shè)備和移動(dòng)設(shè)備之間連接,進(jìn)行數(shù)據(jù)交換。主要應(yīng)用是在一些高端手機(jī)和平板上,在具有OTG功能的平板或手機(jī)上,我們可以連接各種USB設(shè)備,例如鼠標(biāo)、鍵盤、U盤等,這對(duì)于移動(dòng)辦公來說還是有一定作用的。尤其是對(duì)U盤、讀卡器等設(shè)備的讀取,在身邊沒有電腦的情況就可利用移動(dòng)設(shè)備直接使用這些設(shè)備。

連接無線鍵鼠,鼠標(biāo)移動(dòng)尚算靈敏,但是部分輸入法使用鍵盤打字會(huì)出現(xiàn)嚴(yán)重的延遲,而且暫時(shí)還沒試出哪個(gè)輸入法支持USB鍵盤的中文輸入。

 

連接U盤,這個(gè)算比較常見的一個(gè)用途,效果不錯(cuò)。

 

       而很少把手機(jī)端當(dāng)做從設(shè)備,與電腦端通過USB HOST進(jìn)行通信的。另外看到一個(gè)人說不能通過USB HOST方式與電腦實(shí)現(xiàn)通信:
二、通過socket方式進(jìn)行連接
     開始的時(shí)候看到一個(gè)例子說是通過USB HOST實(shí)現(xiàn)的PC與手機(jī)端進(jìn)行連接,我根據(jù)查到的資料和自己的理解覺得大概是如下的意思:
      1.基于socket編程方式,在android手機(jī)端和pc端進(jìn)行連接傳輸數(shù)據(jù)。
      2.連接時(shí),需要通過adb forward方式進(jìn)行端口轉(zhuǎn)發(fā),才能連接的上去。
      3.需要用到broadcast來進(jìn)行,在server端用adb shell 命令開啟android端的socket連接服務(wù)。
      4.主要基于android.hardware.usb包下的UsbManager 類和UsbAccessory類。
      5.然后就是一些IO操作,IO處理及關(guān)閉優(yōu)化。
     最關(guān)鍵的兩點(diǎn)就是:
     1)端口轉(zhuǎn)發(fā):
      Runtime.getRuntime().exec(“adb forward tcp :12580 tcp:10086 ”);
      在服務(wù)端監(jiān)聽10086端口。
       2)在server端java程序中使用adb 命令啟動(dòng)client端的service。
         Runtime.getRuntime().exec(“adb shell am broadcast –a NotifyServiceStart”);
       后來測(cè)試多次發(fā)現(xiàn),這個(gè)方式?jīng)]有用到USB HOST的方式,依然是socket通信,只不過是進(jìn)行了一下端口轉(zhuǎn)發(fā)。
       另外,關(guān)于socket通信時(shí),寫的android程序在模擬器上可以與PC上的server端進(jìn)行通信,而把程序裝到真機(jī)上時(shí),就不能實(shí)現(xiàn)通信,這個(gè)問題的主要原因是PC端和手機(jī)上的無線網(wǎng)絡(luò)不在一個(gè)網(wǎng)段,無法進(jìn)行連接。
三、串口通信,hid訪問
       在網(wǎng)上查到一些關(guān)于USB HOST的開發(fā)都是基于基于android端與一些單片機(jī)進(jìn)行串口通信的,串口轉(zhuǎn)usb

USB HID

是Human Interface Device的縮寫,由其名稱可以了解HID設(shè)備是直接與人交互的設(shè)備,例如鍵盤、鼠標(biāo)與游戲桿等。不過HID設(shè)備并不一定要有人機(jī)接口,只要符合HID類別規(guī)范的設(shè)備都是HID設(shè)備。
  
mini usb 以前的手機(jī)的usb那樣
micro usb 現(xiàn)在手機(jī)的usb口那樣
總結(jié):
串口通信才是本次完成任務(wù)的重點(diǎn), 既然android的SDK里,在3.0以后,已經(jīng)有支持usb外設(shè),
所以我此次想法,先試試用java來,即SDK里的API來和usb外設(shè)通信。
其實(shí)SDK里的API實(shí)現(xiàn)也是在jni來ndk編程,網(wǎng)上還有一些c/c++的api,不懂如何。
 
usb HID模式 ,串口轉(zhuǎn)usb兩種,開始我以為要分開這兩種情況。
其實(shí),usb相關(guān)的設(shè)備(無論是直接usb還是串口轉(zhuǎn)usb)都是可以和android host設(shè)備通信的。 
最近在android平板上開發(fā)一個(gè)程序,可以通過mini Usb控制外部設(shè)備,外部設(shè)備接口是串口轉(zhuǎn)USB。平板和外部設(shè)備之間通過OTG線連接,設(shè)備由平板供電。
系統(tǒng)本意是想通過平板可以向設(shè)備發(fā)送串口指令。
在串口轉(zhuǎn)usb編寫程序,我可以連接到設(shè)備,也可以發(fā)送數(shù)據(jù),不是-1了,但是
數(shù)據(jù)都是錯(cuò)的,原因后來發(fā)現(xiàn)是,在設(shè)置波特率的時(shí)候,沒有效果,為什么沒效果呢
因?yàn)榇谵D(zhuǎn)usb線里有一個(gè)芯片, 不同型號(hào)的芯片,設(shè)置波特率的方式不同,即
mDeviceConnection.controlTransfer(0x40, 0x03, baud, index, null, 0, 0); // set
        // baudrate
上面的方法的參數(shù)值不同。
糾結(jié)了好久,參考了國(guó)外的大哥寫的,才調(diào)通了FT的芯片。

 在開發(fā)串口,還有一些串口的測(cè)試工具在附件里。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    视频一区日韩经典中文字幕| 福利视频一区二区在线| 亚洲中文在线观看小视频| 国产超碰在线观看免费| 在线精品首页中文字幕亚洲 | 国产亚洲欧美另类久久久| 亚洲精品国产第一区二区多人| 日韩免费av一区二区三区| 不卡在线播放一区二区三区| 欧美国产日产在线观看| 日韩蜜桃一区二区三区| 一区二区三区国产日韩| av中文字幕一区二区三区在线| 日韩欧美国产三级在线观看| 一区二区日韩欧美精品| 护士又紧又深又湿又爽的视频| 福利在线午夜绝顶三级| 精品少妇人妻av免费看| 国产一级不卡视频在线观看| 欧美大粗爽一区二区三区| 色狠狠一区二区三区香蕉蜜桃| 久久这里只有精品中文字幕| 欧美日韩国产综合特黄| 国产成人亚洲综合色就色| 老司机精品视频在线免费| 国产成人高清精品尤物| 香蕉网尹人综合在线观看| 国产女优视频一区二区| 中文字字幕在线中文乱码二区 | 日韩欧美综合在线播放| 99久久免费看国产精品| 国产又猛又大又长又粗| 欧美在线观看视频免费不卡| 欧美亚洲另类久久久精品| 高清一区二区三区不卡免费| 日本三区不卡高清更新二区| 精品国产91亚洲一区二区三区 | 黄色日韩欧美在线观看| 一区二区三区亚洲天堂| 欧美人与动牲交a精品| 国产日韩精品激情在线观看|