labwindowscvi5第六章 数据格式化、文件读取和IO端口操作

合集下载

LabWindowsCVI库函数的使用

LabWindowsCVI库函数的使用

LabWindowsCVI库函数的使用LabWindows/CVI库函数的使用一、实验目的1、进一步熟悉CVI的集成开发环境2、进一步学习仪器面板中控键的使用3、学习CVI库函数使用方法4、学习用CVI库函数进行频谱分析的步骤二、实验内容1、编写一个波形显示程序,要求根据输入的幅值和周期数显示正弦波;根据输入的幅值和占空比显示方波。

2、制作一个简单仪器面板:要求有两个图形控件,用来显示图形;四个数字控件,分别用来输入正弦波幅值、周期以及方波的幅值、占空比;五个命令控件,分别用来启动程序产生正弦波、产生方波,清楚屏幕上显示的图像和退出程序。

3、利用CVI的代码生成工具生成你制作的一起面板的程序框架。

4、在用户程序中添加相应程序,运行后观察程序执行的结果。

三、程序源代码#include#include#include#include "guweiming.h"static int panelHandle;double a,b,c,d;int main (int argc, char *argv[]){if (InitCVIRTE (0, argv, 0) == 0)return -1; /* out of memory */if ((panelHandle = LoadPanel (0, "guweiming", PANEL)) < 0) return -1;DisplayPanel (panelHandle);RunUserInterface ();DiscardPanel (panelHandle);return 0;}int CVICALLBACKQINGPINGCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:DeleteGraphPlot (panelHandle, PANEL_GRAPH_2, -1, V AL_IMMEDIATE_DRAW);break;}return 0;}int CVICALLBACK FANGBOCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){ double wave[512] ;double phase=120,*p;p=&phaseswitch (event){case EVENT_COMMIT:SquareWave (512, c, 7.8125e-3, p, 50.0, wave);PlotWaveform (panelHandle, PANEL_GRAPH, wave, 512,V AL_DOUBLE, 1.0, 0.0, 0.0, d, V AL_THIN_LINE, VAL_EMPTY_SQUARE, V AL_SOLID, 1, V AL_RED);break;}return 0;}int CVICALLBACK QINGPING2Callback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:DeleteGraphPlot (panelHandle, PANEL_GRAPH, -1, V AL_IMMEDIATE_DRAW);break;}return 0;}int CVICALLBACK TUICHUCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:QuitUserInterface (0);break;}return 0;}int CVICALLBACK FTCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:GetCtrlVal (panelHandle, PANEL_FT, &a);break;return 0;}int CVICALLBACK ZQCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){switch (event){case EVENT_COMMIT:GetCtrlVal (panelHandle, PANEL_ZQ, &b);break;}return 0;}int CVICALLBACK FZCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2){switch (event)case EVENT_COMMIT:GetCtrlVal (panelHandle, PANEL_FZ, &c);break;}return 0;}int CVICALLBACK ZKBCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) {switch (event){case EVENT_COMMIT:GetCtrlVal (panelHandle, PANEL_ZKB, &d);break;}return 0;}int CVICALLBACK ZHENGXIANBOCallback (int panel, int control, int event,void *callbackData, int eventData1, int eventData2){ double Waves[512] ;switch (event){case EVENT_COMMIT:SinePattern (512, a, 0.0, b, Waves);PlotWaveform (panelHandle, PANEL_GRAPH_2, Waves, 512, V AL_DOUBLE, 1.0, 0.0, 0.0, 1.0, V AL_THIN_LINE, V AL_EMPTY_SQUARE, V AL_SOLID, 1, V AL_RED);break;}return 0;}四、思考题1.简述Panel Handle 和Control ID 参数的作用;答:Panel Handle 这一参数由LoadPanel 库函数设置,存入的是已存储的面板文件这一对象。

[labwindows cvi教程]LabWindows试用版入门指南

[labwindows cvi教程]LabWindows试用版入门指南

[labwindows cvi教程]LabWindows™/CVI™试用版入门指南最低系统要求想运行LabWindows/CVI,须具备以下配置:∙采用Pentium 1 GHz或更高性能微处理器的个人计算∙Microsoft操作系统:o Windows 7 (32位和64位)o Windows Vista (32位和64位)o Windows XP (32位)o Windows Server 2008 R2 (64位)o Windows Server 2003 R2 (32位)注:LabWindows/CVI仅支持Windows Server R2版本。

∙1024 × 768分辨率(或者更高) 视频适配器∙至少128 MB RAM, 推荐采用512 MB∙ 1.1 GB可用硬盘空间适合完整安装∙兼容Microsoft的鼠标安装指南完成下列步骤,从而安装LabWindows/CVI试用版软件包:1. 下载源自 的LabWindows/CVI试用版软件包并依照屏幕指南解压缩文件2. 解压缩文件后,安装自动开始,同时NI LabWindows/CVI窗口出现。

单击安装LabWindows/CVI 版本,其中的版本是您在试用的LabWindows/CVI版本3. 单击下一步4. 在用户信息面板上,选择安装NI LabWindows/CVI 版本试用版-不需要序列号5. 根据屏幕上的指示操作6. 安装LabWindows/CVI后,LabWindows/CVI安装程序提示您插入NI设备驱动盘。

评估LabWindows/CVI,无需通过安装设备驱动程序。

单击稍后安装(Later),完成LabWindows/CVI的安装。

LabWindows/CVI试用版在下载后,可安装LabWindows/CVI试用版软件包;该试用版软件包能在之后作为具有许可证的LabWindows/CVI版本被激活。

当您在试用期内启用LabWindows/CVI或是您购买合法许可证前,LabWindows/CVI会展现下图中出现的对话框。

LabWindowsCVI教程(1)PPT课件

LabWindowsCVI教程(1)PPT课件
LabVIEW, VEE
LabWindows/CVI
19.08.2020
4/18
2. LabWindows/CVI的历史
19.08.2020
5/18
3. LabWindows/CVI的特点
(1)针对测试测量领域的ANSI C语言开发环境
C compiler for Virtual Instruments (CVI)
变量命名 程序的格式和注释 复杂的程序要事先规划设计
19.08.2020
7/18
4. 程序结构
测控软件一般包括:用户界面、程序控制、数 据采集和数据分析4部分
19.08.2020
8/18
5. 开发环境
(1)主要窗口
LabWindows/CVI开发环境的三个主要窗口是工程窗口 (.prj)、源代码窗口(.c)和用户界面编辑器窗口(.uir)。
19.08.2020
15/18
LabWindows/CVI的函数库
19.08.2020
16/18
(4)交互式代码生成 C文件中生成程序结构:Main, Switch, If, For Loop… … UIR文件中生成代码框架: Main Function, Callback Functions (panel, control, menu) 函数面板中函数的自动插入
20/18
C源代码文件
.uir 用户界面资源文件
.h
用户界面资源头文件
.lib 外部静态库模块文件
.obj 目标文件
.h
外部模块头文件
.dll 动态链接库文件
.lib 动态链接库导入库文件
.fp 函数库(函数数和函数面板)文件
19.08.2020

LabVIEW文件IO操作介绍PPT课件

LabVIEW文件IO操作介绍PPT课件

2021/7/23
62
小试身手
3. 有一个测量程序,采集 两路信号,每1s采集一次, 要求每采集一次,就将采 集结果写入文本文件尾部, 即使重新运行程序,仍能 保证数据添加到文件尾部, 而不会覆盖原有数据。格 式为a保留4位小数,b为整 数,如右图所示。
2021/7/23
63
小试身手
4. 在LabVIEW中读取刚才写入的文件内容。 5. 将习题3的采集数据,采集完毕后写入表单文件,
2021/7/23
47
6.2 文件的基本操作
基本步骤
打开->读写、操作->关 闭
2021/7/23
48
6.3 文本文件和表单文件
它将字符串以ASCII编码格式存储在文件中,譬如txt 文件和Excel文件。这种文件类型最常见,可以在各 种操作系统下由多种应用程序打开,譬如记事本, Word,Excel等第三方软件,因此这种文件类型的通 用性最强。但是相对于其它类型文件,它消耗的硬盘 空间相对较大,读写速度也较慢,也不能随意的在指 定位置写入或读出数据。如果需要将数据存储为文本 文件必须先将数据转换为字符串才能存储。
2021/7/23
15
1.写入电子表格文件
图6-11 写入电子表格文件函数接线端子
2021/7/23
16
2.读取电子表格文件函数
图6-12 读取电子表格文件函数接线端子
2021/7/23
17
(a)电子表格文件的写操作
(b)电子表格文件的读操作
图6-13 电子表格文件的I/O操作
2021/7/23
文件I/O
在使用LabVIEW编写程序的过程中, 经常需要存储数据或读取数据,这就需要 有文件的I/O过程。

LabWindows CVI教程

LabWindows CVI教程

第一章 : LabWindows/CVI1.1 LabWindows/CVI1.1.1 LabWindows/CVI概述LabWindows/CVI是美国NI(National Instruments)公司开发的面向计算机测控领域的虚拟仪器软件开发平台,可以在多种操作系统(WindowsXP/Vista/7、Mac OS和Unix)下运行。

LabWindows/CVI 是为C 语言程序员提供的集成开发环境(IDE),在此开发环境中可以利用C语言及其提供的库函数来实现程序的设计、编辑、编译、链接、调试。

使用LabWindows/CVI 可以完成以下但不限于以下工作:·交互式的程序开发;·具有功能强大的函数库,用来创建数据采集和仪器控制的应用程序;·充分利用完备的软件工具进行数据采集、分析和显示;·利用向导开发IVI 仪器驱动程序和创建ActiveX 服务器;·为其它程序开发C 目标模块、动态连接库(DLL)、C 语言库。

图 1‐1 LabWindows/CVI界面LabWindows/CVI 的功能强大在于它提供了丰富的函数库。

利用这些库函数除可实现常规的程序设计外,还可实现更加复杂的数据采集和仪器控制系统的开发。

数据采集。

IVI库、GPIB/GPIB 488.2库、NI-DAQmx库、传统的NI-DAQ库、RS-232库、VISA库、VXI库以及NI-CAN库。

数据分析。

格式化IO库、分析库以及可选的高级分析库。

GUI库。

使用LabWindows/CVI 的用户界面编辑器可以创建并编辑图形用户界面(GUI),而使用LabWindows/CVI 的用户界面库函数可以在程序中创建并控制GUI。

此外,LabWindows/CVI为GUI 面板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和指示灯等,以适应测控系统软件开发的需求,利用这些控件可以设计出专业的测控程序界面。

Lecroy(立科)Windows示波器中文操作手册

Lecroy(立科)Windows示波器中文操作手册
WSXs-GS-E RXs 系列
辉度/采集模式 .................................................................................................................... 22 了解显示信息 ......................................................................................................................... 23 顶部菜单栏(“FILE”菜单) .................................................................................................... 23 网格区域 ............................................................................................................................. 24 触发延迟指示符 ............................................................................................................. 24 触发电平指标符 ............................................................................................................. 25 零电平指示符 ...........................

编程语言中的文件处理与IO操作技巧

编程语言中的文件处理与IO操作技巧

编程语言中的文件处理与IO操作技巧在编程语言中,文件处理与IO操作技巧是非常重要的部分。

无论是读取文件内容、写入文件,还是操作文件的各种操作,都需要掌握一些技巧和方法,以实现代码的高效运行和数据的准确处理。

本文将介绍几种常见的文件处理与IO操作技巧,帮助读者更好地理解和运用它们。

一、文件读取与写入在编程中,读取和写入文件是最常见的操作之一。

文件的读取可以帮助我们获取文件中的内容,而文件的写入则是将数据写入到文件中。

下面介绍几种常用的文件读取和写入的方法。

1.1 文件读取文件读取通过打开文件、读取文件内容和关闭文件三个步骤完成。

具体步骤如下:Step 1:打开文件在开始读取文件之前,需要先打开文件。

这可以通过编程语言提供的open()函数或类似的方法实现,具体用法各不相同。

打开文件的语法一般为open(文件名, 打开模式),其中文件名是需要读取的文件的路径,打开模式可以是只读模式、写入模式等。

Step 2:读取文件内容一旦文件被成功打开,就可以读取文件的内容了。

这可以通过编程语言提供的read()函数或类似的方法实现。

读取的内容可以保存到变量中以供后续使用。

Step 3:关闭文件文件读取完毕后,需要关闭文件。

关闭文件的操作可以通过编程语言提供的close()函数或类似的方法实现。

关闭文件可以释放系统资源,同时确保文件操作的完整性。

1.2 文件写入文件写入与文件读取类似,同样需要打开文件、写入文件内容和关闭文件三个步骤。

具体步骤如下:Step 1:打开文件与文件读取相同,文件写入也需要先打开文件。

打开文件的语法同样是open(文件名, 打开模式),文件名为需要写入的文件的路径,打开模式可以是只写模式、追加模式等。

Step 2:写入文件内容一旦文件被成功打开,可以向文件中写入内容了。

这可以通过编程语言提供的write()函数或类似的方法实现。

需要注意的是,写入的内容可以是字符串、数字等任何类型的数据。

CVI

CVI
户可选择某项,同时具有添加滚动条功能,列表框是由数 值和标签对组成的,每对都有其索引值。
• 树控件提供了一组分组项目列表,用户可以选择某一项
目或项目组。
• 表格控件可以输入或观察数组,每个单独的表格单元有
六种类型可以选择:Numeric型、String型、Picture型、 Ring型、Combo Box型和Button型。
第二章 常用控件的使用和编程
主要内容: 1、LabWindows/CVI的面板 2、常用控件
• 文本框控件 • 数值型控件 • 命令按钮控件 • 双态按钮控件 • 列表框、树控件和表格控件 • 图表控件
3、弹出式面板 4、文件读写和格式化
Labwindows/CVI的面板
1、面板的属性
2、面板操作类函数
弹出式面板类函数如下:
MessagePopup() GenericMessagePopup() PromptPopup() ConfirmPopup () FileSelectPopup() YGraphPopup() FontSelectPopup() DirSelectPopup 具体函数应用见: Library—User Inference Library— Pop-up Panels
TREE 控件属性
TABLE 控件的功能函数 插入行、删除行、获得单元格数据值、设置单元数据值。
函数原型
GetActiveTableCell SetActiveTableCell DeleteTableRows InsertTableRows DeleteTableColumns InsertTableColumns SetTableCellVal GetTableCellVal
• LoadPanel函数:将面板装载到内存中
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6. 路径应用(Directory Utilities)
• GetDir
int GetDir (char Current_Directory[]); i = GetDir (dir);
• •
SetDir DeleteDir
int DeleteDir (char Directory_Name[]); i = DeleteDir ("d:\\test\\data");
2010-112010-11-4 9/11 size_t Number_of_Elements, FILE *Stream); num = fwrite (data, 4096, 1024, fp);
Number_of_Elements, FILE *Stream); num = fread (data, 4096, 1024, fp);
• Fmtwizard
2010-112010-11-4 5/11
3. 定时/等待(Timer/Wait)
• • • Timer
double Timer (void)
Delay
void Delay (double Number_of_Seconds); Delay(3.0);
SyncWait
void SyncWait (double Begin_Time, double Interval); SyncWait(mark, interval);
8/11
2010-112010-11-4

ANSI C-stdio.h fopen • FILE *fopen (const char File_Name[], const char Mode[]); • fp = fopen ("test.dat", "wb+"); fclose • int fclose (FILE *Stream); • i = fclose (fp); fread • size_t fread (void *Buffer, size_t Element_Size, size_t
String_#1_Index, char String_#2[], int String_#2_Index, int Case_Sensitive?); • i = CompareStrings (str1, ind1, str2, ind2, 0);
2010-112010-11-4
CopyString ……

Scan 将一个源数据(item)格式化到一个或多个 目标数据变量中
int Scan (void *Source, char Format_String[], ...); Scan ("10", "%s>%d", &i);

格式符
%s %d, %i %f %10f 字符串 整型 浮点型 浮点型数组

MakeDir
int MakeDir (char Directory_Name[]); i = MakeDir ("d:\\test\\data");

GetProjectDir
int GetProjectDir (char Directory_Name[]); i = GetProjectDir (dir);
自动化测试与控制研究所
1. 字符串操作
• Formatting and I/O-String Manipulation
StringLength • int StringLength (char String[]); • i = StringLength (str); StringLowerCase • void StringLowerCase (char String[]); • StringLowerCase (str); StringUpperCase CompareString • int CompareStrings (char String_#1[], int
LabWindows/CVI教程 LabWindows/CVI教程(5) 教程(5)
文件和端口操作
主讲:乔立岩 主讲:
Email: qiaoliyan@ (交作业) (交作业 交作业) MSN: qiaoliyan@(在线交流) qiaoliyan@(在线交流) Tel: 86413532 ext. 8611 (逸夫楼611) 逸夫楼611)
• CopyFile • int CopyFile (char Source_File_Name[], char • GetFileAttrs • int GetFileAttrs (char File_Name[], int *Read-Only, •
2010-112010-11-4 int *System, int *Hidden, int *Archive); i = GetFileAttrs ("test.dat", &read, &system, &hidden, &archive); 7/11 Target_File_Name[]); i = CopyFile (“test1.dat”, “test2.dat”);

2010-112010-11-4
……
10/11
7. IO端口(Port IO)
• inp
char inp (short Port_Number); i = inp (0x220+4); j = inp (0x220+5); k = j*256+i;
• • •
inpw
k = inpw (0x220+4);
4/11
2010-112010-11-4
• 修饰符
修饰符:[wn], [tn], [t#], [pn], [bn]… …
• 举例
int iData[100]; float fData[100]; Fmt(iData, ”%100d<%100f”, fData); Fmt(string,"%s<%s%f[p2]","value is ",value); Scan(string,"%s>%s[t#]%f",str1,&value);
New_File_Name[]); i = RenameFile ("test1.dat", "test2.dat");

Formatting and I/O-File I/O
OpenFile • int OpenFile (char File_Name[], int Read/Write_Mode, int Action, int File_Type) • fp = OpenFile ("test.dat", VAL_READ_ONLY, VAL_OPEN_AS_IS, VAL_BINARY); CloseFile • int CloseFile (int File_Handle); ReadFile • int ReadFile (int File_Handle, char Buffer[], int Count); • ReadFile (fp, data, 8); WriteFile • int WriteFile (int File_Handle, char Buffer[], int Count); • WriteFile (fp, data, 8); ArrayToFile FileToArray
• fwrite • size_t fwrite (const void *Buffer, size_t Element_Size, • ftell • long ftell (FILE *Stream); • pos = ftell (fp); fseek • int fseek (FILE *Stream, long Offset, int Origin); • i = fseek (fp, 256, SEEK_SET);
2/11
• Programmer’s Toolbox-String Handling
AppendString • int AppendString (char
**Pointer_To_String_To_Append_To, const char String_To_Append[], int Num_Characters_To_Append); • AppendString (str1, str2, -1);
inpd outp
char outp (short Port_Number, char Byte); i = outp (0x2c0+5, ch);
• •
outpw outpd
11/11
2010-112010-11-4
2010-112010-11-4
6/11
5. 文件应用
• Utilities-File Utilities
DeleteFilName[]); • i = DeleteFile ("*.doc"); RenameFile • int RenameFile (char Existing_File_Name[], char
4. 日期/时间(Date/Time)
• • • DateStr
char *DateStr (void); 格式:MM-DD-YYYY 格式:HH:MM:SS
TimeStr
char *TimeStr (void);
GetSystemTime
int GetSystemTime (int *Hours, int *Minutes, int *Seconds);
StrDup • char *StrDup (const char String_To_Duplicate[]); • str = StrDup ("virtual instrumentation lesson"); RemoveSurroundingWhiteSpace • void RemoveSurroundingWhiteSpace (char String[]); • RemoveSurroundingWhiteSpace (str); SkipWhiteSpace StrICmpWithoutSurrWhiteSpace ……
相关文档
最新文档