labview的深入探索----文件系列之二进制文件

合集下载

文件二进制头读取-概述说明以及解释

文件二进制头读取-概述说明以及解释

文件二进制头读取-概述说明以及解释1.引言1.1 概述在计算机科学中,文件是存储信息的基本单位。

在操作系统中,每个文件都有一个二进制头(file header),它位于文件的最开始位置,用来存储文件的元数据和其他重要信息。

文件的二进制头是由一系列特定的字节组成的,这些字节可以被解释为文件的类型、大小、创建日期、作者等信息。

文件的二进制头在文件系统中起着非常重要的作用,它是识别和处理不同文件类型的关键。

通过读取文件的二进制头,我们可以快速确定文件的类型,并根据需要采取特定的操作。

文件的二进制头不仅仅包含文件的基本信息,它还可以用于校验文件完整性。

通过检查文件的二进制头,我们可以确保该文件未被篡改或损坏。

这对于保护文件的完整性和安全性非常重要。

要读取文件的二进制头,我们需要使用编程语言提供的相关函数或库。

不同的文件类型可能具有不同的二进制头结构和解析方式,因此我们需要根据文件类型选择相应的读取方法。

在本文中,我们将探讨文件二进制头的定义和作用,并介绍读取文件二进制头的方法。

我们将讨论常见文件类型的二进制头结构,并通过示例代码演示如何读取和解析文件的二进制头。

通过深入研究文件二进制头的相关知识,我们可以更好地理解文件的内部结构,对文件进行更准确和有效的处理。

加深对文件二进制头的理解也有助于我们在文件处理中遇到问题时能够迅速定位和解决。

在接下来的章节中,我们将进一步探讨文件二进制头的重要性以及具体的读取方法。

希望通过本文的阐述,读者能够对文件二进制头有更全面的认识,并在实际开发中能够灵活应用相关的知识。

1.2 文章结构文章结构部分内容:本文共分为三个主要部分:引言、正文和结论。

引言部分主要介绍了文件二进制头读取的背景和概述。

首先,简要介绍了文件二进制头的定义和作用,引起读者对这个话题的兴趣。

接着,给出了本文的结构,并说明了各个部分的内容概要。

最后,明确了本文的目的,即介绍文件二进制头的读取方法和强调其重要性。

虚拟仪器技术习题答案

虚拟仪器技术习题答案

习题答案第1章1. 如何弹出工具模板?答: 1.点击主菜单查看,在下拉列表中选择工具选板。

2.在前面板和流程图的任意空白处按住shift 点击右键。

2.如何进行前面板编辑区与流程图编辑区的切换。

答: 1.点击主菜单窗口,在下拉列表中选择显示程序框图或显示前面板。

2.直接使用快捷键ctrl+E 。

3.传统仪器和虚拟仪器各有何优点?虚拟仪器能否取代传统仪器?虚拟仪器具有传统独立仪器无法比拟的优势,但它并不否定传统仪器的作用,它们相互交叉又相互补充,相得益彰。

在高速度、高带宽和专业测试领域,独立仪器具有无可替代的优势。

在中低档测试领域,虚拟仪器可取代一部分独立仪器的工作,但完成复杂环境下的自动化测试是虚拟仪器的拿手好戏,是传统的独立仪器难以胜任的,甚至不可思议的工作。

4. 编写程序计算以下算式,写出计算结果,并写出四个以上所用控件或函数名称。

X 45542750201162412022854⨯+-+÷-⨯+,6252.73811253178÷-⨯++X 算式1前面板和运行结果算式1流程图算式2 前面板和运行结果算式2流程图第2章1. 简述NI ELVIS系统的基本组成。

答:NI ELVIS系统实际上就是将LabVIEW和NI 的DAQ数据采集卡相结合,综合应用得到一个LabVIEW非常好的教学实验平台。

它包括硬件和软件两部分。

硬件包括一台可运行LabVIEW的计算机、一块多功能数据采集卡、一根68针电缆和NI ELVIS教学实验操控工作台。

软件则包括LabVIEW开发环境、NIDAQ、可以针对ELVIS硬件进行程序设计的一系列LabVIEW API和一个基于LabVIEW设计虚拟仪器软件包。

2. 简述NI ELVIS系统中信号发生器的两种控制方式。

答:1.硬件面板控制。

硬件面板与软件控制切换按钮可控制面板控制指示灯的亮灭,仅在指示灯亮时,面板上的所有按钮才对发出的信号起作用。

波形选择按钮可控制发出的信号是正弦波信号、方波信号还是三角波信号。

解码labview读写二进制文件格式

解码labview读写二进制文件格式

解码labview读写二进制文件格式
一直觉得NI 很恶心,最近越发觉得恶心,竟知道骗钱,我花了2 周去探它该死的数据格式,问他们售后居然说不知道...还得我亲自动手...现在把数据格式写下来,为大家做点贡献吧...关于用matlab/vc 读二进制文件write to binary file 的数据NI 可以直接用这个函数把数据写下来,但是读取格式不告诉你,要你用它的软
件去读...读的方法:1) 用uchar 去读,将数据转置存储;2)用浮点去读,倒序;-------- 这些在网上可以查到,下面才是关键.... 对64 位数据:3)每个通道有21 个数据是头文件,即21*64bit 的头信息,可以不去管它,跳过; 4)除了头文件外,每个通道还有1-3 个字节的信息(不知道什么玩意儿),要跳过;具体来讲是这样,如果有6 个通道, 第一个通道存储了1 个字节,要扣除;第2,4,5 个通道多了2 个字节,要扣除;第3,6 通道多了3 个字节要扣除.但是必须从3 开始扣.即假如总共N 字节数据,则第一个通道读N-3 个,接下来2,4,5 要读N-4 个,剩下的3,6 要读N-5 个.只有这样才能正确的读取.不过要注意数据倒序的问题,实际的数据可能正好通道顺序相反.5)
剩下的就是编程的问题了,还有很多细节大家可以自己解决,再看怎么要内存最小,耗时最短...我是没有在NI 的说明文档里面找对相关的数据存储格式,这里是
6 个通道的举例,要是5 个通道又得慢慢试了...再来一句,NI 真恶心,其实没必要
保留数据格式...搞的人家都要用它的软件...tips:感谢大家的阅读,本文由我司收集整编。

仅供参阅!。

LabVIEW的读取二进制文件

LabVIEW的读取二进制文件

LabVIEW的读取⼆进制⽂件LabVIEW的读取⼆进制⽂件“读取⼆进制⽂件”位于函数选板的“编程→⽂件I/O→读取⼆进制⽂件”,图标和接线端如图1所⽰。

图1 读取⼆进制⽂件图标和接线端读取⼆进制⽂件从⼆进制⽂件读取数据,读取的数据类型取决于指定⽂件的格式,其中输⼊和输出接线端说明如下。

data type:数据类型,指定读取的数据类型,包括⼤⼩信息。

prompt(Open existing file):对话框窗⼝(打开现有⽂件),指定⽂件对话框上出现的提⽰信息。

file(use dialog):⽂件(使⽤对话框),指定⽂件引⽤旬柄或绝对路径(相对路径⽆效),如果没有输⼊,则弹出⽂件对话框来选择⽂件。

count:计数,指定从⽂件中读取的数据数。

如果输⼊值为1,则读取整个⽂件;如果⼩于-1,则出错。

byte order:字节顺序,指定读取的字节顺序。

0表⽰⽹络顺序,在Mac OS或其他平台使⽤;1表⽰本地计算机顺序,速度快;2表⽰⽹络顺序,在Windows和Linux中使⽤。

refnum out:引⽤句柄输出,返回所读⽂件的⽂件引⽤句柄。

data:数据,从⽂件中读取的数据。

cancelled:取消,如果⽂件对话框被取消,则返回值为真。

matlab读取⼆进制数据⽂件的⽅法北京理⼯⼤学20981 陈罡matlab可以直接读取⼆进制数据⽂件,并且可以将其加⼊到矩阵中。

如果对c语⾔⼗分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof这些函数⾮常熟悉了,幸运的是在matlab中仍然可以使⽤这些函数来读⼊实验数据。

现在假定有⼀个数据⽂件叫data.dat,它的前⾯2k是存放参数的,我们做数据处理的时候需要跳过去,后⾯的数据是16位整数类型的,每组数据有512个。

现在要把该数据⽂件的所有数据读⼊⼀个nx512的矩阵中,n的个数不定,根据数据⽂件中的数据⽽定。

⽤.m脚本的⽅式编写如下:% deal data from specified data fileclear ;data_fname = 'data.dat' ; % 这⾥是⽂件名jump_distance = 2048 ; % 这⾥是跳过的字节数% 打开⽅式为⼆进制打开,其实'r'就⾏,matlab是默认⼆进制形式打开⽂件的file_id = fopen(data_fname, 'rb');% 从⽂件开始跳过jump_distance个字节fseek(file_id, jump_distance, 'bof');% 先⼿⼯构造⼀个1x512⼤⼩的矩阵raw_data = [1:1:512] ;while feof(file_id) == 0% 这就是⼤名顶顶的fread了,数据类型是int16,每次读⼊512个数% raw_array每次都是512x1的矩阵,ele_count为读⼊的数的个数(正常情况下应为512)[row_array, ele_count] = fread(file_id, 512, 'int16') ;if ele_count < 512 % elecount < 512代表数据不够,已经到了⽂件的结尾break ;else% 将512x1的row_array转置⼀下,变为1x512的矩阵row_array = row_array' ;% 然后,将row_array追加到raw_data中raw_data = [raw_data; row_array] ;endend% get off the first line [1:1:512]% 这⾥就是要把raw_data的第⼀⾏数据⼿⼯构造的那⾏数据给去掉,剩下的就都是⽂件中的数据了raw_data(1,:)=[] ; % 关闭⽂件fclose(file_id);% delete other usless vars% 这⾥是把⽤过的变量都删除掉,免得workspace⾥⾯乱七⼋糟的什么都有,这是个好习惯,呵呵。

LabVIEW深入探索之绝对时间、通用时间和相对时间

LabVIEW深入探索之绝对时间、通用时间和相对时间

LabVIEW 深入探索之绝对时间、通用时间和相对时间加入收藏2011-04-29 07:47转发分享 人人网 开心网 新浪微博 搜狐博客 百度收藏 谷歌收藏 qq 书签 豆瓣 淘江湖 Facebook Twitter Digg Yahoo!Bookmarks作为一种面向工程应用的编程语言,LV 提供了非常丰富的时间操作函数。

8.X 后又提出了 新的有关时间的数据类型,时间标识 (TIMESTAMP) 时间标识早期通常翻译成“时间戳”, 。

实际上是一种改进型的数值控件, 从时间标识控件所在的控件选板就可以初步判断出, 时间 标识就是特殊的数值控件。

一、时间标识的内存映射 要想真正了解一种数据类型, 首要的问题是要搞清楚该数据类型在内存中或者文件中是如何 存储的。

我们知道数值型控件可以选择控件所包含的数据类型, 比如双精度浮点数、 整型数、 32 位整型数、16 位整型数等等。

时间标识控件是不允许选择它所包含的数据类型的, 这说明时间标识所包含的数据类型是固 定的。

从帮助文件中,我们可以找到时间标识在内存中的存储方式--映射。

LabVIEW 将时间标识保存为一个含四个整数的簇,其中前两个带符号整数(64 位二进 制) 表示自 1904 年 1 月 1 日周五凌晨[01-01-1904 00:00:00]以来无时区影响的所 有秒数。

后两个不带符号整数(64 位二进制)表示小数秒部分。

LV 利用 16 个字节(128 位)表示时间信息,其中前 8 个字节(64 位)由两个 I32 构成, 表示从 0 时刻开始经历过的秒数。

后面 8 个字节为 U64 数据,表示秒的小数部分。

二、时间标识与双精度数之间的相互转换 在时间标识出现以前,经常用双精度数表示从 0 时刻经历过的秒数。

我们知道双精度数所 占的内存空间也是 8 个字节,与时间标识相同。

但是时间标识实际上是定点数,它的小数 点位置是确定的,因此实际上双精度数表示时间与时间标识相比,不如时间标识精确。

(完整word版)用matlab读取labview存储的二进制

(完整word版)用matlab读取labview存储的二进制

用matlab读取labview存储的二进制
在labview中,将N个double型数组(内部有9个数字)、N个double型数组(内部有4个数字)、N个double型数字、N个表示时间的字符串捆绑成簇后“Write To Binary File”写入二进制,得到data。

dat的二进制文件.
根据LabVIEW数据类型的定义方式,可以计算单个簇元素的大小是:4 Bytes(数组长度)+8 Bytes(double)*9+4 Bytes(数组长度)+8 Bytes(double)*4+8 Bytes(double)+4 Byte(4个字节表示字符串长度)+ 21 Bytes(string)=145 Byte。

Labview用“Write To Binary File”写入二进制默认采用大端方式,即big endian,最低位地址存放高位字节。

而matlab内部默认读二进制采用小端方式,即little endian,低位地址存放低位字节.故使用A = fread(fileID, sizeA, precision,skip,machineformat) 命令读入时,需将machineformat定义为‘ieee —be'.
其中machineformat可能的取值为
’n’ or 'native'字节排序,您的系统使用(默认)
'b' or 'ieee-be' 大端字节序排序 Matlab中文论坛
'l’ or 'i eee—le' 小端序。

我和LabVIEW

我和LabVIEW

当我开始在键盘上敲打出这句话的时候,我已经使用 LabVIEW 7 年了。

7 年的时间,就算天赋平平也可以积攒下一箩筐可供参考的经验了。

所以我打算利用今后的闲暇时间写一些这方面的东西,既可以同大家交流,也是作为自己这七年工作的总结。

还是在上大学的时候,有一次老师让编写一段软件,用来模拟一个控制系统:给它一个激励信号,然后显示出它的输出信号。

那时我就想过,可以把每一个简单的传递函数都做成一个个小方块,使用的时候可以选择需要的函数模块,用线把它们连起来,这样就可以方便地搭建出各种复杂系统。

后来,我第一次看到别人给我演示的LabVIEW编程,就是把一些小方块用线连起来,完成了一段程序。

我当时就感觉到,这和我曾经有过的想法多么相似啊。

一种亲切感油然而生,从此我对LabVIEW的喜爱就一直胜过其他的编程语言。

LabVIEW 的第一个版本发布于1986年,是在 Macintosh 机上实现的,后来才移植到了PC机上,并且LabVIEW 从未放弃过对跨平台的支持。

这也给 LabVIEW 带来了一些麻烦。

最明显的就是LabVIEW开发环境的界面风格。

它总是与一般的 Windows 应用程序有些格格不入:面板是深灰色的,按键钮是看起来别别扭扭的 3D 模样。

还有一些可能不太容易发现:比如对于整数的存储,LabVIEW即便是运行在x86系统上,采用的也是高地址位存高位数据(big-ending)。

这与我们习惯了的x86 CPU使用的格式正相反,这往往给编写存取二进制文件带来了不多不少的麻烦。

我接触过的最早的LabVIEW版本是4.0版,发布包是一个装有十几张三寸软盘的大盒子。

安装的时候要按顺序把软盘一个一个塞到计算机里。

尽管当时LabVIEW的界面不是很好看,但我还是非常喜欢它。

真方便呐!比如说要画一个开关,用 LabVIEW 一拖就行了。

如果要自己动手用 C 语言设计一个好看的开关,,那得费多少时间啊!我尤其喜欢它通过连线来编程的方式,尽管很多熟悉了文本编程语言的人刚开始时会对这种图形化编程方式非常不适应。

基于labview的实验

基于labview的实验

实验一利用LabVIEW控件进行结构化程序设计一、实验目标:1. 理解LabView的结构的基本概念2. 掌握LabView中特有的顺序结构和移位寄存器的基本使用方法3. 掌握LabView中公式节点的使用方法二、实验设备安装有LabVIEW的计算机。

三、实验要求和程序LabView中的结构中的For和While相当于别的语言中的各种循环语句,而顺序结构主要为了方便于进行和时间相关的编程。

本单元基本要求为循序渐进地学习和调试结构相关的内容,重点在于掌握LabView中进行循环和时间相关编程的方法。

1.使用For循环产生100个随机数。

在随机数产生的同时判定当前随机数的最大值和最小值。

有时称其为“流动的”最大值和最小值。

在前面板上显示流动最大值、最小值和当前的随机数。

循环中一定要包含Time Delay Express VI以便用户可以观看值随着For循环的运行而更新。

程序框图:前面板:2. 构建VI,每秒显示一个0到1之间的随机数。

同时,计算并显示产生的最后四个随机数的平均值。

只有产生4个数以后才显示平均值,否则显示0。

每次随机数大于0.5时,使用Beep.vi产生蜂鸣声。

【提示】虽然叙述简单,但实现不易,请注意:每秒产生一个随机数,我们可以使用用于定时的VI要计算最后四个数的平均,我们需要使用移位寄存器要注意顺序结构和移位寄存器的嵌套关系运行:当产生随机数小于4时:(平均值等于0)当产生随机数大于4:3、创建前面板有3个圆LED的VI。

运行程序时,第一个LED打开并保持打开状态。

1秒钟以后,第二个LED打开并保持打开状态;再过2秒钟,第三个LED打开并保持打开状态。

所有LED都保持打开状态3秒钟,然后程序结束。

(使用顺序结构)程序框图:前面板:实验二利用LabVIEW实现各种数学运算(数组,矩阵,代数)和字符串与逻辑运算一、实验目标:1. 理解LabView的数组和簇的基本概念2. 掌握数组的创建和使用3. 理解多态性的含义4. 掌握簇的创建和使用二、实验设备安装有LabVIEW的计算机。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

labview的深入探索----文件系列之二进制文件
二进制文件是计算机文件中最常见的文件,它占用空间最小,适合于连续存
储大量数据,同时它的存储格式基本和数据在内存中的存储格式一致或者类似,
很多情况下,甚至是内存的映射,因此无论是存储还是读取都是速度最快的,同时,
具有非常高的安全性,如果不知道数据的格式,很难分析出文件的格式.同文本文
件一样,打开和关闭是完全相同的,不同的是写VI 和读VI.先看一个简单写的例
子上面写的是U8 数组,我们知道,一个U8 对应一个字节,1024 个U8 数组对应的
文件长度应该是1024=1K,但是实际文件长度是1028=4+1024,同理,下面的是I32 的数组,一个I32=4BYTE,所以文件长度应该是1024*4=4096,但是实际文件长度
是4100=4+4*1024.可以看出,对一维数组,多出四个字节的长度,实际上是多出一
个U32=4BYTE,代表的是一维数组的长度.原因在于WRITE BIN FILE VI,有一
个选择项,如下图,表示是否写入数组长度或者字符串长度.如果取消写入数组或
者字符串长度,则数组所占空间大小和二进制文件所占空间完全相同.之所以读
写二进制文件速度是最快的,根本原因在于二进制文件的存储方式和数据在内存
中的存储方式相似或者完全一致.WRITE BIN FILE VI 还有一个重要的输入选择
项目,BYTE ORDER(字节次序),很多编程语言或者操作系统称之为大小端的问题.在所有的计算机系统,包括单片机中,都存在大小端的问题.简单地介绍一下.我们知道,一个整数U16 或者I16,有两个字节组成,比如整数0X1234,由字节0X12,和
0X34 组成,那么,在内存中或者文件中,到底是0X12 在前还是0X34 在前那,在不
同的操作系统和不同的编程语言中,这是有区别的,这就造成的数据的大小端的
问题.对于我们自己的数据二进制文件,这个选择并不重要,因为LV 的读二进制
VI 也有同样的选择项,保持二者一致就可以了,但是如果被其它编程语言读取或
者读取其他语言写的二进制文件,就要考虑大小端的问题,否则数据表现可能会。

相关文档
最新文档