3.5 数据压缩
根据设计,直观上可以定义触点为一个这样的类:内容包括一个BOOL变量和一个指针。BOOL变量表示触点的状态值,指针指向下一个触点的位置。但是这样做会导致文件过于庞大,所以要进行数据的压缩。
BOOL变量以最后位置0或置1来表明FALSE或TRUE的状态,但BOOL变量前面所有的位都没有利用上。因此,可以把BOOL变量前面所有的位都用来表示触点的状态,这就是压缩的基本思想。同时压缩的还有指针。因为不是数组,内存地址可能不连续,所以不需要指针指明下一个触点的位置,因此指针也可以省略。
压缩效率分析:因为布尔值通常定义为8位长度,现在只用1位来表示,所以压缩的极限值应该可以达到8倍。这样的压缩比率下能够有效地节约测试资料的存储大小。
3.6 数据存储方式考查
必须考虑数据的存储方式,不同的存储方式直接影响了位的操作。因此,在执行位操作之前一定要明确存储方式,小头(Little-endian)模式对数据的存放方式是从低字节到高字节,而大头(Big-endian)模式对数据的存放方式是从高字节到低字节。
联合体(union)的存放顺序是所有成员都从低地址开始存放,整数定义通常占用4字节32位,char定义通常只占用1字节8位。一般认为,大头模式的表达方式更符合生活中的数学思维习惯,所以不妨在小头模式的平台上做转换工作,把表达方式换算成大头模式。定义一个SWAP转换工作宏,由它把对应字节调换位置(最高与最低互调,中间两个互调)从而得到不同的模式。
本系统是基于Linux操作系统开发的通用LCU检测软件,具有通用性、便携性和灵活性的特点。采用Linux操作系统平台,能够进一步降低成本。ARM嵌入式系统本身对于软件和数据信息具有良好的保密措施,适合保存商业信息。本系统还采用了测试项目与程序分离的软件模块设计方案,使测试的种类大大增加,不管是同一种车型的测试项目变更,还是其他车型的测试,或者是更广泛的一般性LCU系统的测试,都能够一一得以解决,具有显著的经济和社会效益。