1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
2017年8月,英创在ESM6802 Android基础版之上,完善了对双CAN接口的支持。 CAN接口的工作思路大致如下图所示: 图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显示/发送,可设置一个过滤器。感兴趣的客户可以向英创工程师具体咨询。 图3 CAN测试APP运行界面
图4 支持HEX发送/显示 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 04:39 , Processed in 0.834914 second(s), Total 62, Slave 45 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号