天天看點

Android(Linux)實時監控序列槽資料

    之前在做WinCE車載方案時,曾做過一個小工具TraceMonitor,用于顯示WinCE系統上應用程式的調試資訊,特别是在實車調試時,用于監控和顯示CAN盒與主機之間的序列槽資料。因為需要搶占市場先機,經常在新車上市前,就得配合CAN解碼盒廠商同步調試車機端軟體。這時候,TraceMonitor就可能派上大用場。遇到說不清是哪一邊的問題時,抓資料一看,就清清楚楚了。有時終端客戶的機器出現了原車功能異常的問題,也可以直接運作該工具,實時抓取序列槽資料提供給我們以分析問題原因。不過該工具需要業務應用程式做特殊處理,不具備通用性,并且是在應用層實作,使用時可能會對性能有影響,但比沒有強了。有一次跟GYP一起調試RK3188安卓車載導航,車機端始終收不到資料,硬體工程師說CAN盒肯定會發,糾結半天,最後隻能用USB轉序列槽闆接出來在電腦上看,資料是有的,但幀格式不對。如果Android上也有一個可以實時監控序列槽資料的工具就友善多了。

    思路有了,實作并不複雜,先寫一個字元驅動bonovo_mon,用于緩存線路規程裡發送和接收到的資料,應用程式ComMon則使用FileInputStream讀取字元裝置資料并顯示。為了使用時友善,實作了資料幀過濾、十六進制顯示、資料儲存、發送儲存的資料到指定郵箱等功能,比WinCE下的TraceMonitor強大不少,可以監測通信序列槽上的所有資料,業務APP無需做任何特殊處理,而且僅在字元驅動bonovo_mon被打開時才向線路規程注冊請求緩存資料,是以不運作ComMon時,對系統幾乎沒有任何影響。

    ComMon的界面及主要功能的使用如下所示。

Android(Linux)實時監控序列槽資料

繼續閱讀