激情综合丁香-激情综合六月-激情综合婷婷亚洲图片-激情综合图区-激情综合网五月

ESM6802 Android版支持雙CAN通信

 2017-8-29     作者:陳昌龍         
文章標簽:C/C++AndroidESM6802CAN

  2017年8月,英創在ESM6802 Android基礎版之上,完善了對雙CAN接口的支持。


  CAN接口的工作思路大致如下圖所示:


ESM6802-Android版支持雙CAN通信.gif

圖1 Android CAN應用流程介紹


  由于Android NDK調用system()函數設置CAN接口不再有效,英創在開機運行了一個腳本服務canconfig,每隔1s種讀一次系統屬性:can0.baudrate和can1.baudrate,當讀到屬性值改變時,即調用ip命令設置啟動can接口。JNI層調用property_set函數設置這兩個屬性,并對java層應用程序提供了native_canOpen、native_canRead、native_canWrite、native_canClose接口。而這四個接口函數以libCanControl.so文件提供給java層應用開發客戶,英創將這四個接口作為靜態方法封裝成了一個Java類:emtronix.hardware.CanControl,用戶只需要(且必須)通過調用CanControl類的這四個接口就可以完成CAN應用程序的開發。當然對于自己開發JNI層的客戶,我們也提供libCanControl.so文件的C/C++源碼做參考。這樣,對于Android應用開發的客戶來說,只需要專注于Java層的應用邏輯開發。


  CanControl類的四個native函數簡單介紹如下:


  public class CanControl {

 

  static {

      System.loadLibrary("CanControl");

  }

  /**

   * 打開CAN接口 ifname,波特率設置為baud,設置CAN socket,只接收id & filtermask == filterid的CAN幀

   * @param ifname CAN接口名字,范圍:can0/can1

   * @param baud  波特率,  1000000,800000,500000,250000,125000,100000,60000,50000,20000,10000

   * @param filterid 過濾ID,大于-1有效

   * @param filtermask    過濾掩碼

   * @return  失敗返回-1; 成功返回CAN socket描述符

   */

  public native static int native_canOpen(String ifname, String baud,int filterid, int filtermask);

 

  /**

   *從can socket讀取一幀數據,內部使用select阻塞監聽可讀操作,并設置超時時間

   * @param fd    can socket文件描述符

   * @param frame     讀取到數據幀

   * @param sec       超時時間,單位s

   * @return      失敗返回-1;成功返回幀數據長度

   */

  public native static int native_canRead(int fd, CanFrame frame, int sec);

 

  /**

   * 向can socket寫函數

   * @param fd    can socket文件描述符

   * @param data  寫數據數組

   * @param id    數據組成can幀的id號

   * @return      失敗返回-1;成功返回寫的byte長度

   */

  public native static int native_canWrite(int fd, byte[] data, int id);

 

  /**

   * 關閉can socket

   * @param fd   can socket文件描述符

   * @return      失敗返回-1;成功返回0

   */

  public native static int native_canClose(int fd);

  }


  英創使用libCanControl.so封裝的CanControl操作類,編寫了一個簡單的CAN通信測試APP:TestCanJni,支持標準幀/擴展幀、 HEX顯示/發送,可設置一個過濾器。感興趣的客戶可以向英創工程師具體咨詢。


ESM6802-Android版支持雙CAN通信.gif

圖3 CAN測試APP運行界面


ESM6802-Android版支持雙CAN通信.gif

圖4 支持HEX發送/顯示

文章標簽:C/C++AndroidESM6802CAN
主站蜘蛛池模板: 日本特一级毛片免费视频| 亚洲二区在线视频| 91视频官网| 久久99爰这里有精品国产| 亚洲国产成人综合| 91在线短视频| 一级日韩片| 久久精品亚洲一级毛片| 永久精品免费影院在线观看网站 | 黄色影院| 国产精品国产亚洲精品看不卡 | 亚洲在线视频观看| 国产人成免费视频| 国产精品原创永久在线观看| 蜜桃福利视频| 超级乱淫片67194免费看| 九九99| 亚洲欧美日韩另类| a毛片免费观看完整| 小泽玛利亚在线精品一区二区| 日韩国产精品99久久久久久| 男女性高清爱潮视频免费观看| 国产一区中文字幕在线观看| 国产啪精品视频网给免丝袜| 看一级特黄a大片日本片黑人| 国产精品单位女同事在线| 久久国产影视免费精品| 哦哦哦用力视频在线观看| 日本护士做xxxxxx视频| 无毒不卡在线播放| 99精品视频在线| www噜噜偷拍在线视频| 一级片黑人| 日本中文不卡| 免费黄色高清视频| 欧美三级成版人版在线观看| 欧美操片| 妖精视频一区二区三区| 直接看的毛片| 色视频在线免费观看| 伊人网国产|