2012年7月27日 星期五

Android裝置之有線 RS-232 CNC傳輸

近日非常忙,除了工作外就是在研究CNC的RS-232有線傳輸,日前和一位網友通過電話後想想,何不開紿收集Android有線串列傳輸資料呢?反正都要寫傳輸了,雖然傳輸的媒介不同,但要傳的資料及對像都相同,不如同時進行,程式管理介面都相同,一支程式兩種版本(藍芽無線版及有線傳輸版)也不錯啊,所以就開始了收集資料的旅程。

網路資料很多,但非常雜亂,好在本人運氣還不錯,我要的資料都有找到,尤其是xda上的高手雲集,大部份的關鍵資料皆從xda上的討論串中看到的。

Android裝置要作串列傳輸有幾個方向可以走,為了兼顧原廠保固,在這兒不走ROOT的路線,也不走非常複雜的核心重新編譯路線(重刷ROM也會使裝置失去保固),更不走高成本的自行設計一個外接裝置來轉換Android的輸出成為串列訊號作傳輸,講到這兒,Android裝置要作串列傳輸就剩下兩條路可以走,一個就是目前我的作法,走藍芽,但這是無線傳輸,相容性也最高(Android 2.1以上就可以做得到),這不是本篇的重點,另一個就是往USB HOST API的方向走,往這個方向走就可以做到有線串列傳輸,但這個方向所費不貲啊(除非走ROOT的路線不然真的很貴地,以目前的行情來看,成本大約和用”小筆電”作CNC有線RS-232傳輸差不多),請聽我娓娓道來。


相信大家都知道,要讓Android做有線CNC傳輸要有硬體及軟體兩相配合才可以達成 ,以下分別就硬體及軟體分述之:

一、硬體:
最基本的要求就是要有OTG功能之硬體,OTG相信只要大家上網google一下就知道是什麼東西了,在這兒用幾句話簡單地帶過,那就是:Android裝置本身必需要具備扮演USB HOST的功能,讓USB裝置插到Android裝置時,Android裝置可以偵測得到並能夠與該裝置溝通無礙。理由很簡單,因Android裝置並無RS-232傳輸埠,唯一的解決方式就是和那些沒內建RS-232傳輸埠的筆電(現在的筆電應該都已取消RS-232傳輸埠了吧)一樣用USB轉RS-232線來作傳輸,在這種情形下當然需要OTG來讓Android可以使用USB轉RS-232線來作傳輸。


二、軟體:
有了硬體後,再來就是經由軟體來控制硬體使硬體能正確地作動以達到RS-232傳輸的目的,RS-232能傳之後便可以做CNC程式傳輸了。


軟體的部份第一就是作業系統的支援,如果要用USB HOST API來寫程式,最少要API LEVEL 12以上,即最少要Android 3.1.x以上的版本才可以,再來就是最麻煩的驅動程式,Android雖然可以透過USB來控制USB轉RS-232線,但各廠牌因硬體不同,控制的方法也不盡相同,所以我們需要透過驅動程式來控USB轉RS-232線,才不用管不同品牌間USB轉RS-232線在控制上的差異。


有了驅動程式後其他的就不用擔心了,剩下的部份就是寫程式將資料丟給驅動程式,由驅動程式來處理資料傳輸的相關事宜,而我只要負責CNC程式檔案的處理及使用者介面的程式撰寫即可。


結論:
經過多日和PC傳輸實驗確定,Android 確實可以作RS-232傳輸(尚未在CNC機台上測試),只是要在維持原廠保固的情況下(不ROOT,不刷ROM,不改機),可能要挑機種,問題是要如何挑可以傳輸的機種呢?以下提供一個簡單的方法供大家參考:

  1. 準備一台Android 3.1.x以上的Android裝置(手機或平板皆可)。
  2. 準備一條 USB轉RS-232線。
  3. 準備一條OTG線。
  4. 去Market下載一個叫USB Device Info的APP(我手頭的是0.0.5版)安裝並執行。
  5. USB轉RS-232線和OTG線相接後再連接待測的Android裝置。
  6. 按一下APP上的REFRESH,讓APP重新掃描一次目前連接的裝置,如果有多掃描出一個裝置的話即可確定待測Android裝置可以抓到USB埠新連接的裝置,若不確定可以將USB轉RS-232線拔除再REFRESH一次會發現少一個裝置,如此重複測試便可確定您的Android裝置是否支援該 USB轉RS-232線 。
  7. 如果硬體支援沒問題,再來便是看傳輸APP是否支援該型號的USB轉RS-232線,如果支援,那就沒問題了,如果該程式支援CNC傳輸那您便可以透過USB轉RS-232線做傳輸了。
再來要注意的是坊間有許多平板雖然可以支援USB鍵盤、USB滑鼠及USB隨身碟,但這也不代表可以支援其他的USB裝置,所以選購時請小心,不然以目前的行情來看,大廠牌的平板都在萬元上下,買錯了可就虧大了。




4 則留言:

  1. 看完以上文章
    深感佩服
    決定試試看
    晚點回覆結果!

    回覆刪除
  2. 你好,我如果要寫傳輸程式時,技術文件要從何處著手?

    回覆刪除