首页 CVICVI教案-2

CVICVI教案-2

举报
开通vip

CVICVI教案-2第二章 常用控件的使用和编程 在Labwindows/CVI集成开发环境,能够非常容易地创建出应用程序的图形用户界面,面板和控件是虚拟仪的重要组成部分。一个仪器可包含多个仪器面板,每个面板上可以包含有多个不同的控件。 Labwindows/CVI系统提供了各种各样的控件和丰富的函数库,对编程人员带来了极大的便利。本章将详细地介绍常用控件的属性、相应函数库和编程方法。 对于一个控件的使用,可以在属性窗口里进行相关参数设置,也可以在程序中通过有关函数设置控件的参数。 一、Labwindows/CVI的面板 双击面...

CVICVI教案-2
第二章 常用控件的使用和编程 在Labwindows/CVI集成开发环境,能够非常容易地创建出应用程序的图形用户界面,面板和控件是虚拟仪的重要组成部分。一个仪器可包含多个仪器面板,每个面板上可以包含有多个不同的控件。 Labwindows/CVI系统提供了各种各样的控件和丰富的函数库,对编程人员带来了极大的便利。本章将详细地介绍常用控件的属性、相应函数库和编程方法。 对于一个控件的使用,可以在属性窗口里进行相关参数设置,也可以在程序中通过有关函数设置控件的参数。 一、Labwindows/CVI的面板 双击面板控件,即可弹出面板设置对话框,如下图所示。 1、仪器面板的属性分为3个部分, 1) Source Code Connection:完成控件名称和回调函数名称的设置。 · Constant Name:控件名称,字母必须是大写,该名称是源程序访问该控件的标志; · Callback Function:回调函数名称,大小写均可。 2) Panel Settings:可完成仪器面板的标题、位置等内容的设置。当属性值改变时,对应的变化立即体现在窗口右上方“Quick Edit Window”栏目中。 · Panel Title:仪器面板的标题; · Menu Bar:选择仪器面板的菜单; · Close Control:选择具有关机功能的控件; · Top:Panel距窗口边框的上边距; · Left:Panel距窗口边框的左边距; · Height:Panel的高度; · Width:Panel的宽度; · Scroll Bar:设置Panel的水平或垂直滚动条; · Auto-Center Vertically:当调入Panel时,在垂直中央位置显示仪器面板; · Auto-Center Horizontally:当调入Panel时,在水平中央位置显示仪器面板; · Other Attributes ....:其它属性设置,如下图所示。 3) Attributes for Child Panels:可完成面板外观属性的设置。 · Frame Style:选择仪器边框的外观类型,共有6种选择方式; · Frame Thickness:Panel边框的宽度,最小为1,最大为10; · Title Bar Thickness:设置标题栏的宽度,不选中Size Title Bar Height to Font 时有效; · Size Title Bar Height to Font:设置仪器面板标题的字体与标题栏的高度; · Title Style:设置面板标题的字体、字形、大小等内容。 2、面板操作类函数 面板是仪器的基本组成控件,一个仪器包含一个或多个面板,在面板上放置各种控件和菜单条,用于编辑用户界面。 1) LoadPanel函数:将面板装载到内存中。函数原形如下: int panelHandle =LoadPanel (int parentPanelHandle, char filename [], int panelResourceID); · parentPanelHandle:父面板句柄,若为0,则装载的面板为父面板; · filename:为装载面板的用户界面文件名; · panelResourceID:是用户编辑器中为面板定义的常数值; · panelHandle:为返回值, 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示面板的句柄,在其它函数中使用该值来调用该面板。(见 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 上P53) 2) NewPanel函数:创建新面板,为其它函数调用返回面板句柄值。函数原形如下: int panelHandle =NewPanel (int parentPanelHandle, char panelTitle[], int panelTop, int panelLeft, int panelHeight, int panelWidth); · parentPanelHandle:父面板句柄,若为0,则装载的面板为父面板; · panelTitle:为创建新面板的标题名; · panelTop、panelLeft、panelHeight、panelWidth设置面板的位置和大小。 3) DisplayPanel:显示面板。 int Status= DisplayPanel (int panelHandle); · panelHandle:为面板句柄,专指已经在内存中存在的面板; · Status:为返回的状态值,用GETUILErrorString函数得到状态码对应的状态描述。(说明见附录B) 4) DiscardPanel:删除面板。 int Status= DiscardPanel (int panelHandle); 5) HidedPanel:隐藏面板。 int Status= HidedPanel (int panelHandle); 6) GetPanelAttribute:获得面板属性。 int Status=GetPanelAttribute (int panelHandle, int panelAttribute, void *attributeValue); · panelAttribute:输入参数,为面板属性值; · attributeValue:输出参数,为输出的面板属性的当前值。 说明:面板的具体属性可通过下列方式来查看和设置。 在界面的左下角选择Libraries→User Interface Library→Panelset→PanelAttribute。如下图所示。 也可在帮助文件中进行函数查询。 7) SetPanelAttribute:设置面板属性。 int Status= SetPanelAttribute (int panelHandle, int panelAttribute, ...); 举例说明:面板函数设计与应用,(书上P55),见例程2-7。 二、常用控件 (P33) 在CVI中,常用控件有15类,每一类又分为多个型号,可完成字符数据显示、图形显示、数据输出等内容。 控件通用函数包括创建、复制、删除、激活控件等,位于Library→User Interface→Controls/Graphs/Strip Charts→General Functions下,函数列表如下表所示; 函数原型 函数功能 函数原型 函数功能 NewCtrl 新建控件 GetCtrlVal 获得控件当前值 DuplicateCtrl 复制控件 SetCtrlVal 设置控件当前值 DiscardCtrl 删除控件 GetCtrlAttribute 获得控件属性值 GetActiveCtrl 获得当前激活的控件 SetCtrlAttribute 设置控件属性值 SetActiveCtrl 激活指定控件 GetCtrlBoundingRect 获得控件的位置坐标 DefaultCtrl 设定控件默认值 举例说明 (一)、文本框控件 有3种形式,即String、Text Message和Text Box控件。如右图所示。 · String控件:用来输入和显示字符串; · Text Message控件:是Indicator型控件,用来显示字符串文本,不能进行输入操作; · Text Box控件:用来显示和输入多行文本,有自动换行功能,当文本超出显示区域时,自动添加滚动条功能。 1、 文本框属性 可以在控件编辑对话框中设置,也可以通过编程方式设置和修改;属性值可以通过CVI的帮助来查询。在Help→Contents,打开帮助文件后,在“索引”选项框内输入“text”,选择“attributes”工具条,即可察看文本的属性,见下图。 文本框控件的种类不同,其属性设置也不完全相同,下以String控件为例来说明,双击面板上的文本框控件,即可弹出属性设置对话框,如下图所示。 从图上可以看出,属性分为4个部分: 1) Source Code Connection:完成控件名称和回调函数名称的设置; 2) Control Setting:控件相关参数设置; 3) Control Appearance:控件外观显示设置,即输出文本的字体设置,见下图; 4) Label Appearance:标签的外观设置。 2、 控件功能函数 文本框经常使用的函数有插入行、删除行等,可以通过Library→User Interface→Controls/Graphs/Strip Charts→Text Boxes...来编辑和查看,函数列表如下表所示,具体函数的使用可以查看帮助。 函数原型 函数功能 InsertTextBoxLine 向文本框内插入一行 ReplaceTextBoxLine 替换文本框中的一行文本 DeleteTextBoxLine 删除文本框中的一行文本 DeleteTextBoxLines 删除文本框中的多行文本 GetNumTextBoxLines 获得文本框文本的行数 ResetTextBox 替换文本框中的全部文本 GetTextBoxLine 获得文本框中的一行文本 GetTextBoxLineLength 获得文本框指定行的字节数 GetTextBoxLineOffset 获得指定文本行的头字符的偏移量 GetTextBoxLineIndexFromOffset 获得指定偏移量的字符所在的行索引 (二)、数值型控件(P34) 可作为用户参数输入窗或程序参数回显窗。包括:数值控件,颜色选择控件,数值滑动条。见下图。 · 数值控件:用来输入或显示数值型数据。 · 颜色选择控件:来选择颜色或选择颜色的信息。 · 数值滑动条:可用来设计控制、显示等部件。 1、属性:数值型控件的种类不同,其属性设置也不完全相同,应根据具体需要来设置。以数值控件为例来说明 从图上可以看出,属性分为4个部分: 1) Source Code Connection:完成控件名称和回调函数名称的设置; 2) Control Setting:控件相关参数设置; 3) Control Appearance:控件外观显示设置,包括:显示字体设置、显示形式的设置(显示或隐藏数值调整箭头和数值基数)。 4) Label Appearance:标签的外观设置。 2、功能函数:一般情况下使用通用函数来对该类控件进行操作。 3、控件使用举例 (三)、命令按钮控件 包括命令按钮和图形按钮,用来触发一个事件来进行程序控制。一般必须定义回调函数。 1、 控件属性,以命令按钮控件为例来说明 从图上可以看出,属性分为4个部分: 1) Source Code Connection:完成控件名称和回调函数名称的设置; 2) Control Setting:控件相关参数设置; 3) Shortcut Key:进行快捷键设置; 4) Label Appearance:控件外观显示设置。 2、 功能函数:使用通用函数来对该类控件进行操作。 3、 控件使用举例 (四)、双态按钮 包括3类:双态按钮、文本/图形双态按钮、单选/复选控件。 Square:矩形 1、控件属性: 包括4个部分:(简要说明) 2、举例说明控件的设定值,见例程2-8 (五)、循环控件 用于在一组值中进行选择,既可以用鼠标单击控件框、或单击控件的上、下箭头进行选择,也可以用键盘的Up和Down键进行选择,包括下拉列表控件、滑动列表控件、图形列表控件。 · 下拉列表控件可以在下拉列表的多个条目中选择一条,每一个条目都是以标题/数值对的形式保存的,控件显示各个条目的标题。当一个条目被选中时,它对应的数值就成为当前控制值。见例程2-9; · 滑动列表控件与下拉列表控件基本一致,但其外形与数值控件相近,但标题/数值对的个数是有限的。 · 图形列表控件与下拉列表控件基本一致,只是 “标题/数值对”变为“图形/数值对” 1、控件属性 以下拉列表控件为例来说明:见下图: 从图上可以看出,属性分为4个部分: 1) Source Code Connection:完成控件名称和回调函数名称的设置; 2) Control Setting:控件相关参数设置,注意“Label/ValuePairs...”设置,见下图; 3) Control Appearance:控件外观设置; 4) Label Appearance:标签外观显示设置。 (六)、列表框、树控件和表格控件 包含在同一类中,见右图。 · 列表框为用户提供选项功能,控件本身显示列表项,用户可选择某项,同时具有添加滚动条功能,列表框是由数值和标签对组成的,每对都有其索引值。 · 树控件提供了一组分组项目列表,用户可以选择某一项目或项目组。 · 表格控件可以输入或观察数组,每个单独的表格单元有六种类型可以选择:Numeric型、String型、Picture型、Ring型、Combo Box型和Button型。 1、 List Box控件 · 属性设置,属性设置窗口如下图所示 从图上可以看出,属性分为4个部分: 1) Source Code Connection:完成控件名称和回调函数名称的设置; 2) Control Setting:控件相关参数设置,注意“Label/ValuePairs...”设置,见下图; 3) Control Appearance:控件外观设置; 4) Label Appearance:标签外观显示设置。 在List Box控件编辑窗口,点击Label/Value Pairs按钮会弹出编辑窗口,如下图所示。在此窗口中需要设置每一组项目的数据类型(Data Type)、标题(Label)和值(Value),当程序运行时,在列表框内显示的文本是列表框项目的标题属性。当List Box的控件属性设置为非指示模式时,用户可通过键盘和鼠标改变文本。 · 功能函数:向列表框中插入项目、删除项目、获得属性值、设置属性值等,主要函数介绍如下 1 InsertListItem():向列表控件指定的索引位置插入项目。 函数原型:int InsertListItem (int panelHandle, int controlID, int itemIndex, char itemLabel[], any type Item_Value); 参数说明: itemIndex:项目索引,从0开始,依次递增,若为-1,则将项目插入到列表末尾; itemLabel[]:插入项目的标题; Item_Value:插入项目的值。 2 DeleteListItem():删除列表框中一个或多个项目内容。 函数原型:int DeleteListItem (int panelHandle, int controlID, int itemIndex, int numberOfItems); 参数说明: itemIndex:项目的起始索引; numberOfItems:删除项目的个数,若为-1,则表示删除从项目的起始索引以后的所有项目。 3 GetCtrlIndex():获得控件的索引值。 函数原型:int GetCtrlIndex (int panelHandle, int controlID, int *itemIndex); 参数说明: *itemIndex:所选项目的索引,若为-1,表示控件中没有项目。 4 GetLabelFromIndex():从指定的索引中得到该标题名。 函数原型:int GetLabelFromIndex (int panelHandle, int controlID, int itemIndex, char itemLabel[]); 参数说明: itemIndex:项目的索引; itemLabel[]:标题名 5 GetValueFromIndex():从指定的索引中获得项目值 函数原型:int GetValueFromIndex (int panelHandle, int controlID, int itemIndex, void *itemValue); 参数说明: itemIndex:项目的索引; *itemValue:项目值。 6 其它函数可以通过:Library—User Inference Library—Controls/Graphs/Strip Charts—List/Tree(Label/Value)Controls来查看和使用,见下表,具体应用也可参考CVI帮助 函数原型 函数功能 函数原型 函数功能 InsertListItem 向列表框增加内容 GetValueFromIndex 依据索引号得到值 ReplaceListItem 替换列表框的内容 GetIndexFromValue 依据值得到索引 DeleteListItem 删除列表框的内容 GetValueLengthFromIndex 依据索引号得到值的长度 SetCtrlIndex 设置控件索引 GetNumCheckedItems 得到被选中的列表项的数目 GetCtrlIndex 得到控件索引 GetLabelFromIndex 依据索引得到该标题名 GetNumListItems 获得列表项的数目 GetLabelLengthFromIndex 依据索引得到该标题名的长度 ClearListCtrl 清除控件中的所有列表项 IsListItemChecked 所指定的列表项是否被选中 SetListItemImage 设置所指定列表项的图像 CheckListItem 对指定列表项设置检查属性 GetListItemImage 得到所指定列表项的图像 GetIndexFromPoint · 应用举例(例程2-10) 2、 Tree控件 · 属性设置窗口如下图所示,可以对Tree控件进行属性设置。 从图上可以看出,属性设置分为5个部分: 1) Source Code Connection:完成控件名称和回调函数名称的设置; 2) Control Setting:控件相关参数设置,注意“Label/ValuePairs...”设置,见下图; 3) Control Appearance:控件外观设置; 4) Items :项目设置。 5) Label Appearance:标签外观显示设置。 · 功能函数:插入行、删除行、获得单元格数据值、设置单元数据值等。 1 InsertTreeItem():插入新项目。插入后,则该新项目位置和该位置后项目的索引值均加1。 函数原型:int InsertTreeItem (int panelHandle, int controlID, int relation, int relativeIndex, int position, char itemLabel[], char tagBase[], char tag[],any type Item_Value); 参数说明: relation:定义插入新项目的方式,VAL_CHILD插入指定项目的下级;VAL_SIBLING插入到同级目录; relativeIndex:新项目的相对索引值; position:新项目的插入位置; itemLabel[]:新项目的标题; tagBase[]:新项目标签项的基准; tag[]:新项目的标签; Item_Value:插入项目的值; 2 GetNumTreeItems():获得树项目的个数 函数原型:int GetNumTreeItems (int panelHandle, int controlID, int relation, int relativeIndex, int beginIndex, int direction, int stateCriteria, int *count); 参数说明: relation:定义被统计项目之间的相互关系,VAL_ALL统计全部项目;VAL_SIBLING统计目录;VAL_CHILD统计指定目录的子目录;VAL_DESCENDENT统计指定目录的所有子目录;VAL_ANCESTOR统计指定目录的所有父目录; relativeIndex:指定统计目录的关系索引。 beginIndex:开始的索引值; direction:定义统计的方向; stateCriteria::定义统计项目的状态; 3 其它函数可以通过:Library—User Inference Library—Controls/Graphs/Strip Charts—List/Tree(Label/Value)Controls—Trees 来查看和使用,见下表,具体应用也可参考CVI帮助 函数原型 函数功能 函数原型 函数功能 InsertTreeItem 插入新项目 GetLabelFromIndex 从指定的索引值得到标题 MoveTreeItem 移动指定项目 GetTreeItem 获得指定项目 GetCtrlIndex 获得所选择项目的索引值 · 函数应用举例(例程2-10) 3、 Table控件 · 属性设置窗口如下图所示,可以对表格控件进行各项属性设置。 从图上可以看到,属性设置分为7个部分: 1) Source Code Connection:完成控件名称和回调函数名称的设置; 2) Control Setting:控件相关参数设置,注意“Label/ValuePairs...”设置,见下图; 3) Control Appearance:控件外观设置; 4) Label Appearance:标签外观显示设置。 5) Row:行设置; 6) Column:列设置; 7) Cell:单元格设置。 在表格控件单元格属性设置窗口中,可以对单元格的数据类型及相关属性进行设置,单元格的数据类型有六种:String、Picture、Button、Numeric、Ring、Combo Box。如下图所示。 图2-4 单元格属性设置窗口 · 功能函数功能有:插入行、删除行、获得单元格数据值、设置单元数据值等,如下表所示。 函数原型 函数功能 函数原型 函数功能 GetActiveTableCell 获得激活的单元格 SetTableCellVal 设置指定单元格的值 SetActiveTableCell 激活所指定的单元格 GetTableCellVal 获得指定单元格的值 InsertTableRows 向表格中插入一行 InsertTableColumns 向表格中插入一列 DeleteTableRows 删除表中所指定的行 DeleteTableColumns 删除表中所指定的列 使用时应注意,单元格为结构体变量,其定义为: typedef struct { int x; x为列 int y; y为行 } Point; 在使用时,Point 来声明变量,或使用函数MakePoint (int x, int y)。 例:SetTableCellVal (panelHandle, PANEL_TABLE, MakePoint (2, 2), "123"); Point aa; aa.x=3; aa.y=2; SetTableCellVal (panelHandle, PANEL_TABLE, aa, "12345"); · 函数应用举例(例程2-10) 4、 举例来说明应用 编程实现向Tree和List Box控件插入或删除内容,如例程2-2所示。所用到控件介绍如表2-6所示 常量名 控件类型 控件属性及功能 LISTBOX List Box List Box控件的应用 TREE Tree Tree控件的应用 COMMAND_INSERT Command Button 标题:插入;回调函数:insert COMMAND_DELETE Command Button 标题:删除;回调函数:delete COMMAND_TRANS Command Button 标题:>>转移>>;回调函数:transfer COMMAND_QUIT Command Button 标题:退出;回调函数:quitProg STRING String 标题:插入新项目 (七)、图表控件 在工程测试中,图表、曲线和波形图是经常使用,包括三类:Graph、Strip Chart和Digital Graph控件,如下图所示。 1、Graph控件:用来图形化显示数据,可以显示一条或多条曲线,每条曲线包含曲线、数据点、几何图形、图片或字符串。 · 控件属性,见下图。 从图上可以看出,属性设置分为4个部分: 1) Source Code Connection:完成控件名称和回调函数名称的设置; 2) Control Setting:控件相关参数设置; 3) Control Appearance:控件外观设置; 4) Label Appearance:标签外观显示设置。 · 绘图功能函数,Graph控件可以使用不同类型的数据,绘制多种类型的图表,函数如下表所示,函数应用见“Library—User Inference Library—Controls/Graphs/Strip Charts—Graphs and Strip Charts—Graph Plotting and Deleting”。 (precision 精度) 函数名称 函数功能 函数名称 函数功能 PlotX 沿y轴坐标绘制x轴数组的曲线图 PlotOval 绘制椭圆 PlotY 沿x轴坐标绘制y轴数组的曲线图 PlotPoint 绘制点 DeleteGraphPlot 删除Graph控件中一条或多条图形 PlotPolygon 绘制多边形 PlotXY 绘制x、y轴数组的曲线图 PlotRectangle 绘制矩形 PlotBitmap 将图像文件显示到Graph控件中 PlotArc 绘制弧 PlotIntensity 绘制颜色强度曲线 PlotText 绘制文字 PlotScaledIntensity 绘制比例变换颜色强度图形 PlotWaveform 绘制波形 SetPlotAttribute 设置Graph控件属性值 PlotLine 绘制直线 GetPlotAttribute 获得Graph控件属性值 RefreshGraph 更新Graph控件 举例:在Graph控件中显示一条曲线,并且能够删除。(见例程2-11) · 光标功能函数,如果需要使用光标功能,必须将控件模式设置为Indicator型以外的任何类型。不同的光标类型,对应相应的功能。通过SetCursorAttribute函数的ATTR_CURSOR_MODE属性,设置为VAL_FREE_FORM或是VAL_SNAP_TO_POINT。使用VAL_FREE_FORM光标类型时,用户可以将光标放置在绘图区域中的任何位置;使用VAL_SNAP_TO_POINT光标类型时,当用户释放光标时,光标被放置到离释放位置最近的绘图点上。函数列表如下表所示,函数应用见“Library—User Inference Library—Controls/Graphs/Strip Charts—Graphs and Strip Charts—Graph Cursors”。 函数名称 函数功能 函数名称 函数功能 GetGraphCursor 获得Graph的光标 GetGraphCursorIndex 获得Graph光标的索引 SetGraphCursor 设置Graph的光标 SetGraphCursorIndex 设置Graph光标的索引 GetActiveGraphCursor 获得Graph当前活动的光标 GetCursorAttribute 获得Graph光标属性 SetActiveGraphCursor 设置Graph当前活动的光标 SetCursorAttribute 设置Graph光标属 · 注释功能函数,向图表中加注释,以表明Graph控件中的指定数据点,如果用户操作Graph控件的注释,需要将控件类型设置为非Indicator型控件模式,当用鼠标移动注释标题时,将会连续产生EVENT_VAL_CHANGED事件。函数列表如下表所示,函数应用见“Library—User Inference Library—Controls/Graphs/Strip Charts—Graphs and Strip Charts—Graph Annotations”。 表2-9 注释功能函数 函数名称 函数功能 函数名称 函数功能 AddGraphAnnotation 添加Graph注释 GetAnnotationAttribute 获得注释属性 DeleteGraphAnnotation 删除Graph注释 SetAnnotationAttribute 设置注释属性 GetAnnotationIndexFromCaption 获得标题的注释索引 1) 缩放、移动视区功能,可将视区内某一特定点放大或缩小,同时也可以使用移动视区功能,通过SetCtrlAttribute函数设置属性ATTR_ENABLE_ZOOM_AND_PAN为True,则可使用该功能。 2) 在某点上按下Ctrl键并按下鼠标左键时,可以放大该视区。之后,用户可以释放Ctrl键,在释放鼠标左键之前视图将逐渐增长; 3) 在某点上按下Ctrl键并按下鼠标右键时,可以缩小该视区。之后,用户可以释放Ctrl键,在释放鼠标右键之前视图将逐渐缩小; 4) 在某点按下Ctrl+Shift键并按下鼠标左键拖动鼠标,可移动视区。 2、Strip Chart控件:可以实现绘制一条或多条动态曲线,并且能够及时更新,但是不支持绘制几何图形、光标、缩放和移动功能。有3种滚动模式:连续模式、刷新模式和块模式。 · 控件属性 · 功能函数介绍: 函数列表如下表所示,函数应用见“Library—User Inference Library—Controls/Graphs/Strip Charts—Graphs and Strip Charts—Strip Chart Traces”。 函数名称 函数功能 函数名称 函数功能 PlotStripChart 绘制曲线 GetTraceAttribute 获得控件曲线的属性值 PlotStripChartPoint 绘制曲线点 SetTraceAttribute 设置控件曲线的属性值 ClearStripChart 清除曲线 3、Digital Graph控件:一般为Indicator型,因此不能通过键盘和鼠标操作,用来显示一组数字(0、1)数据,沿y轴从上至下记录数组数据,第一个数据相应的显示在sample0-line0上,第二个数据显示在sample0-line1上,依次类推,可以用来表示在Bus和Line上数据的分配情况。将大于等于1的数值显示为1,等于0的数值显示为0。函数列表如下表所示,函数应用见“Library—User Inference Library—Controls/Graphs/Strip Charts—Graphs and Strip Charts—Digital Waveform Graph Plotting”。 函数名称 函数功能 函数名称 函数功能 ClearDigitalGraph 清除数字曲线 PlotDigitalLinesMultiBus 绘制多总线数字曲线 PlotDigitalLines 绘制单总线数字曲线 PlotPackedDigitalLines 绘制单总线打包数据的数字曲线 PlotPackedDigitalLinesMultiBus 绘制多总线打包数据的数字曲线 4、举例说明三个绘图控件的使用方法 在Graph中显示一组静态正弦波数据,在Strip Chart中产生随机数并动态显示,在Digital Graph中显示一组数字信号。如例程2-3所示。 5、 所用到控件介绍如表2-12所示 表2-12 控件属性设置表 常量名 控件类型 控件属性及功能 GRAPH Graph 标题:Graph控件应用 STRIPCHART Strip chart 标题:Strip Chart控件应用 DIGGRAPH Digital Graph 标题:Digital Graph控件应用 COMMAND_1 Command Button 标题:绘图;回调函数:graph COMMAND_2 Command Button 标题:绘图;回调函数:stripchart COMMAND_3 Command Button 标题:绘图;回调函数:digitalgraph COMMANDQUIT Command Button 标题:退出;回调函数:quit 6、 主要函数详细介绍: 1 SinePattern():产生一组正弦波数据,使用见图2-10 图2-10 2 PlotY():绘制曲线; 3 DeleteGraphPlot():删除Graph控件中一条或多条图形。详细说明见使用帮助。 4 InstallMainCallback():为面板、控件和菜单安装主回调函数,使用见图2-10。 int InstallMainCallback (MainCallbackPtr eventFunction, void *callbackData, int getIdleEvents); 参数说明: · *callbackData:指向用户自定义的回调数据; · getIdleEvents:当程序被挂起时,是否允许处理系统idle事件,1为响应idle事件;0为忽略idle事件; · eventFunction:接收面板、菜单、控件以及鼠标信息,处理idle事件,如果关闭主回调函数,可以将此值设置为NULL值。函数原型为:(从帮助中可以得到) int CVICALLBACK EventFunctionName (int panelOrMenuBarHandle, int controlOrMenuItemID, int event, void *callbackData, int eventData1, int eventData2); 图2-10 5 SetIdleEventRate():设置主回调函数的响应时间。使用见图2-11 int SetIdleEventRate (int interval); interval:为时间间隔,单位是毫秒。 图2-11 6 PlotStripChartPoint():绘制曲线。 int PlotStripChartPoint (int panelHandle, int controlID, double y); 7 ClearStripChart():清除曲线 8 PlotDigitalLines():绘制单总线数字曲线; int PlotDigitalLines (int panelHandle, int controlID, void *dataArray, int numberOfPoints, int dataType, unsigned char numLines); 参数说明: 7、 思考 1、 为每一个图形控件增加一个曲线删除的按钮,程序怎样实现? 2、 怎样停止主回调函数? 五、弹出式面板 在编写CVI程序时,常常需要在程序运行过程中,弹出面板,给用户一些提示。当弹出式面板被激活后,将显示在程序的最顶层位置。种类包括:信息提示弹出式面板、输入信息弹出式面板、文件路径弹出式面板、数据图表弹出式面板等。 1、弹出面板类型 1 Message Popup(信息提示弹出面板):用来显示提示信息。如右图所示。 MessagePopup函数:在对话框中显示信息,等待用户按下OK键。可以显示多行信息,使用“\n”重新开始一行文本。 函数原型:int MessagePopup (char title[], char message[]); 2 Generic Message Popup(简单的输入信息弹出面板):可输入信息字符串,并且最多可设置三个按钮,如下图所示。 GenericMessagePopup函数:在弹出式面板中显示一个设定的信息,同时面板上还有一个字符串文本框接收响应的字符串。 函数原型:int GenericMessagePopup (char title[], char message[], char buttonLabel1[], char buttonLabel2[], char buttonLabel3[], char responseBuffer[], int maxResponseLength, int buttonAlignment, int activeControl, int enterButton, int escapeButton); 主要参数说明: · responseBuffer:存储用户输入的字符串,其存储空间要大于maxResponseLength设置的数值。如果不需要显示文本框,则输入0。 · maxResponseLength:向文本框内输入的最大字节数。 · enterButton:确定以Enter键作为快捷键的按钮,如果取消,则输入常量:VAL_GENERIC_POPUP_NO_CTRL。 · escapeButton:确定以Esc键作为快捷键的按钮,如果取消,则输入常量:VAL_GENERIC_POPUP_NO_CTRL。 3 Prompt Popup(提示式弹出面板):要求用户进行输入操作,如右图所示。 PromptPopup函数:显示一个信息等待用户进行信息操作。 函数原型:int PromptPopup (char title[], char message[], char responseBuffer[], int maxResponseLength); 4 Confirm Popup(确认信息弹出式面板):用来对某一行为进行确认,如下图所示。 ConfirmPopup函数:在弹出式面板中显示一个提示信息等待用户按下Yes按钮或No按钮。当按下Yes按钮时,返回值为1;当按下No按钮时,返回值为0。 函数原型:int ConfirmPopup (char title[], char message[]); 5 File Select Popup(文件路径选择弹出式面板):显示的是用户选择的磁盘上所存储的文件名和路径名,如下图所示。 FileSelectPopup函数:显示一个文件选择对话框,等待用户选择一个或按下取消按钮取消本次操作。 如果返回值为0:则表示没有文件选择;如果值为1,则表示选择了一个文件;如果值为2,则表示选择了一个新文件。 函数原型:int FileSelectPopup (char defaultDirectory[], char defaultFileSpec[], char fileTypeList[], char title[], int buttonLabel, int restrictDirectory, int restrictExtension, int allowCancel, int allowMakeDirectory, char pathName[]); 主要参数说明: · defaultDirectory[]:初始路径。如果输入为空字符串,则显示当前工程所在的路径。 · defaultFileSpec[]:输入一个字符串,来说明初始时被显示的文件类型。 · fileTypeList[]:文件类型列表,当restrictExtension为0时,输入以分号分割的文件类型字符串,在程序运行时输入的类型在文件类型列表的下拉框中出现,最大长度为255个字节。 · buttonLabel:文件选择的标签按钮。 · restrictDirectory:设置值为0,用户可以改变文件路径和驱动器;否则,不能改变文件路径和驱动器。 · restrictExtension:设置值为0,用户可以选择所有扩展名的文件;否则,用户必须选择初始扩展名的文件。 6 Graph(绘图控件)弹出式面板:有四种数据图表的显示格式,分别是X Graph Popup、Y Graph Popup、XY Graph Popup、Waveform Graph Popup。 7 Font Select Popup:打开字体设置对话框,允许用户设置文本字体,如果用户点击取消按钮或有错误发生,则函数不会修改输入输出设置,如下图所示。 函数原型:int FontSelectPopup (char title[], char sampleText[], int monospacedFontsOnly, char typefaceName[], int *bold, int *underline, int *strikeOut,int *italic, int *justification, int *textColor, int *fontSize,int minimumFontSize, int maximumFontSize,int showDefaultButton, int allowMetaFonts); 主要参数说明: · sampleText[]:对话框内的示例文本。 · monospacedFontsOnly:如果值为0,则用户可以选择任何字体,如果为非0值,用户只能固定宽度的字体。 · typefaceName[]:打印字体选择,打印字体名缓冲区一般至少包含256字节,如果输入0,则表示隐藏打印字体选择对话框。 · *bold:字体是否加粗显示,若输入0,则隐藏加粗显示复选框。 · *underline:字体是否加下划线,若输入0,则隐藏下划线显示复选框。 · *strikeout:字体是否加删除线,若输入0,则隐藏删除线显示复选框。 · *italic:字体是否斜体显示,若输入0,则隐藏斜体显示复选框。 · *justification:字体显示位置,若输入0,则隐藏字体显示位置复选框。 · *textColor:文本颜色,若输入0,则隐藏文本颜色复选框。 · *fontSize:文本字号,若输入0,则隐藏文本字号复选框。 · minimumFontSize:允许设置的最小字号。 · maximumFontSize:允许设置的最大字号。 · showDefaultButton:是否允许显示默认按钮,若为非0,则显示;若为0,则隐藏。 · allowMetaFonts:是否允许显示NI定义字体,若为非0,则显示;若为0,则隐藏。 8 DirSelectPopup:文件路径弹出对话框,允许用户选择一个路径。 函数原型:int DirSelectPopup (char defaultDirectory[], char title[], int allowCancel, int allowMakeDirectory, char pathName[]); 2、弹出面板编程 要求:在本例中按下一个按钮,则会弹出与按钮标题相应的弹出式面板,当点击Font按钮时,会弹出字体设置面板,能够设置Text Box中字符的字体,如例程2-4所示。 · 所用到控件包括9个按钮和1个Text Box控件,控件主要属性如下表所示 常量名 控件类型 控件属性及功能 CMD_MESSAGEPOPUP Command Button 回调函数:MessagePop,标题:Message Popup CMD_GENERICPOPUP Command Button 回调函数:GenericPop,标题:Generic Message Popup CMD_PROMPTPOPUP Command Button 回调函数:PromptPop,标题:Prompt Popup CMD_FONT Command Button 回调函数:Font,标题:Font CMD_CONFIRMPOPUP Command Button 回调函数:ConfirmPop,标题:Confirm Popup CMD_YGRAPHPOPUP Command Button 回调函数:YGraphPop,标题:Y Graph Popup CMD_FILESELECTPOPUP Command Button 回调函数:FileSelectPop,标题:File Select Popup CMD_DIRSELECTPOPUP Command Button 回调函数:DirSelectPop,标题:Dir Select Popup COMMANDQUIT Command Button 回调函数:quit TEXTBOX Text Box 默认值:这是一个字体示例!\n This is a Sample · 具体函数见前面介绍,程序执行结果见下图: 六、文件读写和格式化 在编程时,经常需要对文件进行读写和、对字符串等数据进行格式转换。 1、文件读写函数:供用户打开、关闭和读写磁盘文件。具体函数见下表,函数应用面板见下图。 表2-14 文件读写函数 函数名称 函数功能 函数名称 函数功能 OpenFile 打开文件 ArrayToFile 将数组内容保存到文件中 CloseFile 关闭文件 FileToArray 从文件中读取数据并存储到数组 ReadFile 将文件读到缓冲区 GetFileInfo 获得文件信息 WriteFile 将缓冲区中的字符串写入文件中 SetFilePtr 设置文件指针 2、字符串操作函数:包含字符串和字符缓冲区的基本操作。具体函数见下表,函数应用面板见下图。 函数名称 函数功能 函数名称 函数功能 StringLength 获得字符串长度 CompareBytes 比较字节数 StringLowerCase 将字符串转换为小写 CompareStrings 比较字符串 StringUpperCase 将字符串转换为大写 FindPattern 在缓冲区中查询指定模式的字节 CopyBytes 复制字节 ReadLine 在文件中读取一行字符 CopyString 复制字符串 WriteLine 将缓存中字符写入文件并加换行符 3、数据格式化函数:可供用户进行复杂的数据格式化输入输出操作。(看P290,附录A) 1) Fmt函数:将一个或多个数据源格式化到一个目标文件中。函数原型: int Fmt (void *target, char *formatString, source1, . . . , source) · *target:存储格式化后的数据。 · Source1...:需要格式化的数据源。 · *formatString:定义格式化类型,格式如下 “target_spec%3i[x]", hh); t=hh[0]*3600+hh[1]*60+hh[2]; return(t); } 说明:%3i[x]:读取3个数字而不管每个数字后面出现的结束字符。 程序代码见例程2-6。函数的详细说明见CVI帮助文档,或查阅孙晓云主编教材的附录A。 七 实验安排 1、LabWindows用户界面编程 2、编写一个函数发生器 3、数据文件的编程操作 颜色选择控件 数值控件 数值滑动条控件 数值控件 PAGE 25
本文档为【CVICVI教案-2】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_562589
暂无简介~
格式:doc
大小:2MB
软件:Word
页数:27
分类:
上传时间:2018-09-06
浏览量:69