2017年8月,英創在ESM6802 Android基礎版之上,完善了對雙CAN接口的支持。
CAN接口的工作思路大致如下圖所示:
圖1Android 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顯示/發送,可設置一個過濾器。感興趣的客戶可以向英創工程師具體咨詢。
圖3CAN測試APP運行界面
圖4支持HEX發送/顯示
-
嵌入式主板
+關注
關注
7文章
6086瀏覽量
35616 -
安卓
+關注
關注
5文章
2136瀏覽量
57604
發布評論請先 登錄
相關推薦
龍芯中科榮獲2024年度信息技術應用創新工作委員會卓越貢獻成員單位
芯盛智能榮獲2024年信息技術應用創新工作委員會卓越貢獻成員單位
飛騰助力首屆教育信息技術應用創新大賽圓滿落幕
有方科技參編的信息技術團體標準發布
如何使用Arduino實現CAN總線通信呢
龍芯中科助力2024首屆教育信息技術應用創新大賽成功舉辦
新品發布 | TOSUN正式推出GPS轉CAN FD模塊產品,為自動駕駛提供數據支持
![新品發布 | TOSUN正式推出GPS轉<b class='flag-5'>CAN</b> FD模塊產品,為自動駕駛提供數據<b class='flag-5'>支持</b>](https://file.elecfans.com/web2/M00/40/07/pYYBAGJrUk2AaMaTAAAQONQtdzo461.jpg)
中科創達榮獲2024年軟件和信息技術服務優秀企業
信創國產化背景下的工控主板發展現狀
梯度科技入選2023年信息技術應用創新解決方案名單
英集芯IP6802:至為芯設計的一站式無線充電soc解決方案應用芯片
![<b class='flag-5'>英</b>集芯IP<b class='flag-5'>6802</b>:至為芯設計的一站式無線充電soc解決方案應用芯片](https://file1.elecfans.com/web2/M00/00/27/wKgZomasm4KAbjhzAAAt_bCRdYU934.png)
can信息幀數據鏈路層組成部分及功能
超級快充,英集芯 IP6566AC支持雙路支持盲插快充 PD PPS SCP協議支持充Mate60
龍芯中科三項信創方案入圍工信部2023年信息技術應用創新應用示范案例名單
![龍芯中科三項信<b class='flag-5'>創</b>方案入圍工信部2023年<b class='flag-5'>信息技術</b>應用創新應用示范案例名單](https://file1.elecfans.com/web2/M00/C3/19/wKgZomXpfwWAT16RAABpz-I0EpY201.png)
評論