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文章
6089浏览量
35711 -
安卓
+关注
关注
5文章
2139浏览量
57753
发布评论请先 登录
相关推荐
龙芯中科荣获2024年度信息技术应用创新工作委员会卓越贡献成员单位
芯盛智能荣获2024年信息技术应用创新工作委员会卓越贡献成员单位
飞腾助力首届教育信息技术应用创新大赛圆满落幕
有方科技参编的信息技术团体标准发布
如何使用Arduino实现CAN总线通信呢
龙芯中科助力2024首届教育信息技术应用创新大赛成功举办
新品发布 | TOSUN正式推出GPS转CAN FD模块产品,为自动驾驶提供数据支持

中科创达荣获2024年软件和信息技术服务优秀企业
英锐恩科技引领微控制器MCU技术创新,赋能多元化应用!
信创国产化背景下的工控主板发展现状
梯度科技入选2023年信息技术应用创新解决方案名单
英集芯IP6802:至为芯设计的一站式无线充电soc解决方案应用芯片

can信息帧数据链路层组成部分及功能
超级快充,英集芯 IP6566AC支持双路支持盲插快充 PD PPS SCP协议支持充Mate60
龙芯中科三项信创方案入围工信部2023年信息技术应用创新应用示范案例名单

评论