一种食谱文件结构的制作方法

文档序号:32755263发布日期:2022-12-31 03:07阅读:41来源:国知局
一种食谱文件结构的制作方法

1.本发明属于烹饪技术领域,特别涉及到了一种食谱文件结构。


背景技术:

2.由于在嵌入式设备中资源稀缺,运行时设备数据库会消耗大量的内存,拖慢运行速度。现有的食谱储存格式多为json格式;而当采用json格式进行存储结构体数据时,若需要检索结构体是否存在某个关键词或者值,就需要对设备整个文件进行搜索,进行遍历查找,这将会消耗大量时间,同时占用极大的运行内存,json的描述节点也会占用很多文本空间。


技术实现要素:

3.为了解决上述问题,本发明的首要目的在于提供一种食谱文件结构,可避免字段的占用和加载食谱时的解析操作;且支持只检索文字。
4.为了实现上述目的,本发明的技术方案如下。
5.一种食谱文件结构,该食谱文件结构包括有文件头、运行参数段、可视字符偏移地址表、可视字符段、食谱示例图段;
6.文件头:用于表明当前食谱数据方向、表明当前食谱所属解析类型、表明当前文件创建的时间戳、表明运行参数结构体的部分的大小、表明食谱支持语言的数量、表明图片格式、表明可视字符段的起始位置、表明可视偏移地址表起始位置、表明示例图起始位置;
7.运行参数段:用于存储食谱的运行参数;
8.可视字符偏移地址表:表明运行参数中指向可视字符段的指针变量的位置与各个语言的可视字符段的位置关系;
9.可视字符段:用于储存食谱的文字描述;
10.食谱示例图段:用于食谱示例图的展示。
11.文件头、运行参数段相邻,该食谱文件读取时,首先只读取文件头,获取当前食谱数据方向、当前食谱所属解析类型、当前文件创建的时间戳、运行参数结构体的部分的大小、食谱支持语言的数量、图片格式、可视字符段的起始位置、可视偏移地址表起始位置、示例图起始位置;并根据使用者指令直接进入运行参数段或可视字符段或食谱示例图段或可视字符偏移地址表。
12.在该食谱文件结构中,其文件结构的设置,具有以下有益效果:1、其设置可以实现将把设备内存中的数据,直接存储到文件中,可以避免数据解析部分操作;2、把可视字符段串的内容与运行参数的内存分段存储,可利用文件头中字符部分的起始位置可跳过参数部分,直接进入可使字符段,在字符检索时,可避免时间的消耗,以及避免内存的占用,使用更加方便;3、利用可视偏移地址表格,可以使得相同描述信息区分出多种语言,并且修改某个语言的数据不影响现有的数据;4、食谱示例图段能够保证食谱的完整性,避免多个食谱链接到同一个文件带来的互斥问题(当删除一个食谱时,需要检索其他食谱是否有共用图片
的麻烦)5、文件头的信息可实现快速识别出各个食谱段信息,实现不加载食谱参数,直接找到食谱描述字符的起始位置;6、利用文件存储的地址计算出内存中对应语言的精准的偏移地址,并且减少切换语言的加载时间;7、利用分段,实现按需加载,避免内存浪费。
13.进一步的,所述文件头长度固定占用56个字节;
14.4字节表明当前食谱数据方向;
15.4字节表明当前食谱所属解析类型;
16.8字节表明当前文件创建的时间戳;
17.8字节表明运行参数结构体的部分的大小;
18.8字节表明可视字符段的起始位置;
19.4字节表明食谱支持语言的数量;
20.4字节表明图片格式;
21.8字节表明可视偏移地址表起始位置;
22.8直接表明示例图起始位置。
23.进一步的,食谱的运行参数包括有基础参数、步骤参数和材料参数。
24.进一步的,当需要加载食谱语言时,根据可视字符偏移地址表进行选择加载可视字符段到运行参数内存中。
25.进一步的,可视字符段是把食谱的数据文字描述信息,从字符串部分开始的位置开始写入,并且每个字符串直接间隔一个“/0”。用“/0”为间隔,可以避免在字符串内容中出现相同的符号,同时也可以一定程度上提高检索的速度。
26.进一步的,在检索使用该食谱文件结构的食谱文件中的关键词句时,包括以下步骤:
27.步骤a1:读取文件头数据;
28.步骤a2:读取出可视字符段,并对可视字符段部分进行查找;
29.步骤a3:返回查找结果。
30.进一步的,在程序快速加载使用该食谱文件结构的食谱文件时,包括以下步骤:
31.步骤b1:读出文件头数据;
32.步骤b2:读取食谱文件的运行参数;
33.步骤b3:把可视字符偏移地址表加载到内存中;
34.步骤b4:把可视字符段加载到运行参数中;
35.步骤b5:把食谱示例图段数据读取出来,保存到内存中使用。
36.进一步的,程序生成该食谱文件结构的食谱文件时,包括以下步骤:
37.步骤c1:构建食谱文件的文件头;
38.步骤c2:写入食谱文件的运行参数;
39.步骤c3:创建可视字符偏移地址链表;
40.步骤c4:写入可视字符段;
41.步骤c5:写入可视字符偏移地址表;
42.步骤c6:写入食谱示例图段;
43.步骤c7:写入文件头。
44.本发明中,其文件结构的设置,具有以下有益效果:1、其设置可以实现将把内存中
的数据,直接存储到文件中,可以避免数据解析部分操作;2、把可视字符段串的内容与运行参数的内存分段存储,可利用文件头中字符部分的起始位置可跳过参数部分,直接进入可使字符段,使用更加方便;3、利用可视偏移地址表格,可以使得相同描述信息区分出多种语言,并且修改某个语言的数据不影响现有的数据;4、食谱示例图段能够保证食谱的完整性,避免多个食谱链接到同一个文件带来的互斥问题(当删除一个食谱时,需要检索其他食谱是否有共用图片的麻烦)5、文件头的信息可实现快速识别出各个食谱段信息,实现不加载食谱参数,直接找到食谱描述字符的起始位置;6、利用文件存储的地址计算出内存中对应语言的精准的偏移地址,并且减少切换语言的加载时间;7、利用分段,实现按需加载,避免内存浪费。
附图说明
45.图1是该食谱文件结构的结构示意图。
具体实施方式
46.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
47.一种食谱文件结构,该食谱文件结构依次包括有文件头、运行参数段、可视字符偏移地址表、可视字符段、食谱示例图段;
48.文件头:用于表明当前食谱数据方向、表明当前食谱所属解析类型、表明当前文件创建的时间戳、表明运行参数结构体的部分的大小、表明食谱支持语言的数量、表明图片格式、表明可视字符段的起始位置、表明可视偏移地址表起始位置、表明示例图起始位置;
49.运行参数段:用于存储食谱的运行参数;在装置进行工作时,装置可在读取运行参数后进行运行、工作。具体的,在读取到参数的时候,要根据装置的内存数据方向与食谱的数据方向进行相互转换。同时,运行参数也是代表了食谱在装置的运行内存占据的内存数据;包含有指向可视字符段的指针变量空间。且当装置不需要使用到可视字符段的场景下,也可以不加载可视字符段直接使用运行参数进行工作。
50.可视字符偏移地址表:表明运行参数中指向可视字符段的指针变量的位置与各个语言的可视字符段的位置关系;当需要加载食谱语言时,可以根据可视字符偏移地址表进行选择加载可视字符段到装置的运行参数内存中。
51.可视字符段:用于储存食谱的文字描述;食谱示例图段:用于食谱示例图的展示。在使用装置时,可以通过文件头跳转至该处,用于看食谱的具体情况,以让使用者确认是否选择该食谱,以及如何准备食材、食材放入步骤。
52.该食谱文件读取时,首先只读取文件头,获取当前食谱数据方向、当前食谱所属解析类型、当前文件创建的时间戳、运行参数结构体的部分的大小、食谱支持语言的数量、图片格式、可视字符段的起始位置、可视偏移地址表起始位置、示例图起始位置;并根据使用者指令直接进入运行参数段或可视字符段或食谱示例图段或可视字符偏移地址表。
53.进一步的,所述文件头长度固定占用56个字节;
54.4字节表明当前食谱数据方向;作用是描述创建该食谱所用的机器内部数据存储
的方式;作用是描述创建该食谱所用的机器内部数据存储的方式。因为有的设备内存数据是大端、有的是小端,但是两种存储的方式不一样。目的是避免食谱在不同设备上因为大端小端的问题导致解析异常。写入的数据是固定的0x01234567。解析到的数据不一致时,则说明与当前的存储方式不一致,需要在解析的时候再重新转换一次数据。
55.4字节表明当前食谱所属解析类型;作用是描述食谱所属的设备;目的是让解析食谱的程序能够根据不同食谱所属类型选用对应食谱类型的结构体来解析食谱运行参数部分。
56.8字节表明当前文件创建的时间戳;表明创建食谱时的时间。目的是用于区分食谱的不同版本。时间戳单位为秒。当单片机无法确定当前时间戳的时候,可以用当前食谱库的食谱总个数代替。食谱库为多个使用该食谱文件结构的食谱所组成的数据库。
57.8字节表明运行参数结构体的部分的大小;目的是告诉解析食谱的程序,该食谱的运行参数占多大空间。让食谱解析程序,在食谱加载时,全部读出运行食谱参数。
58.8字节表明可视字符段的起始位置;可让设备直接跳转至可视字符段,用于展示食谱步骤描述、食谱简介等文字描述。
59.4字节表明食谱支持语言的数量;因为食谱有可能有多个国家的语言进行描述,目的是告诉解析食谱的程序该食谱有多少种语言的可视化文字。同时,由于程序读取文件是连续的,无法直接表明出表格形式。这个支持语言数量也是用于规定可视字符偏移地址表的长度。
60.4字节表明图片格式;
61.8字节表明可视偏移地址表起始位置;
62.8直接表明示例图起始位置。可让设备直接跳转至食谱示例图段,用于展示食谱的图例。
63.进一步的,食谱的运行参数包括有基础参数、步骤参数和材料参数。
64.基础参数:用于存放事故欧的基础参数信息,由不同的设备类型来决定。比如:食谱的uuid;食谱版本号;食谱所属类的uuid;食谱创建时间戳;制作难度;总运行时间;描述食谱分量;总步骤数;材料数;步骤列表起始地址;材料列表。
65.步骤参数:用于存放食谱制作步骤列表,每个步骤结构都是紧密排列。
66.材料参数:用于存放食谱所需材料列表,每个材料结构都是紧密排列。
67.进一步的,当需要加载食谱语言时,根据可视字符偏移地址表进行选择加载可视字符段到运行参数内存中。
68.进一步的,可视字符段是把食谱的数据文字描述信息,从字符串部分开始的位置开始写入,并且每个字符串直接间隔一个“/0”。
69.场景一、对食谱进行关键词查找
70.step1:读取文件头数据
71.目的:获取到食谱可视字符段部分的位置与大小
72.a》读取出食谱的头56个字节到运行内存中
73.b》把运行内存的数据指针类型转为文件头结构体类型
74.c》判断食谱数据方向
75.如果是0x01234567,则不需要转数据
76.如果是0x67452301,则需要把结构体中的数据进行大小端转换
77.其他情况,则该文件不是食谱文件
78.d》此时可以得到食谱示例图段的起始地址和可视字符段的起始地址
79.(它们之间就是食谱查找的范围)
80.step2:读取出可视字符段的可视字符,并对可视字符段部分进行查找
81.目的:对食谱的可视字符段部分,进行查找是否有关键词
82.a》逐串可视字符段读取出来
83.b》逐串查找是否含有搜索词
84.step3:返回查找结果
85.该场景效果:缩短搜索时间。
86.原因:因为在比较字符串时,如果待搜索的字符越长,则需要搜索的时间也越长。本方法通过”/0”字符分割每个可视字符段。避免不关联的可视字符段连在一起,而增长搜索时间。
87.同时,通过文件头缩小搜索范围,减少无关数据的遍历。
88.场景二、程序加载食谱
89.step1:读取文件头数据
90.目的:获取到食谱各个部分大小和位置信息
91.a》读取出食谱的头56个字节到运行内存中
92.b》把运行内存的数据指针类型转为文件头结构体类型
93.c》判断食谱数据方向是否为0x01234567,
94.如果是0x01234567,则数据方向一致,不需要转数据
95.如果是0x67452301,则数据方向不一致,需要把结构体中的数据
96.进行大小端转换
97.其他情况,则该文件不是食谱文件
98.d》此时可以得到食谱各个部分大小和位置信息
99.step2:读取食谱运行参数
100.目的:获取食谱的运行参数部分数据
101.a》直接读取食谱运行数据到运行内存
102.b》根据step1中判断数据方向结果进行,转换数据。(所有变量的数据进行调换),此时食谱可运行部分数据中的基础参数部分已经完成。
103.c》把运行内存的起始地址加上基础参数部分数据大小,可得出步骤数据在内存的起始地址,并存入基础参数的步骤列表起始地址中
104.d》根据基础参数中的总步骤数计算出运行步骤列表的长度。
105.e》根据基础参数的长度加上步骤列表的长度,计算出材料参数列表的起始地址。
106.f》把算出来的材料参数列表的起始地址存到基础参数中的材料列表指针。
107.step3:把可视字符偏移地址表加载到内存中
108.a》根据step1中获取到文件头,计算表格起始地址和大小
109.b》把偏移地址表格读取到内存中
110.step4:把可视字符段串加载到运行参数中
111.a》获取当前环境需要显示的语言对应的编号。
112.b》逐行把对应的可视字符段串加载到食谱运行参数结构中
113.a)根据偏移地址表格计算出食谱运行参数中可视字符段的指针变量的位置。
114.b)根据step4 a》步骤计算到的编号,获取到可视字符段的指针变量所对应的语言可视字符段串的起始位置和大小。
115.c)申请内存,并把谱运行参数中可视字符段的指针变量指向该内存。
116.d)读取可视字符段串存到c)申请的内存中。
117.e)重复b)c)d)步骤,直至遍历完偏移地址表格每一行。
118.step5:把食谱示例图段数据读取出来,保存到外部设备的内存中使用。
119.注意:step4和step5不是加载食谱中必须的,如果程序只需要加载食谱可以只需运行到step2即可。
120.效果:缩短加载食谱的时间,减少加载食谱过程中内存的消耗。
121.原因:
122.1.在加载食谱运行参数时,只需要根据食谱类型把文件数据拷贝到内存中即可直接使用食谱数据,这样可以避免解析食谱而损耗资源。
123.2.利用可视字符偏移地址表可以快速切换可视字符段,避免重新解析非可视字符段串部分数据。
124.场景三、食谱保存
125.step1:构建食谱文件头
126.a》内存中申请食谱文件头结构大小内存
127.step2:写入食谱运行参数
128.a》把食谱的基础部分参数直接写到食谱文件的第56字节位置。
129.b》接着逐个填入步骤参数到文件中
130.c》再接着逐个填入材料参数到文件中
131.d》此时食谱运行参数已经写到文件中
132.step2:创建可视字符偏移地址链表
133.a》根据食谱类型可以得到食谱运行参数中可视字符段指针的位置
134.b》计算出整个食谱中可视字符段指针的总数
135.c》创建一个可视字符段指针的内存
136.d》创建可视字符偏移地址链表
137.e》把c》创建的链表存到列表中
138.step3:写入可视字符段
139.a》计算可视字符段指针变量在食谱运行参数中的位置
140.b》计算出可视字符段的长度。
141.c》把可视字符段写到文件中,记录起始地址。
142.d》把a》b》两个步骤计算到的数据添加到可视字符偏移地址链表。
143.e》重复a》b》c》d》步骤,直至遍历完整个食谱运行参数。
144.step4:写入可视字符偏移地址表
145.a》逐个链表单元写到文件中
146.step5:写入食谱示例图段
147.a》把对应的食谱示例图段或数据写到文件中
148.step6:写入文件头
149.a》把step2、3、4步骤产生的数据对应填到step1申请的结构中
150.b》把文件头存到食谱文件中
151.以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包括在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1