本发明属于嵌入式针织控制技术领域,涉及一种织物数据加密压缩的方法,具体涉及一种基于lzhuf的嵌入式针织系统用控制数据压缩方法。
背景技术:
长期以来,我国的针织行业在自动化程度没有达到先进及智能的阶段,而近年来兴起的嵌入式技术是针织机械迈向真正意义上自动化、智能化的关键一步,它促进了针织工业的发展,同时实现针织机械的智能化。
针织控制系统主要包括纺织cad、人机交互系统及实时控制系统。纺织cad可将织物实时控制数据以及花型数据转化为二进制文件,嵌入式人机交互系统将二进制文件解析成实时控制信号,下发给实时控制系统,完成整个织物的编织。然而,纺织cad产生的数据是经过压缩的密文,如:意大利的lonati制板软件。因此,对纺织cad产生的数据进行解压缩,是针织控制系统的关键一步。
技术实现要素:
本发明的目的在于提供一种基于lzhuf的嵌入式针织系统用控制数据压缩方法,具有算法压缩效率高及算法复杂度低的优点,可在内存空间和存储空间有限的嵌入式针织控制系统中将织物控制数据无损还原,以保证嵌入式针织控制系统稳定运行。
本发明所采用的技术方案是,基于lzhuf的嵌入式针织系统控制数据压缩方法,具体按照以下步骤实施:
步骤1、在pc机的lonati制版软件中设定编织的链条值以及花型数据,经编译生成二进制文件;
步骤2、将经步骤1得到的二进制文件拷贝到嵌入式针织控制系统内的人机交互系统中,由人机交互系统显示织物数据,用户在人机交互系统上选择要编织的数据,该人机交互系统通过lzhuf解压缩算法,将加密压缩的花型数据进行无损还原,并转化为控制信号;
步骤3、经步骤2后,嵌入式针织控制系统内的人机交互系统通过调用织物数据提取算法,将数据转化为特定数据格式的控制信号,并传输到实时控制系统,以完成织物的编织中控制数据的解压缩。
本发明的特点还在于:
在步骤1中:二进制文件中包含有:织物控制数据以及压缩的花型数据;织物控制数据前512字节包括有:织物文件标识,速度和电机、圈循环、气阀、传感器及花型数据位置信息;
lonati制版软件生成的织物花型数据包括有:花型数据位置文件jacq和花型数据文件dise;花型数据文件dise和花型数据位置文件jacq是经过lzhuf压缩后的密文。
在步骤2中:嵌入式针织控制系统的硬件采用s3c2416芯片,操作系统为嵌入式,linux基于qt/e搭建的图形界面系统。
步骤2具体按照以下步骤实施:
步骤a、通过读取织物文件标识来判断文件合法性,即读取织物文件前两个字符,判断是否为co;
判断结果为是co,则进入下一步骤,即步骤b;
判断结果为不是co,提示用户操作失败,并退出整个花型数据解压缩流程;
步骤b、经步骤a后,提取出织物文件中压缩的花型数据;
步骤c、经步骤b后,找到dise数据和jacq数据开始位置和结束位置;将dise加密数据段读入输入缓冲区,把输入缓冲区的指针传递到解压缩函数,进行数据解压缩;再执行读取文件大小,初始化动态huffman树初始化工作;
读取字符值,若字符值小于256,即是单个字符,直接将字符读入输出缓冲区,并且移动缓冲区输入指针,同时字符计数器的值加1;
若字符值大于256,即是字符串,读取编码位置并编码,根据位置和匹配长度将字符串输入输出缓冲区,移动缓冲区指针,同时字符计数器的值加1;
判断字符计数器的值是否小于原文件的大小,若大于或者等于原文件大小,则结束,否则继续读取字符,重复解码,直至解压缩完所有数据;
步骤d、经步骤c后,算法执行后会生成解压缩后的花型文件,设定解压缩生成的文件为dise.bind和jacq.bind,将解压缩后的数据和lonati制板软件设定的花型选针数据进行对比,用于验证数据还原的无损性。
步骤b具体按照以下方法实施:
通过kmp算法查找字符‘dise’在织物文件中的位置,计算出花型数据的位置以及花型数据的大小,具体按照以下算法实施:
dpos=[apos+3]×256+[apos+4](1);
dlen=[apos+5]×256+[apos+6](2);
式(1)中apos为kmp算法返回的字符位置,dpos花型文件的位置,[apos+3]为apos+3位置的字符值;
式(2)中dlen表示花型数据的大小。
本发明的有益效果在于:
(1)本发明基于lzhuf的嵌入式针织系统用控制数据压缩方法,结合了lzss算法和动态huffman编码算法,能提高对织物数据的压缩率;
(2)本发明基于lzhuf的嵌入式针织系统用控制数据压缩方法,具有算法压缩效率高及算法复杂度低的优点,可在内存空间和存储空间有限的嵌入式针织控制系统中将织物控制数据无损还原,以保证嵌入式针织控制系统稳定运行;
(3)本发明基于lzhuf的嵌入式针织系统用控制数据压缩方法,还适合纺织cad中对织物数据的压缩,对设计纺织cad软件的压缩算法有着重要的借鉴价值;
(4)本发明基于lzhuf的嵌入式针织系统用控制数据压缩方法,lzhuf结合lzss算法和动态huffman压缩算法的优点,首先利用lzss对待压缩字符进行同时编码,再对输出的字符使用频率的高低进行动态huffman编码,达到更好的压缩效果,同时也加强数据的安全性。
附图说明
图1是本发明基于lzhuf的嵌入式针织系统用控制数据压缩方法的工作流程图;
图2是利用本发明基于lzhuf的嵌入式针织系统用控制数据压缩方法解压缩花型数据的流程图;
图3是利用本发明基于lzhuf的嵌入式针织系统用控制数据压缩方法计算被压缩的花型数据的大小以及在织物文件中位置的流程图。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明基于lzhuf的嵌入式针织系统用控制数据压缩方法,如图1所示,具体按照以下步骤实施:
步骤1、在pc机的lonati制版软件(cad制板软件)中设定编织的链条值以及花型数据,经编译生成二进制文件(co文件);
该二进制文件(co文件)中包含有:织物控制数据以及压缩的花型数据;
织物控制数据前512字节包括有:织物文件标识,速度和电机、圈循环、气阀、传感器及花型数据位置信息;
lonati制版软件生成的织物花型数据包括有:花型数据位置文件(jacq)和花型数据文件(dise);花型数据文件(dise)和花型数据位置文件(jacq)是经过lzhuf压缩后的密文。
步骤2、将经步骤1得到的二进制文件(co文件)拷贝到嵌入式针织控制系统内的人机交互系统中,由人机交互系统显示织物数据,用户在人机交互系统上选择要编织的数据,该人机交互系统通过lzhuf解压缩算法,将加密压缩的花型数据进行无损还原,并转化为控制信号,如图2所示,具体按照以下方法实施:
其中,嵌入式针织控制系统的硬件采用s3c2416芯片,操作系统为嵌入式linux,基于qt/e搭建的图形界面系统;
步骤a、通过读取织物文件标识来判断文件合法性,即读取织物文件前两个字符,判断是否为co;
判断结果为是co,则进入下一步骤,即步骤b;
判断结果为不是co,提示用户操作失败,并退出整个花型数据解压缩流程;
步骤b、经步骤a后,提取出织物文件(co文件)中压缩的花型数据,具体按照以下方法提取:
如图3所示,通过kmp算法查找字符‘dise’在织物文件中的位置,计算出花型数据的位置以及花型数据的大小,具体按照以下算法实施:
dpos=[apos+3]×256+[apos+4](1);
dlen=[apos+5]×256+[apos+6](2);
式(1)中apos为kmp算法返回的字符位置,dpos花型文件的位置,[apos+3]为apos+3位置的字符值;
式(2)中dlen表示花型数据的大小;
步骤c、经步骤b后,找到dise数据(即花型数据)和jacq数据(即选针位置数据)开始位置和结束位置;将dise加密数据段读入输入缓冲区,把输入缓冲区的指针传递到解压缩函数,进行数据解压缩;再执行读取文件大小,初始化动态huffman树初始化工作;
读取字符值,若字符值小于256,即是单个字符,直接将字符读入输出缓冲区,并且移动缓冲区输入指针,同时字符计数器的值加1;
若字符值大于256,即是字符串,读取编码位置并编码,根据位置和匹配长度将字符串输入输出缓冲区,移动缓冲区指针,同时字符计数器的值加1;
判断字符计数器的值是否小于原文件的大小,若大于或者等于原文件大小,则结束,否则继续读取字符,重复解码,直至解压缩完所有数据;
步骤d、经步骤c后,算法执行后会生成解压缩后的花型文件,设定解压缩生成的文件为dise.bind(dise解压缩后的文件)和jacq.bind(jacq解压缩后的文件),将解压缩后的数据和lonati制板软件设定的花型选针数据进行对比,用于验证数据还原的无损性。
步骤3、经步骤2后,嵌入式针织控制系统内的人机交互系统通过调用织物数据提取算法,将数据转化为特定数据格式的控制信号,并传输到实时控制系统,以完成织物的编织中控制数据的解压缩。
本发明基于lzhuf的嵌入式针织系统的控制数据压缩算法,其创新之处在于:lzhuf结合lzss和动态huffman编码算法,利用lzss对待压缩字符进行同时编码,再对输出的字符使用频率的高低进行动态huffman编码,达到更好的压缩效果,并将此算法应用在嵌入式针织控制系统对织物数据的解压缩。在嵌入式针织控制系统下,整个织物解压缩算法首先通过kmp遍历字符串算法,查找被加密压缩的花型数据的位置,该算法可无损还原被压缩的织物控制数据,保证了针织控制系统运行的可靠性,同时也加强数据的安全性。