图 2?16 虚拟信号发生器
功能描述及测试表格如表 2?2所示。
表 2?2 虚拟信号发生器测试表格
功能要求 波形选择 波形参数设置 偏移量设置 显示颜色设置 2.3.2 探究
测试要求 在三角波、正弦波、方波、任意波之间切换 设置采样率、频率、幅值 设置波形的偏移量 设置波形显示的颜色 探究在CVI下菜单创建、打印管理、绘图、剪切板操作、最小化到系统托盘、鼠标控制、按键检测、定时器、显示器兼容管理、信号生成、矩阵操作、复数运算、信号处理、信号测量、数据统计、拟合、向量运算、字符串操作、物理内存访问、任务管理、调用外部程序、多线程管理、调用外部模块管理等函数库的函数。
自己写iRunUserInterface函数,要求实现跟RunUserInterface函数完全
通过上一章节的学习,大家已经掌握了在CVI下开发GUI应用程序的基本步骤和基本方法。CVI的重要应用是工业接口通信、复杂的数据采集和仪器控制系统的开发,所以对于学习CVI来说仅仅掌握GUI程序的开发还远远不够。实际生产生活中,有些设备要求能够满足军用或工业领域恶劣环境或极端天气下对于可靠性的要求,有些设备要求能够满足快速大容量数据的持续传输的要求,有些设备要求能够满足防尘防水防暴防震防撬的要求,有些设备要求满足低成本的要求,纷繁的要求导致了不同的接口标准以及接口协议的诞生。
仅仅掌握了CVI下GUI的编程只能说是对CVI入门,却没有充分的体会到CVI的精华。在纷繁的接口与个性化的需求下,开发简捷高效、稳定易用、用户体验良好的程序才是我们学习CVI的终极目标。
[原创教程]LabWindows/CVI入门之第三章:计算机外设开发
3.1 计算机组件编程
在本节中,我们将会接触到在CVI下进行文件操作、音频播放、OpenGL操作、SQL数据库查询、剪贴板操作、动态数据交换、ActiveX控件操作、调用.Net操作等相关内容。在介绍相关内容时,我们只介绍原理与CVI对应的函数功能,具体使用方法需要大家查询CVI的帮助文档。
3.1.1 在CVI中进行文件操作
在程序运行时,常常需要将一些数据(运行的最终结果或中间数据)输出到磁盘上存放起来,以后需要时再从磁盘中输入到计算机内存。这样就需要对文件进行读写操作,LabWindows/CVI中对文件读写操作的常用函数如下:
(1) OpenFile 打开一个文件用以读或者写,函数返回文件句柄; (2) CloseFile 关闭指定的文件;
(3) ReadFile 从文件中读取指定字节数的内容到字符串缓冲区; (4) WriteFile 将字符串缓冲区中指定字节数的内容写到文件中; (5) ArrayToFile 将数组内容保存到文件中; (6) FileToArray 从文件中读取数据存储到数组中。
(7) ReadLine 从文件读取字节直到换行。
(8) WriteLine 将缓冲区中指定的字节数写入文件中,同时换行。 (9) DeleteFile 删除文件 (10) RenameFile 重命名文件 (11) CopyFile 复制文件
下面给出了一个简单的新建test.txt文件,并且向文本文件中写入字符并读出来的例子。
该函数运行之后,将在工程文件夹下新建一test.txt的文本文件,文件内容如图 3?1所示。程序运行结果如图 3?2所示。
图 3?1 文本文件内容
图 3?2 程序运行结果
与文件读写有关的函数可以在Formatting and I/O Library的File I/O中找到,与文件操作有关的函数可以在Utility Library的File Utilities中找到,与文件夹有关的函数可以在Utility Library的Directory Utilities中找到。另外,ANSI C中对文件的操作的函数如fopen、fread、fputs等函数在CVI中仍然可以使用。
3.1.2 网络通信:在
CVI中调用TCP库
在测控领域,随着网络计算、远程监控与远程诊断等在仪器仪表领域的应用与发展,网络通信已经成为仪器的基本功能。CVI也提供了Internet库、TCP库、DataSocket库以供用户使用。
Internet库主要提供了FTP协议、Telnet协议以及POP3协议的客户端的函数支持。 TCP库主要提供了基于TCP协议的网络数据收发函数。
DataSocket库提供了比TCP更加方便有效的NI推出的DataSocket的操作函数。 在本小节的介绍之前,我们假设大家已经知道了TCP/IP协议、FTP协议、POP3协议、HTTP协议、Telnet协议以及他们之间的相互关系,知道了IP地址、子网掩码、DNS、网关是什么。若对以上问题有含糊之处,建议立即通过Google等手段理解这些概念。 本节主要介绍TCP通信的相关内容。
利用TCP函数库进行网络传输都要涉及服务器端和客户端。TCP服务器可以通过网络向用户应用程序发送数据和从客户应用程序接收数据。TCP客户可以向TCP服务应用程序发送连接请求,并从服务器接收数据和向服务器发送数据。服务器需要注册,注册以后等待客户向它发送连接请求,而客户只能向已经存在的服务器发送连接请求。运行TCP服务器应用程序的计算机一般叫做主机。服务器端的传输控制函数如下: (1) RegisterTCPServer 注册TCP服务器 (2) ServerTCPRead 从客户端读取数据
(3) ServerTCPWrite 向客户端发送数据 (4) UnregisterTCPServer 注销TCP服务器 (5) DisconnectTCPClient 断开与客户端的连接
要是程序成为TCP服务器,必须要运行RegisterTCPServer函数。客户端的传输控制函数如下:
(1) ConnectToTCPServer 连接到TCP服务器 (2) ClientTCPServer 从服务器读取数据 (3) ClientTCPWrite 向服务器写数据
(4) DisconnectFromTCPServer 断开与TCP服务器的连接
另外CVI的TCP库还提供了TCP的回调函数,并提供了连接开始(TCO_CONNECT)、断开连接(TCP_DISCONNECT)以及数据有效(TCP_DATAREADY)3种消息。
下面给出了一个简单的建立TCP服务器,并通过客户端连接TCP服务器的例子。在该示例程序中,TCP服务器运行后客户端向服务器发送“Hello,I'm client.”的文本信息,服务器向客户端返回“OK”信息。 TCP服务器代码如下: