System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于数据库,特别是涉及基于mcu主从场景下轻量级共享数据库及其使用方法。
技术介绍
1、在汽车应用领域的车载传感器信号、工业安全生产的控制信号,底层的控制单元基本上都是mcu,这类系统基本上都可以划分为主从模块,主模块作为感知层负责信号的识别存储,从模块作为应用层负责信号的读取,主从模块共享同一份数据。
2、其次在某些安全性较高或固定应用的场景下,这些信号有的是事先已经明确进行了规定和定义,工作过程中所有产生的信号数据,都做到可预知、可识别、可查询,因此不存在未知信号数据,即不存在新增的数据。
3、这些信号数据在作为主从的mcu之间进行流转共享,为了保证系统的安全可靠,在系统运行时,需要对这些数据进行安全的存储访问。因此,负责提供数据存储查询的模块必须具有可靠性和安全性、实时性。
4、对数据提供存储查询功能的模块,主要是数据库技术,现有的数据库方案,有传统的关系数据库sql,如mysql;有非关系数据库(nosql),如mongodb;以及键值【key-value】数据库,如dynamo,redis。但是这些类型的数据库有着各自的特点和应用场景,存在的特点如下:
5、1.关系数据库,需要维护数据表,后期数据量的增大,可能需要做分库分表处理;
6、2.数据库的部署需要一定的软硬件条件,无法同时兼顾不同的平台;
7、3.数据内存的动态扩展,容易造成内存资源的紧张。
8、因此上面的数据方案,要同时兼顾不同的平台,满足软硬件资源的限制要求,同时
技术实现思路
1、本专利技术的目的在于提供基于mcu主从场景下轻量级共享数据库及其使用方法,通过充分利用到特定的应用场景,和考虑到一般mcu的特殊性,规避了不稳定的因素,极大的提高了数据共享的的稳定性和可靠性。
2、为解决上述技术问题,本专利技术是通过以下技术方案实现的:
3、作为本专利技术提供的第一个方面,本专利技术为一种基于mcu主从场景下轻量级共享数据库,包括:
4、数据库接口:所述数据库接口包括set_value接口、register_callback接口、get_value接口;当数据项发生变化时,从register_callback接口调用用户注册的回调函数;set_value接口、get_value接口分别与主mcu、从mcu通信连接;通过数据项回调函数接口,当数据项发生变化时,可以调用用户注册的回调函数,提供更加灵活的应用;
5、数据库同步接口:所述数据库同步接口包括weak_recv接口、weak_send接口;当数据库中的数据发生变化时,通过weak_recv接口、weak_send接口传输数据更新信息;通过底层数据库同步接口,当主从数据库数据发生变化时,主动通知对方进行数据更新;
6、数据存储单元:其用于对数据库接口、数据库同步接口传输的数据进行存储,所有数据项都分类进行存储管理,拥有类似数据表的功能,不存在新增数据,因此,只需提供读写接口既可。
7、进一步地,所述数据存储单元存储的库文件中的数据全部事先规划,规划内容包括:存储库文件的数据库的个数、每个数据库中数据项的数量;若需要新增数据项,则重新编译发布新的静态库和动态库版本;所有数据项的内存都是静态分配,不占用动态内存空间,因此在运行过程中不会对内存造成影响,提高了自身的稳定性和可靠性。
8、进一步地,所述库文件中的数据全部采用实体对象的方式创建,不使用动态内存的方式,即占据固定的内存,因此在运行过程中不会有内存泄漏和申请内存异常的现象出现。
9、进一步地,所述库文件采用纯c语言编写,提高可移植性,可适配不同的mcu架构。
10、进一步地,所述数据项的内存采用静态分配,不占用动态内存空间,因此在运行过程中不会对内存造成影响,提高了自身的稳定性和可靠性,所述数据项均采用分类的方式进行存储管理,拥有类似数据表的功能,不存在新增数据。因此只需提供读写接口既可。
11、作为本专利技术提供的第二个方面,本专利技术为一种基于mcu主从场景下轻量级共享数据库的使用方法,所述的方法基于第一个方面提供的轻量级共享数据库实现,所述的方法包括以下步骤:
12、步骤1:主mcu、从mcu采用静态库的方式加入轻量级数据库;
13、步骤2:主mcu/从mcu获取数据并更新/设置数据库中的数据;
14、步骤3:判断数据项的值是否变化,根据判断结果同步数据或判断主mcu/从mcu是否从weak_recv接口接收到从mcu/主mcu传输的同步数据;
15、步骤4:根据判断结果更新数据库的数据或调用回调函数;
16、步骤5:如果系统出现异常,则退出,否则循环步骤2-5。
17、进一步地,所述主mcu/从mcu分别获取数据并更新/设置数据库中的数据的方法为:
18、对于主mcu:主mcu获取传感器数据,使用set_value接口更新数据库的数据;
19、对于从mcu:从mcu使用get_value接口从数据库中获取数据,在需要设置数据库中数据的值时,采用set_value接口进行数据的设置。
20、进一步地,所述步骤3中根据判断结果同步数据的方法为:
21、对于主mcu:
22、步骤stp1:如果数据库内部检测到数据项的值发生了变化,则调用weak_send接口给从mcu发送该数据,并判断该数据项是否注册了数据回调函数callback;否则,进入步骤stp3;
23、步骤stp2:若用户注册了数据回调函数callback,则调用回调函数,否则进入步骤stp3;
24、步骤stp3:判定主mcu是否从weak_recv接口接收到从mcu的同步数据;
25、对于从mcu:
26、步骤ctp1:如果数据库内部检测到数据项的值发生了变化,则调用weak_send接口给主mcu发送该数据,并判断该数据项是否注册了数据回调函数callback;否则,进入步骤ctp3;
27、步骤ctp2:若用户注册了数据回调函数callback,则调用回调函数,否则进入步骤ctp3;
28、步骤ctp3:判定从mcu是否从weak_recv接口接收到主mcu的同步数据。
29、进一步地,所述步骤4中根据判断结果更新数据库的数据或调用回调函数的方法为:
30、对于主mcu:
31、步骤s11:若数据项的数值发生变化,则更新数据库的数据,并判断该数据项是否注册了数据回调函数callback;否则,进入步骤s13;
32、步骤s12:若用户注册了数据回调函数callback,则调用回调函数,否则进入步骤s13;
33、步骤s13:判断系统是否本文档来自技高网...
【技术保护点】
1.基于MCU主从场景下轻量级共享数据库,其特征在于,包括:
2.根据权利要求1所述的基于MCU主从场景下轻量级共享数据库,其特征在于,所述数据存储单元存储的库文件中的数据全部事先规划,规划内容包括:
3.根据权利要求2所述的基于MCU主从场景下轻量级共享数据库,其特征在于,所述库文件中的数据全部采用实体对象的方式创建。
4.根据权利要求2所述的基于MCU主从场景下轻量级共享数据库,其特征在于,所述库文件采用纯C语言编写。
5.根据权利要求2所述的基于MCU主从场景下轻量级共享数据库,其特征在于,所述数据项的内存采用静态分配,所述数据项均采用分类的方式进行存储管理。
6.一种基于MCU主从场景下轻量级共享数据库的使用方法,其特征在于,所述的方法基于权利要求1-5任意一项所述的轻量级共享数据库实现,所述的方法包括以下步骤:
7.根据权利要求6所述的基于MCU主从场景下轻量级共享数据库的使用方法,其特征在于,所述主MCU/从MCU分别获取数据并更新/设置数据库中的数据的方法为:
8.根据权利要求6所述
9.根据权利要求6所述的基于MCU主从场景下轻量级共享数据库的使用方法,其特征在于,所述步骤4中根据判断结果更新数据库的数据或调用回调函数的方法为:
...【技术特征摘要】
1.基于mcu主从场景下轻量级共享数据库,其特征在于,包括:
2.根据权利要求1所述的基于mcu主从场景下轻量级共享数据库,其特征在于,所述数据存储单元存储的库文件中的数据全部事先规划,规划内容包括:
3.根据权利要求2所述的基于mcu主从场景下轻量级共享数据库,其特征在于,所述库文件中的数据全部采用实体对象的方式创建。
4.根据权利要求2所述的基于mcu主从场景下轻量级共享数据库,其特征在于,所述库文件采用纯c语言编写。
5.根据权利要求2所述的基于mcu主从场景下轻量级共享数据库,其特征在于,所述数据项的内存采用静态分配,所述数据项均采用分类的方式进行存储管理。
<...【专利技术属性】
技术研发人员:张剑龙,
申请(专利权)人:深圳联友科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。