掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及can通讯领域,特别涉及一种基于android系统can通信方法、装置及设备。

背景技术

在现有技术中,android原生系统中没有任何API支持CAN总线的操作,在系统没有做特别的支持情况下,应用程序需要在native层的库上实现CAN总线接口的使用,而CAN总线接口的参数配置需要root权限,必然涉及到系统的root权限开放及应用程序需要有提权到root权限的能力,而系统开放root权限也必然存在安全性的风险。

有鉴于此,提出本申请。

发明内容

本发明公开了一种基于android系统can通信方法、装置及设备,旨在解决应用程序无root权限使用can总线的问题。

本发明第一实施例提供了一种基于android系统can通信方法,包括:

监测到系统property属性变更时,调用can参数配置服务对系统进行can参数配置,同时初始化can通讯库,其中,所述can通讯库运行在native层;

调用所述can通讯库初始化can数据收、发FIFO通道,并创建can接收、发送服务线程;

获取对can通讯库接口的调用信息,触发接收服务线程接收数据或发送服务线程发送数据。

优选地,所述监测到系统property属性变更时,调用can参数配置服务对系统进行can参数配置具体为:

在系统启动时,init程序根据rc文件配置监测系统property属性是否发生变更;

若是,can参数配置服务调用系统ip工具对系统的can参数进行配置,其中,所述can参数包括系统can结点的波特率、up/dowm、triple-sampling开关、bus_off timeout。

优选地,所述初始化can通讯库包括:初始化can通讯库并打开can设备、can通讯库根据应用程序传入的参数设置通信时要过滤的CAN ID信息并初始化本终端CAN ID。

优选地,获取对can通讯库接口的调用信息,触发接收服务线程接收数据具体为:

在can设备有数据输入时唤醒阻塞,将can设备的数据读取到接收FIFO中并触发接收事件通知回调函数读取数据。

优选地,获取对can通讯库接口的调用信息,发送服务线程发送数据具体为:

在发送FIFO中有数据填入唤醒阻塞时,从发送FIFO中读取数据使用can通讯库接口发送数据。

本发明第二实施例提供了一种基于android系统can通信装置,包括:

参数配置单元,用于监测到系统property属性变更时,调用can参数配置服务对系统进行can参数配置,同时初始化can通讯库,其中,所述can通讯库运行在运行在native层;

通讯库初始化单元,用于调用所述can通讯库初始化can数据收、发FIFO通道,并创建can接收、发送服务线程;

数据收发单元,用于获取对can通讯库接口的调用信息,触发接收服务线程接收数据或发送服务线程发送数据。

优选地,所述参数配置单元具体用于:

在系统启动时,init程序根据rc文件配置监测系统property属性是否发生变更;

若是,can参数配置服务调用系统ip工具对系统的can参数进行配置,其中,所述can参数包括系统can结点的波特率、up/dowm、triple-sampling开关、bus_off timeout。

优选地,所述数据收发单元具体用于:

在can设备有数据输入时唤醒阻塞,将can设备的数据读取到接收FIFO中并触发接收事件通知回调函数读取数据。

优选地,所述数据收发单元具体用于:

在发送FIFO中有数据填入唤醒阻塞时,从发送FIFO中读取数据使用can通讯库接口发送数据。

本发明第三实施例提供了一种基于android系统can通信设备,包括存储器以及处理器,所述存储器内存储有计算机程序,所述计算机程序能够被所述处理器执行,以实现如上任意一项所述的一种基于android系统can通信方法。

基于本发明提供的一种基于android系统can通信方法、装置及设备,通过在系统时监测系统property属性发生变更时,调用can参数配置服务对系统进行can参数配置,同时初始化can通讯库,在can通讯库初始化之后,通过can通讯库初始化can数据收、发FIFO通道,并创建can接收、发送服务线程,在接收到can通讯库接口的调用信息,触发接收服务线程接收数据或发送服务线程发送数据,实现了应用程序无root权限使用can总线的问题;以高内聚,低耦合的宗旨封装can通讯库,实现can通讯库的高独立性,满足第三方客户或应用程序的二次开发使用。

附图说明

图1是本发明第一实施例提供了一种基于android系统can通信方法的流程示意图;

图2是本发明第二实施例提供了一种基于android系统can通信装置的模块示意图;

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

实施例中提及的“第一第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一第二”在允许的情况下可以互换特定的顺序或先后次序。应该理解“第一第二”区分的对象在适当情况下可以互换,以使这里描述的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

以下结合附图对本发明的具体实施例做详细说明。

本发明公开了一种基于android系统can通信方法、装置及设备,旨在解决应用程序无root权限使用can总线的问题。

请参阅图1,本发明第一实施例提供了一种基于android系统can通信方法,其可由基于android系统can通信设备(以下简称通信设备)来执行,特别的,由所述通信设备内的一个或者多个处理器来执行,以至少实现如下步骤:

S101,监测到系统property属性变更时,调用can参数配置服务对系统进行can参数配置,同时初始化can通讯库,其中,所述can通讯库运行在native层;

在本实施例中,所述通信设备可为台式电脑、笔记本电脑、服务器、工作站等具有数据处理分析能力的终端,其中,所述通信设备内可安装有相应的操作系统以及应用软件,并通过操作系统以及应用软件的结合来实现本实施例所需的功能。

具体地,在本实施例中,在系统启动时,init程序根据rc文件配置监测系统property属性是否发生变更;

若是,can参数配置服务调用系统ip工具对系统的can参数进行配置,其中,所述can参数可以包括但不仅限于系统can结点的波特率、up/dowm、triple-sampling开关、bus_off timeout,其中,can通讯库运行在native层,其可以使用jni导出java接口,InitCan,CanReadEven,CanWriteData,UninitCan接口;应用程序通过InitCan后返回的句柄实现对can设备的后继读、写及注销操作,提高通信库模块的独立性。

需要说明的是,系统ip工具对系统can结点的波特率、up/dowm、triple-sampling开关及bus_off timeout等参数配置是需要root权限,而设置property属性只需要用户级权限,使用can参数配置服务获取property属性配置can结点参数的方式可以有效的解决应用程序无root权限而实现can结点的参数配置。

S102,调用所述can通讯库初始化can数据收、发FIFO通道,并创建can接收、发送服务线程;

需要说明的是,在本实施例中,应用程序可以调can通讯库初始化接口,初始化can通讯库,其中,初始化can通讯库包括:

1.can通讯库初始化完成并打开can设备;

2.can通讯库根据应用程序传入的参数设置can通信时要过滤的CAN ID信息,初始化本终端CAN ID;

3.通信库初始化can数据收发FIFO通道,创建can接收、发送服务线程并反回初始化完成状态信息。

S103,获取对can通讯库接口的调用信息,触发接收服务线程接收数据或发送服务线程发送数据。

需要说明的是,在本实施例中:

应用程序可以调用can通讯库接口发送数据;其中,所述can通讯库根据接口入的数据拷贝到发送FIFO,并触发发送线程发送数据。

具体地:can发送线程阻塞等待数据发送,当发送FIFO中有数据填入唤醒阻塞,从发送FIFO中读取数据使用can通讯库接口发送数据;can发送线程收到退出信号时执行线程退出。

应用程序还可以调用can通讯库注册can数据接收事件回调函数,can数据接收线程接收数据写入接收FIFO并触发接口事件,回调注册的接收回调函数,回调函数从FIFO中取走can数据。

具体地:can接收线程阻塞等待接收数据,当can设备有数据输入时唤醒阻塞,将can设备数据读取到接收FIFO中并触发接收事件通知回调函数读取数据;can接收线程收到退出信号时执行线程退出。

应用程序还可以调用can通讯库结束通信,具体地:can通讯库触发接收、发送线程退出,并等待接收、发送线程结束;can通讯库销毁收发FIFO,关闭can设备,并反初始化通信库。

上述实施例至少包括以下有益效果:

1、使用property属性进行can参数配置服务与应用程序之间的参数传递与配置,有效解决应用程序无须root权限而can参数配置问题。

2、can通信库运行在native层,独立模块化封装,方便二次开发使用。

3、can通信库结合FIFO使用实现数据收发双线程异步通信,合理规避android应用程序使用不当可能导致ANR问题。

4、can收/发线程以阻塞-唤醒方式运行,有效果提高程序的运行效果,降低CPU使用率,因为在嵌入式硬件系统中CPU资源往往比较限制。

请参阅图2,本发明第二实施例提供了一种基于android系统can通信装置,包括:

参数配置单元201,用于监测到系统property属性变更时,调用can参数配置服务对系统进行can参数配置,同时初始化can通讯库,其中,所述can通讯库运行在运行在native层;

通讯库初始化单元202,用于调用所述can通讯库初始化can数据收、发FIFO通道,并创建can接收、发送服务线程;

数据收发单元203,用于获取对can通讯库接口的调用信息,触发接收服务线程接收数据或发送服务线程发送数据。

优选地,所述参数配置单元具体用于:

在系统启动时,init程序根据rc文件配置监测系统property属性是否发生变更;

若是,can参数配置服务调用系统ip工具对系统的can参数进行配置,其中,所述can参数包括系统can结点的波特率、up/dowm、triple-sampling开关、bus_off timeout。

优选地,所述数据收发单元具体用于:

在can设备有数据输入时唤醒阻塞,将can设备的数据读取到接收FIFO中并触发接收事件通知回调函数读取数据。

优选地,所述数据收发单元具体用于:

在发送FIFO中有数据填入唤醒阻塞时,从发送FIFO中读取数据使用can通讯库接口发送数据。

本发明第三实施例提供了一种基于android系统can通信设备,包括存储器以及处理器,所述存储器内存储有计算机程序,所述计算机程序能够被所述处理器执行,以实现如上任意一项所述的一种基于android系统can通信方法。

基于本发明提供的一种基于android系统can通信方法、装置及设备,通过在系统时监测系统property属性发生变更时,调用can参数配置服务对系统进行can参数配置,同时初始化can通讯库,在can通讯库初始化之后,通过can通讯库初始化can数据收、发FIFO通道,并创建can接收、发送服务线程,在接收到can通讯库接口的调用信息,触发接收服务线程接收数据或发送服务线程发送数据,实现了应用程序无root权限使用can总线的问题;以高内聚,低耦合的宗旨封装can通讯库,实现can通讯库的高独立性,满足第三方客户或应用程序的二次开发使用。

示例性地,本发明第三实施例和第四实施例中所述的计算机程序可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述实现一种基于android系统can通信设备中的执行过程。例如,本发明第二实施例中所述的装置。

所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述一种基于android系统can通信方法的控制中心,利用各种接口和线路连接整个所述实现对一种基于android系统can通信方法的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现一种基于android系统can通信方法的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、文字转换功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、文字消息数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

其中,所述实现的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一个计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

技术分类

06120115919637