电力系统保护装置中黑白点阵数据的压缩算法及解压方法与流程

文档序号:19663807发布日期:2020-01-10 21:20阅读:519来源:国知局
电力系统保护装置中黑白点阵数据的压缩算法及解压方法与流程

本发明涉及一种数据的压缩方法,尤其涉及电力系统保护装置中黑白点阵数据的压缩算法及解压方法。



背景技术:

电力系统二次设备主要用在变电站中,周围电磁环境异常复杂。实际工程中发现,如果面板上的屏幕直接通过驱动芯片加lcd扁平线缆和管理cpu板连接时,很容易因为恶劣的电磁环境导致屏幕显示异常。为了防止此种现象的出现,屏幕通过带校验的总线与管理cpu连接。管理cpu通过带校验的总线,比如以太网总线将黑白点阵数据传递给panel板,在传递过程中,由于数据量大,一个屏幕的点阵数据会大量出现全黑或全白的部分,对于这两种情况,以字节为单位的数据要么是全0xff,要么是全0,且大量的数据传递影响传递效率和传递质量。



技术实现要素:

本发明的目的在于提供一种针对黑白屏幕、灵活高效的压缩机制,使管理cpu传递给屏幕的点阵数据其数据量最小,从而提升数据传递的效率,提高用户体验。

为了实现上述目的,本发明所采取的技术方案为:

电力系统保护装置中黑白点阵数据的压缩算法,包括以下步骤

s01读取一个字节的原始点阵数据,判断当前字节是否为0或0xff,若不是则将读取到的原始数据拷贝到压缩数据写入位置,若是则进行下一步;

s02将读取到的原始数据拷贝到压缩数据中并开始计数,所述计数的个数为与当前字节的原始数据相同且连续的原始数据的个数;

s03读取至与步骤s02中原始数据不同的字节时,返回步骤s01。

进一步的,所述步骤s02中计数使用计数器计数。

进一步的,所述步骤s02中计数个数达到255时,将计数器数值拷贝到压缩数据中,然后将计数器清0,然后回到s01。

进一步的,计数规则为:步骤s01中如果读取的数据是0或0xff,则将计数器置1,否则将计数器清0。

进一步的,前一个字节的原始数据和当前字节的原始数据相同时,将计数器进行加1操作,如果计数器达到0xff,则将计数器数值拷贝到压缩数据当前位置,然后将计数器清0。

本发明还涉及一种用于上述电力系统保护装置中黑白点阵数据压缩算法的解压算法,包括以下步骤

s01先从源数据的读指针位置读取一个字节的压缩数据;

s02如果该数据不是0x00或者0xff,则将数据拷贝到目的缓冲;否则重复拷贝0x00或0xff到目的缓冲中;其中重复次数由源数据缓冲中读指针的下一个位置的值决定。

本发明所产生的有益效果包括:该压缩算法中每个0xff或0的下一个字节表示该0xff或0的个数。非0和0xff的字节维持不变。通过此种算法压缩后,实际工程应用中,每秒黑白点阵数据由480k字节降到了168k字节左右,约为原来的35%。最好情况,全黑或全白屏幕时,传递数据量只有原来的0.78%。

该算法为无损压缩算法,该算法可以一边拷贝数据一边压缩,不需要二次遍历数据;该算法可以一边拷贝数据一边解压缩,前面数据的解压与后面数据无关,该算法实际工程应用效果好,平均减少数据量35%,特殊界面数据量减少达99%。

附图说明

图1本发明中的压缩方法流程图;

图2典型黑白液晶点阵界面。

具体实施方式

下面结合附图和具体实施例对本发明做进一步详细的解释说明,但应当理解为本发明的保护范围并不受具体实施例的限制。

如图1所示,本本发明的方法

包括如下步骤:

1、管理cpu先读取一个字节的原始点阵数据,若读取的数据为0或0xff,则管理cpu中的计数器开始计数,若读取的数据不是0x00或0xff则计数器不计数,计数器为零;

2、如果管理cpu的压缩数据计数器已经开始计数,则进行步骤3;否则跳到步骤5;

3、如果前一个字节的原始数据和当前字节的原始数据相同,直接到步骤4;否则将计数器的值拷贝到压缩数据写入位置,然后将当前字节的原始数据拷贝到压缩数据的下一个位置。如果拷贝的数据是0x00或0xff,则将计数器置1,否则将计数器清0,并回到步骤1。

4、前一个字节的数据和当前字节的数据相同时,将计数器进行加一操作。如果计数器达到255,则将计数器拷贝到压缩数据当前位置,然后将计数器清零,并回到步骤1。

5、计数器为0,说明前一个原始字节数据不是0x00或者0xff,读取最新的原始数据并将该值拷贝到压缩数据中,如果该值不是0x00或者0xff则直接回到步骤1;否则将计数器置1,然后回到步骤1。

上述概括为读取原始数据,若原始数据为0x00,则计数器显示为1,然后依次读取后面的字节,若后面紧邻n个0x00,则计数器最终显示为n+1,则该n+1个0最终压缩结果为0x00n+1,其中n+1<255;

若n+1≥255,则在达到255时压缩为0x00255,而后重新计数,压缩为0x00n-254。

0xff的计数方法同0x00。

若原始数据不是0x00或0xff,则直接将读取到的原始数据写入压缩数据中。

按照上述方法依次对字节进行压缩形成新的压缩数据。

示例

压缩后数据如下:

0x50,0xff,0xff,0xff,0x03,0x0,0xff,0x00,0x03,0x03

对上面一行压缩数据进行详细说明如下:

第一个字节:0x50表示一个无压缩的数据

第二,三字节:0xff,0xff表示255个0xff

第四,五字节:0xff,0x03表示3个0xff

第六,七字节:0x00,0xff表示255个0x00

第八,九字节:0x00,0x03表示3个0x00

第十个字节:0x03表示一个无压缩的数据。

下面是ff0解压算法的解压流程,假设继电保护设备压缩后的数据放源数据缓冲当中,解压后的结果放在目的数据缓冲当中。

1、先从源数据缓冲的读指针位置读取一个字节的压缩数据。

2、如果该数据不是0x00或者0xff,则将数据拷贝到目的数据缓冲中;否则重复拷贝0x00或0xff数据到目的数据缓冲;其中重复的次数由源数据缓冲读指针的下一个位置决定。

下图2所示的一种典型黑白液晶点阵界面,经过ff0压缩算法压缩后,实测其传递的数据量降到了原来的23.36%

上述仅为本发明的优选实施例,本发明并不仅限于实施例的内容。对于本领域中的技术人员来说,在本发明的技术方案范围内可以有各种变化和更改,所作的任何变化和更改,均在本发明保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1