在文件存储的逻辑上,二进制文件基于值编码,而不是字符编码,其占用空间小,读取/写入速度快,但是译码比较复杂,不利用数据共享。根据具体编码方式的不同,二进制的使用方式也有所不同,如对bmp格式,规定了文件各个字节段/块的含义,只需要按照相应的编码方式进行解码就可以得到bmp文件的内容。因此,使用记事本是无法查看bmp的内容的(无法解码bmp文件),只能使用专门的图像查看软件。事实上,任何程序员都可以按照自己的方式自定义二进制文件的编码方式,并提供相应的解码模块将信息从二进制文件中提取出来即可。
与文本文件的读写方式类似,LabVIEW中的二进制文件的读写采用图 10所示的两个函数完成:“Write To Binary File”和“Read From Binary File”。这两个函数是多态函数,可以接受File Refnum和File Path两种输入。其使用方式也与文本文件的两个VI类似,本文不再赘述,仅仅说明其特殊的参数和使用方法。
图 10 File I/O选板
图 11所示为利用Write To Binary File.vi函数将一个数组以二进制文件存储。首先,程序使用10次的FOR循环以产生0~9的数列并将其转换为U8类型的数组;然后将这个数组存入二进制文件中。
图 11 使用Write To Binary File.vi函数
如果计算该文件的大小,可以很容易的得到:10*1 Byte(U8)=10 Bytes,即10字节。打开该文件的“属性”对话框,如图 12所示,显示文件大小为14字节。那么多余的4字节是怎么产生的呢?这与Write To Binary File.vi函数的“prepend array or string size (T)”参数有关,它表示当输入端的数据类型是数组或字符串时是否在文件头包含该数组的大小或字符串的长度,默认是True。该长度通过一个32 bits(4 Bytes)的整型表示,因此当往二进制文件中写入数组和字符串时,可以决定是否需要将大小和长度信息写入文件头。
图 12 test.dat文件属性
从上面可知,通过读取test.dat文件的前4个字节获取字符串的长度或数组的大小,如图 13所示。
图 13 获取test.dat文件的大小
在Write To Binary File.vi和Read From Binary File.vi中,均包含一个byte order参数。这实际上就是常说的“大小头”问题,比如U16占有2个字节,是前面的字节占高的内存地址,还是后面的字节占高的内存地址。由于不同的操作平台对该问题有不同的处理方式,因此使用时需要显式地指定,只需要写入和读取时一一对应即可,一般保持默认值。
为了说明数据结构对二进制文件的影响,本文将使用一个比较复杂的数据类型写入二进制文件,如图 14所示。实例中使用簇的数组类型,在簇中依次包含了double、string、I32和2个I32型数据组成的数组元素。
图 14 写入二进制文件
根据LabVIEW数据类型的定义方式,可以计算单个簇元素的大小是:8 Bytes(double)+5 Byte(string,其中4个字节表示字符串长度)+4 Bytes(I32)+12 Bytes(Array of I32,其中4个字节表示数组的长度)=29 Bytes,整个文件的大小是29 Bytes*10+4 Bytes(表示数组的长度)=294 Bytes。因此,test.dat文件的格式如图 15所示。
图 15 test.dat文件的格式
根据图 15的文件组成,可以获取数组的第6个簇元素的值,如图 16所示。首先读取test.dat的前4个字节获取整个数组的长度;然后,将文件指针移动到第6个元素的开头;最后,读取第6个数据元素即可得到数组中的第6个元素。显然,如果程序员不知道test.dat中的字节存储情况,是无法获取第6个元素值的。
图 16 获取test.dat文件中数组的第6个元素
综上所述,二进制文件由于其高速、高效的特点在高速流盘、安全存取方面应用广泛。同时,由于其无法被常用的字符处理程序直接读取,因此无法便捷地查看数据,而只能通过专用的应用程序读取。此外,对特有的数据结构而言,二进制文件需要非常了解该数据结构的内存占用情况才能够准确检索和定位。
通常,为了识别二进制的基本信息,程序员往往会在文件的头部增加一些基本的头文件信息,用来描述文件的组成。如bmp格式文件在头部使用14个字节表示文件信息以及40个字节表示位图信息,这些信息使得程序员可以快速地获取bmp文件的字节大小、位图像素、分辨率、颜色等相关信息。
关键字:LabVIEW 数据记录 存储 二进制文件
引用地址:LabVIEW数据记录和存储(三)—二进制文件(Binary File)
与文本文件的读写方式类似,LabVIEW中的二进制文件的读写采用图 10所示的两个函数完成:“Write To Binary File”和“Read From Binary File”。这两个函数是多态函数,可以接受File Refnum和File Path两种输入。其使用方式也与文本文件的两个VI类似,本文不再赘述,仅仅说明其特殊的参数和使用方法。
图 10 File I/O选板
图 11所示为利用Write To Binary File.vi函数将一个数组以二进制文件存储。首先,程序使用10次的FOR循环以产生0~9的数列并将其转换为U8类型的数组;然后将这个数组存入二进制文件中。
图 11 使用Write To Binary File.vi函数
如果计算该文件的大小,可以很容易的得到:10*1 Byte(U8)=10 Bytes,即10字节。打开该文件的“属性”对话框,如图 12所示,显示文件大小为14字节。那么多余的4字节是怎么产生的呢?这与Write To Binary File.vi函数的“prepend array or string size (T)”参数有关,它表示当输入端的数据类型是数组或字符串时是否在文件头包含该数组的大小或字符串的长度,默认是True。该长度通过一个32 bits(4 Bytes)的整型表示,因此当往二进制文件中写入数组和字符串时,可以决定是否需要将大小和长度信息写入文件头。
图 12 test.dat文件属性
从上面可知,通过读取test.dat文件的前4个字节获取字符串的长度或数组的大小,如图 13所示。
图 13 获取test.dat文件的大小
在Write To Binary File.vi和Read From Binary File.vi中,均包含一个byte order参数。这实际上就是常说的“大小头”问题,比如U16占有2个字节,是前面的字节占高的内存地址,还是后面的字节占高的内存地址。由于不同的操作平台对该问题有不同的处理方式,因此使用时需要显式地指定,只需要写入和读取时一一对应即可,一般保持默认值。
为了说明数据结构对二进制文件的影响,本文将使用一个比较复杂的数据类型写入二进制文件,如图 14所示。实例中使用簇的数组类型,在簇中依次包含了double、string、I32和2个I32型数据组成的数组元素。
图 14 写入二进制文件
根据LabVIEW数据类型的定义方式,可以计算单个簇元素的大小是:8 Bytes(double)+5 Byte(string,其中4个字节表示字符串长度)+4 Bytes(I32)+12 Bytes(Array of I32,其中4个字节表示数组的长度)=29 Bytes,整个文件的大小是29 Bytes*10+4 Bytes(表示数组的长度)=294 Bytes。因此,test.dat文件的格式如图 15所示。
图 15 test.dat文件的格式
根据图 15的文件组成,可以获取数组的第6个簇元素的值,如图 16所示。首先读取test.dat的前4个字节获取整个数组的长度;然后,将文件指针移动到第6个元素的开头;最后,读取第6个数据元素即可得到数组中的第6个元素。显然,如果程序员不知道test.dat中的字节存储情况,是无法获取第6个元素值的。
图 16 获取test.dat文件中数组的第6个元素
综上所述,二进制文件由于其高速、高效的特点在高速流盘、安全存取方面应用广泛。同时,由于其无法被常用的字符处理程序直接读取,因此无法便捷地查看数据,而只能通过专用的应用程序读取。此外,对特有的数据结构而言,二进制文件需要非常了解该数据结构的内存占用情况才能够准确检索和定位。
通常,为了识别二进制的基本信息,程序员往往会在文件的头部增加一些基本的头文件信息,用来描述文件的组成。如bmp格式文件在头部使用14个字节表示文件信息以及40个字节表示位图信息,这些信息使得程序员可以快速地获取bmp文件的字节大小、位图像素、分辨率、颜色等相关信息。
上一篇:LabVIEW数据记录和存储(四)—XML文件
下一篇:LabVIEW数据记录和存储(二)—配置文件
推荐阅读最新更新时间:2024-03-30 23:01
FPGA与SRAM相结合完成大容量数据存储
1 引言 随着数字信号处理技术的不断发展,大容量可编程逻辑器件的不断涌现,FPGA技术越来越多地应用在大规模集成电路设计中。在此硬件系统设计中,经常会遇到需要大容量的数据存储的情况,下面我们将针对FPGA中内部Block RAM有限的缺点,提出了将FPGA与外部SRAM相结合来改进设计的方法,并给出了部分VHDL程序。 2 硬件设计 这里将主要讨论以Xilinx公司的 FPGA(XC2S600E-6fg456)和ISSI公司的SRAM(IS61LV25616AL)为主要器件来完成大容量数据存储的设计思路。 FPGA即现场可编程门阵列,其结构与传统的门阵列相似,大量的可编程逻辑块(CLB, Configurable Logic
[应用]
车载DVR能否开启移动存储监控新概念?
早在二十世纪八十年代初,人们便有了车载监控的意识,开始在车里安装录像设备,后来随着科学技术的发展,便出现了模拟车载录像机,这种录像机通过模拟信号的方式来记录并保存车辆的运营情况,使得计算机无法对其进行参数设置、管理及查询,而且碍于录像带的图像记录时间有限,在车辆运行过程还要不断更换录像带,这为存储带来了不可避免的麻烦……于是,车载DVR便应运而生。
所谓车载DVR,即采用1U的标准架构,安装于公交车辆的收音机或者CD播放机的位置,接入1-4路图像,来对车辆中的情况进行监控并录像,目前车载DVR采用的压缩算法主要为MPEG4与H.264。
厂商们为这种应用于车内的嵌入式DVR起了个好听的名字,MDR或者MVR(M
[安防电子]
带宽、采样率、存储深度,示波器三大关键指标详解
带宽、采样率和存储深度是数字示波器的三大关键指标。相对于工程师们对示波器带宽的熟悉和重视,采样率和存储深度往往在示波器的选型、评估和测试中为大家所忽视。这篇文章的目的是通过简单介绍采样率和存储深度的相关理论结合常见的应用帮助工程师更好的理解采样率和存储深度这两个指标的重要特征及对实际测试的影响,同时有助于我们掌握选择示波器的权衡方法,树立正确的使用示波器的观念。 在开始了解采样和存储的相关概念前,我们先回顾一下数字存储示波器的工作原理。 输入的电压信号经耦合电路后送至前端放大器,前端放大器将信号放大,以提高示波器的灵敏度和动态范围。放大器输出的信号由取样 / 保持电路进行取样,并由 A/D 转换器数字化,经过 A/D
[测试测量]
stm32专题十四:存储器介绍
存储器通常分为易失性存储器(RAM - random access memory)和非易失性存储器(ROM - read only memory) 易失性存储器 SRAM:Static Random Access Memory(静态随机存储器),基本的存储单元由SR锁存器组成,不需要定时刷新。 DRAM:Dynamic Random Access Memory(静态随机存储器),由电容和晶体管组成,结构非常简单。动态随机存储器 DRAM 的存储单元以电容的电荷来表示数据,有电荷代表 1,无电荷代表 0。但时间一长,代表 1 的电容会放电,代表 0 的电容会吸收电荷,因此它需要定期刷新操作。刷新操作会对电容进行检查,若电
[单片机]
大容量闪烁存储器AT45D081及其在税控加油机中的应用
摘要:介绍了大容量闪烁存储器AT45D081的特点和主要功能,描述了其引脚定义、工作原理、操作指令及读写时序。结合税控加油机给出了它的硬件设计和相关的软件编程。
关键词:AT45D081;税控加油机;可靠性
在电子产品的设计中,经常存在断电后数据或机器参数的保存问题。早期一般由电池为RAM供电,但由于环境及电池本身的原因,这种方式常使数据丢失。目前,小容量数据存储多采用93系列EEPROM(如93C46)或24系列EEPROM(如24C45)。但如果要求存储的数据量很大这些芯片的存储能力就不能胜任。为此,本文介绍一种大容量的闪烁存储器芯片AT45D081,并给出其在税控加油机中的应用。
1 AT45D081简介
1.1
[缓冲存储]
s3c2440 存储系统和I/O空间 认识
用友善之臂的板子已经有一段时间了.对于存储系统和I/O空间的认识也渐渐淡忘了,原因是在做其他开发时,一直用着自带的启动代码,从不关心板子的储存空间配置.最近在做网卡驱动,突然间就不知道网卡的地址是什么了,于是花点时间总结一下.废话少说.开始吧. 1,板上的存储资源 两个32M的SDRAM. 一个2M的NOR FLASH 一个128M(有些是64M)的NAND FLASH 以上这些资源看原理图便知. 2,板上的I/O资源 这块板子上(准确的说是S3C2440)的I/O空间是用存储映射的方法映射到存储空间上的,也就说I/O空间是要占用存储空间的. 3,各种存储器的区别与各自的用途 为什么这块板子上有那么多存储
[单片机]
长江存储四月搬入机台,力争三季度量产
原标题:多个重大产业项目新春不停歇 2000多人推进光谷建设加速度 打造万亿级产业集群,推动武汉经济高质量发展。春节阖家团圆之时,仍有大量建设者、生产者坚守岗位,为城市发展贡献“加速度”。昨日长江日报记者获悉,过年期间,分布在誉为“黄金大道”的8公里左岭大道上的多个重大产业项目上,有超过2000多人坚守岗位过大年,光谷“芯片—显示—智能终端”万亿级产业集群正在“加速度”中加快锻造。 在国家存储器基地,有600多人在建设工地上忙碌。据了解,目前,他们正在进行厂内洁净室装修和空调、消防等系统安装,预计2018年4月搬入机台设备,力争三季度量产。国家存储器基地一期规划投资240亿美元,占地面积1968亩,建设3座全球单
[半导体设计/制造]
与MCS51系列单片机相同的数据存储器扩展技术解析方案
MCS96系列单片机是一种16位字长,比MCS51系列单片机功能更全、性能更高的单片机,在仪器仪表、过程控制等领域应用极为广泛。在采用MCS96系列单片机的应用开发中,我们碰到一个难题:当需要大容量的数据存储时,数据存储器的扩展如采用与MCS51系列单片机同样的方法则无法工作。因为其内存体系结构采用程序存储器与数据存储器统一编址的普林斯顿结构,程序存储器的地址与数据存储器的地址不能相同;而MCS51系列单片机采用程序存储器与数据存储器分开编址的哈佛结构,程序存储器的地址与数据存储器的地址不冲突,可以相同,因而其数据存储器扩展容易,而且整个数据存储器地址空间连续。MCS96系列单片机的普林斯顿内存体系结构决定了不能简单采用与MCS5
[单片机]