解码labview读写二进制文件格式
- 格式:docx
- 大小:9.62 KB
- 文档页数:1
使用格式说明符格式化字符串、将数字转化为字符串,或在字符串中插入不显示的字符。
对于输出字符串的函数,例如格式化写入字符串和数组至电子表格字符串转换,格式说明符使用下列语法元素。
双括号( [] )中的是可选元素。
%[$][-][+][#][^][0][Width][.Precision || _SignificantDigits][{Unit}][<Embedded information>]Conversion Code其中Width是一个大于零的数,.Precision和_SignificantDigits是大于等于零的数。
对于扫描字符串的函数,例如,扫描字符串和电子表格字符串至数组转换,格式说明符使用下列语法元素。
%[Width]Conversion Code格式化写入字符串、格式化写入文件、扫描字符串和扫描文件函数可在格式字符串输入中使用多个格式说明符,每个格式说明符用于每个可扩展函数的输入或输出。
格式说明符语法元素下表列出了格式说明符的语法元素。
详细信息见格式说明符范例。
语法元素说明% 格式说明符的开始。
$(可选)使用格式函数时,该修饰符规定了显示变量的顺序。
包括代表变量顺序的位数,其后紧接该修饰符。
-(可选)使用格式化函数时,该修饰符在参数的宽度之内将参数靠左调整,而不是靠右调整。
+(可选)使用格式化函数时,即使是正数,该修饰符也包括符号。
^(可选)使用格式函数和e或g转换代码时,该元素将数格式化为科学计数法,其中指数为3的倍数。
#(可选)使用格式化函数时,该修饰符移除尾部的无效零。
如数值无小数部分,该修饰符会将有效数字精度之外的数值强制为零。
0(可选)使用格式化函数时,使用该修饰符,不带-修饰符,函数将用零而不是空格填充数值参数左边的多余空间,以达到最小宽度。
Width(可选)使用扫描函数时,如扫描字符串,Width元素规定了使用的字段的确切宽度。
LabVIEW处理参数时只扫描指定数量的字符。
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 也有同样的选择项,保持二者一致就可以了,但是如果被其它编程语言读取或者读取其他语言写的二进制文件,就要考虑大小端的问题,否则数据表现可能会。
LABVIEW数据文件的存储与回放
一、实验目的
(1)了解并掌握虚拟仪器中常用的数据文件格式和特点。
(2)掌握数据文件操作的基本步骤,学习灵活操作文件中数据的常用技巧和方法。
二、实验设备
1、安装有LabVIEW 7 Express计算机
2、安装有NI-DAQ 7的计算机
3、支持的数据采集设备(DAQ)(以NI公司提供的NI6014数据采集卡为例)。
三、实验任务描述
1、利用LabVIEW编程,设计出若干个子VI,利用它们分别完成不同类型数据的写入。
要求程序能够实现单个数据写入还是连续写入的切换功能。
2、设计主程序,主程序运行时首先弹出窗口请求输入数据保存格式,然后根据选择的格式运行不同的分支子程序,分支子程序采用SubPanel子面板的方法动态调用。
3、设计程序保存和读取二维或多维数组,要求保留维数信息。
(可使用头信息的方式或采用spreadsheet表单的数据格式保存)
四. 实验原理
完成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' 小端序。
使用格式说明符格式化字符串、将数字转化为字符串,或在字符串中插入不显示的字符。
对于输出字符串的函数,例如格式化写入字符串和数组至电子表格字符串转换,格式说明符使用下列语法元素。
双括号( [] )中的是可选元素。
%[$][-][+][#][^][0][Width][.Precision || _SignificantDigits][{Unit}][<Embedded information>]Conversion Code其中Width是一个大于零的数,.Precision和_SignificantDigits是大于等于零的数。
对于扫描字符串的函数,例如,扫描字符串和电子表格字符串至数组转换,格式说明符使用下列语法元素。
%[Width]Conversion Code格式化写入字符串、格式化写入文件、扫描字符串和扫描文件函数可在格式字符串输入中使用多个格式说明符,每个格式说明符用于每个可扩展函数的输入或输出。
格式说明符语法元素下表列出了格式说明符的语法元素。
详细信息见格式说明符范例。
语法元素说明% 格式说明符的开始。
$(可选)使用格式函数时,该修饰符规定了显示变量的顺序。
包括代表变量顺序的位数,其后紧接该修饰符。
-(可选)使用格式化函数时,该修饰符在参数的宽度之内将参数靠左调整,而不是靠右调整。
+(可选)使用格式化函数时,即使是正数,该修饰符也包括符号。
^(可选)使用格式函数和e或g转换代码时,该元素将数格式化为科学计数法,其中指数为3的倍数。
#(可选)使用格式化函数时,该修饰符移除尾部的无效零。
如数值无小数部分,该修饰符会将有效数字精度之外的数值强制为零。
0(可选)使用格式化函数时,使用该修饰符,不带-修饰符,函数将用零而不是空格填充数值参数左边的多余空间,以达到最小宽度。
Width(可选)使用扫描函数时,如扫描字符串,Width元素规定了使用的字段的确切宽度。
LabVIEW处理参数时只扫描指定数量的字符。
LabVIEW中二进制文件的存储与读取方法背景在软件开发中,二进制文件格式相对于文本文件格式的缺点是,没有文本文件通用性强、直观,同时,在读取文件数据时,用户需要知道存储数据的数据类型格式等,才可以准确还原文件内容,但是,二进制文件的优点也比较突出,如文件存取速度快、占用空间小,同时,也可有效保护自己的数据文件。
在上篇文章中已经详细说了LabVIEW平台中文本文件的读写编程方法,这次通过例子再说下二进制文件的编程方法。
例1:入门例子例子要求:将1至16共16个32位的整型数字以二进制文件的格式存储到计算机的D盘上,文件名称为“test1.bin”,存储完成后,立即读出该文件内容,并显示到前面板的数组控件上。
程序运行后界面如下图所示:实现代码如下:用For循环产生32位的整型数字1-16,读写二进制文件同读写文本文件的步骤相同,依照着打开文件、读写文件、关闭文件的顺序执行。
对于“写入二进制文件”函数的主要参数说明如下:l 待写入的数据参数,其类型可以连接任意的数据类型,即可以将任意数据写入二进制文件;l 是否预置数组或字符串的大小参数,表明当数据为数组或字符串时,LabVIEW是否将数据大小信息添加至文件开头,当为真时,在写入数据时,先写入4个字节的数值,存储了待写入数据的大小,默认为真,此例该参数设为假,即文件的开头未保存数组长度信息。
l 字节顺序,可以是大端、小端或主机字节顺序,例子中使用的是大端序,其特点是最高有效字节占据最低的内存地址,默认是大端序。
本例字节顺序使用的是大端序,存储后文件内容以十六进制格式显示如下,对于1-16之间的32位整型数字明显看出,如对于数字1,低内存地上存储的是数据的高位字节(00),而高内存地址上存储的是数据的低位字节(01):当以小端序存储时,存储后文件内容以十六进制格式显示如下,其字节顺序与大端序相反:对于“读取二进制文件”函数的主要参数说明如下:l 读取文件的数据类型参数,必须给一个参数,该参数与写入文件时数组类型完全一致;l 读取数据的个数,不接该参数时,只读取一个数值,为-1时,读取所有的数据,本例为-1,表示读取整个文件的数据,为其它值时,读取相应个数的数据。
数字与字符、各数制之间的相互转换可以参考一下第一届程序竞赛中的计算器程序,里面基本上都涉及到了,最好自己动一下手,这样印象深一点。
可以直接用“Format Into String”,%b是指转换为二进制字符串,08是指8位,左边用0填充,然后再用字符串子集提取需要的位就行了。
另外,“Scan From String”和“Format Into String”这二个节点应用非常广泛灵活,大家可以好好了解一下它们的用法,双击可以找开编辑对话框,自带的帮助中有非常详细的说明。
PS,标题可以再改详细一点,比如“十六进制数字转换为二进制字符串的问题”在格式化写入字符串(1)中,我们讨论了数值转换为格式字符串.。
在格式化写入字符串(2)中,我们讨论了时间、日期转换为格式字符串。
今天我们讨论字符串转化为带格式的字符串以及其综合运用的问题。
一、特殊转义字符我们注意到在字符串函数选板中,LABVIEW提供了一些字符串常量。
使用过早期版本的朋友们肯定注意到了现在的字符串常量比早期版本多了很多,字符串常量见下图:上图中的空格常量就是后来加入的,空格常量与其它字符串常量不同。
空格常量实际上是一个内置的VI,我们打开它的程序框图看一下,程序框图如下图所示:容易看出,空格常量返回的是方式下的s。
如果选择HEX方式,则为0x20。
熟悉ASCII 表的朋友们一眼就可以看出,这正是空格的ASCII。
显然使用s表示空格比ASCII更容易理解、更容易使用。
s称作空格的转义字符。
我们再看看回车键常量、换行符常量、行结束符常量和制表符使用的什么形式的转义字符。
很明显,我们可以直接使用转义字符代替这些常量,在格式化字符串时,使用转义字符远比常量方便的多。
在LABVIEW中,制表符占用两个空格位置,这与编程语言有关,有些是4个甚至是8个空格,所以一般在格式字符串时,指定空格比TAB更不受编译环境的影响。
下表是常用的转义字符:我们之所以讨论这些转义字符,是因为在格式化写入字符串函数中,会经常使用转义字符来替代上述常用的字符串常量。
本文为LabVIEW内部交流资料,来自网络,特此说明开发机上激活以后,如果开发机升级了或者换了或者增加新的配置了等等,难道要重新购买一套8.2吗?回答=更改了配置,那么lisence manager里的机器码肯定会变,所以需要重新向NI申请激活码激活.NI的IVI驱动的来源?回答=由于NI开发的IVI驱动程序库已经包含了仪器的Class Driver,因此,程序员只要按照IVI的规范开发自己仪器的Specific Driver,就可以实现仪器的互换性。
LV和CVI的专用驱动可以从NI的网站下载,源代码是用c编写的32位的DLL形式,这就保证驱动可以直接在你的开发环境中使用(LV,CVI,VC等)。
在运行过程中LabVIEW能否添加控件?回答=不能,只能在编辑状态是做。
不过可以事先多创建几个控件,然后隐藏。
再需要使用的时候使用属性节点来操作。
编写的LV的GPIB通讯程序,从示波器读取数据。
单独可以正常执行,但放置在一个事件结构的一个WHILE循环里时,运行程序后,程序会变得不相应,而且前面板不可控制。
回答=查看客户程序,GPIB程序并没什么问题,但是作为一个子程序放在事件结构里就会存在问题,而且子程序运行时,主界面默认的是不响应的。
如果要解决这个问题,需要选择事件结构编辑面板最下方有一个默认选项,用于设置是否在事件结构执行完成之前锁定前面板,默认为锁定,取消即可。
IVI的分类。
回答=因为所有的仪器不可能具有相同的功能,因此不可能建立一个单一的编程接口。
因此,IVI的驱动分为两类。
(1) 类驱动程序(Class Drive):它们是在特定类中编写仪器软件的标准接口。
这意味着软件开发者能重复使用他们的软件系统而不会由于低层硬件更改而被迫重新测试软件系统。
目前,IVI驱动程序库可用于下列几类仪器:示波器数字化仪表、开关多路复用器、数字万用表、任意波形发生器函数发生器等。
(2) 设备类驱动程序(Specific Drive):每种牌号和类型的仪器均有相应的专用驱动程序。
LabVIEW中的串口通信和数据解析一、引言在LabVIEW中,串口通信是一种常见的用于与外部设备进行数据交互的方式。
通过串口通信,我们可以与各类传感器、仪器、控制器等设备进行数据的传输与控制。
本文将介绍LabVIEW中如何进行串口通信和数据解析的方法和技巧。
二、LabVIEW中的串口通信1. 准备工作在进行串口通信之前,首先需要准备好相应的硬件设备和驱动程序。
一般来说,我们需要一台计算机、一个串口转USB转接器以及相关的串口设备。
另外,还需要安装相应的串口驱动程序,以便在LabVIEW中进行串口通信。
2. 配置串口通信在LabVIEW中,配置串口通信需要使用到“VISA”(Virtual Instrument Software Architecture)工具。
通过VISA,我们可以对串口进行打开、设置波特率、校验位、数据位等参数,并进行数据的发送和接收。
3. 打开串口在LabVIEW的程序中,使用“VISA Open”函数来打开串口。
我们需要指定对应的串口号以及串口的配置参数。
通过这一步,LabVIEW就可以与串口建立通信连接。
4. 配置串口参数在串口打开之后,需要进行串口参数的配置,包括波特率、校验位、数据位等。
这些参数需要与外部设备的参数保持一致,才能正确地进行数据的传输和解析。
5. 读取和发送数据在LabVIEW中,可以使用“VISA Read”和“VISA Write”函数来进行数据的读取和发送。
通过这两个函数,我们可以实现与外部设备的数据交互。
读取到的数据可以在LabVIEW中进行进一步处理和解析。
三、LabVIEW中的数据解析1. 数据格式在进行数据解析之前,首先需要了解数据的格式。
不同的外部设备会使用不同的数据格式进行数据的传输。
常见的数据格式包括二进制、十六进制、ASCII等。
根据实际情况,选择合适的数据格式进行解析。
2. 数据解析方法在LabVIEW中,可以使用字符串相关的函数来进行数据的解析。
7.1 文件间路径的关系读、写文件(或VI)最关键的步骤就是要准确的定位文件所在的位置,或者说:是要知道被读、写文件的所在路径。
在LabVIEW开发环境中,文件常量子选板提供了许多有关路径的函数和VI,使用时在程序框图中选择:》编程》函数》文件I/O》文件常量参见下图。
图7-1 文件常量函数和内置VI在这个子选板中即包含了路径函数也包含了路径VI,对于它们的了解可以通过帮助文件也可以通过程序设计得到更直观的了解。
下面我们就通过一段程序来看看这些函数与所引导路径之间的基本关系。
7.1.1 文件常量与所引导的路径间关系文件常量选板提供的这些函数和内置VI与所引导路径关系我们通过一个VI来演示。
具体参见下图。
图7-2 文件常量与所引导路径之间的关系由上图可见,这些函数与内置VI给出了不同位置的路径,比如引导到vi.lib、引导到系统目录下等等。
有了这些路径关系,使用者就可以在程序设计中合理的使用这些函数和内置VI。
实际上,程序中最常用的是“当前VI路径”函数。
在前面的动态调用中已经看到过它的实际使用状况。
7.1.2 非确定性文件路径的引导使用上面所展示的函数和内置VI,所导引的路径都是指向某个确定性的文件位置。
有时候我们无法定位文件的确定性位置或希望保存文件在自定义的位置时,还可以通过“文件对话框”或“文件路径输入控件”来实现。
文件对话框在程序框图中选择:》函数》编程》文件I/O》高级文件函数》文件对话框文件路径输入控件在前面板中,选择:》控件》新式》字符串和路径》文件路径输入控件参见下图所示。
图7-3 非确定性路径文件的查找在保存某些文件和测试报告时,文件对话框更实用一些。
因为有更多对话参数可以设定和选择。
7.1.3 路径的简单拆分上面图7-2中,我们使用“当前VI路径”函数打开的是第7章文件夹的路径,因为“文件常量引导的路径关系.vi”就放置在第7章文件夹中。
现在,假如我们希望使用第7章的“文件常量引导的路径关系.vi”来打开第6章的文件夹,那就需要进行路径的拆分或创建。
LabVIEW中的数据存储和数据库操作LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种图形化编程环境,常用于数据采集、控制系统和实验室自动化等应用。
在LabVIEW中,数据存储和数据库操作是非常关键的功能。
本文将介绍LabVIEW中的数据存储和数据库操作的方法和技巧。
一、数据存储在LabVIEW中,数据存储可以通过不同的方式实现,包括文本文件、二进制文件和TDMS文件等。
1. 文本文件存储文本文件存储是最基本和常见的数据存储方式。
在LabVIEW中,可以使用Write to Text File和Read from Text File等函数来实现文本文件的写入和读取。
通过这些函数,可以将数据以文本形式保存到文件中,并在需要时读取出来进行处理。
2. 二进制文件存储二进制文件存储可以更高效地保存和读取数据。
LabVIEW提供了Write Binary File和Read Binary File等函数来实现二进制文件的写入和读取。
与文本文件存储不同的是,二进制文件存储可以直接保存变量的二进制值,而无需进行数据类型转换和解析。
这使得二进制文件存储更加快速和高效。
3. TDMS文件存储TDMS(Technical Data Management Streaming)文件是LabVIEW中提供的一种特殊的数据存储格式。
相比于文本文件和二进制文件,TDMS文件具有更好的可扩展性和兼容性。
通过使用TDMS文件,可以将多个通道的数据以层次结构的方式进行存储,并且可以方便地进行数据筛选和导入导出操作。
二、数据库操作除了文件存储外,LabVIEW还提供了与数据库进行交互的功能。
通过数据库操作,可以将实验数据保存到数据库中,并且可以方便地进行查询和分析。
1. 连接数据库在LabVIEW中,可以使用Database Connectivity Toolkit来连接各种类型的数据库,如MySQL、SQLite和Microsoft SQL Server等。
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数据记录和存储(三)—二进制文件(Binary File)LabVIEW程序设计札记2009-10-12 09:34:30 阅读326 评论2 字号:大中小在文件存储的逻辑上,二进制文件基于值编码,而不是字符编码,其占用空间小,读取/写入速度快,但是译码比较复杂,不利用数据共享。
根据具体编码方式的不同,二进制的使用方式也有所不同,如对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。
7.1 文件间路径的关系读、写文件(或VI)最关键的步骤就是要准确的定位文件所在的位置,或者说:是要知道被读、写文件的所在路径。
在LabVIEW开发环境中,文件常量子选板提供了许多有关路径的函数和VI,使用时在程序框图中选择:》编程》函数》文件I/O》文件常量参见下图。
图7-1 文件常量函数和内置VI在这个子选板中即包含了路径函数也包含了路径VI,对于它们的了解可以通过帮助文件也可以通过程序设计得到更直观的了解。
下面我们就通过一段程序来看看这些函数与所引导路径之间的基本关系。
7.1.1 文件常量与所引导的路径间关系文件常量选板提供的这些函数和内置VI与所引导路径关系我们通过一个VI来演示。
具体参见下图。
图7-2 文件常量与所引导路径之间的关系由上图可见,这些函数与内置VI给出了不同位置的路径,比如引导到vi.lib、引导到系统目录下等等。
有了这些路径关系,使用者就可以在程序设计中合理的使用这些函数和内置VI。
实际上,程序中最常用的是“当前VI路径”函数。
在前面的动态调用中已经看到过它的实际使用状况。
7.1.2 非确定性文件路径的引导使用上面所展示的函数和内置VI,所导引的路径都是指向某个确定性的文件位置。
有时候我们无法定位文件的确定性位置或希望保存文件在自定义的位置时,还可以通过“文件对话框”或“文件路径输入控件”来实现。
文件对话框在程序框图中选择:》函数》编程》文件I/O》高级文件函数》文件对话框文件路径输入控件在前面板中,选择:》控件》新式》字符串和路径》文件路径输入控件参见下图所示。
图7-3 非确定性路径文件的查找在保存某些文件和测试报告时,文件对话框更实用一些。
因为有更多对话参数可以设定和选择。
7.1.3 路径的简单拆分上面图7-2中,我们使用“当前VI路径”函数打开的是第7章文件夹的路径,因为“文件常量引导的路径关系.vi”就放置在第7章文件夹中。
现在,假如我们希望使用第7章的“文件常量引导的路径关系.vi”来打开第6章的文件夹,那就需要进行路径的拆分或创建。
解码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:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。