西安工程大学本科毕业设计(论文)
表4-1 Button常用属性
常用属性 说明
Name 对象名称,对象摆放完成后给予,是第一个必要设置的属性 Caption 出现在按钮上的文字标题
用法:Name属性中,可以默认原来的名字,也可以根据需要,设置成其它名字。调整好外观及相关属性后,由于按钮的目的是让用户按下,并进而执行某些功能,还需要在按钮组件的Click实践中写入程序代码,执行一些系统地动作。以下用到的Button按钮用法相同。
Curves 用于绘制曲线。Curves组件还必须要设置的属性如下图4-13所示。
图4-13 SimunCurves设置属性 AxisClor:用于设置坐标轴及坐标网格的颜色;
AxisScaleX-Z:用于设置刻度单位,X为1,则每格为1,Y为10,则每格代表10;
AxisType:用于设置是否有网格,如果设置成Grid,则表示有网格; AxisUnitX-Z:用于设置坐标比例; AxisColor:用于设置坐标轴及网格颜色;
GraphKind:调整坐标系类别,比如设置成pgXY,则为X-Y坐标系,pgXZ,则为X-Z坐标系,还有pgCenter和pgNone等属性;
SignColor:用于设置曲线颜色;
BackColor:用于设置Curves组件背景颜色;
31
西安工程大学本科毕业设计(论文)
TextColor:用于设置坐标刻度颜色。
在这一模块中,我的设计思路如下:用到的坐标系为XY坐标系。为了方便看出不同时间所对应的温度数值,我将其AxisType属性设置成Grid,即有网格的形式。从外观上考虑,我将SimuCurves的背景颜色设为白色,坐标轴刻度设置成黑色,而绘制曲线的颜色为红色;由于温度一般在100度以上,所以将AxisScaleY属性设置成10,这样一来,Y轴每格表示10℃,而对于时间,也需将AxisScaleX属性设置成10。AxisUnitX-Z属性都需设置成1。又因为是温度时间曲线显示,所以要给横纵坐标加上标注,这就需要在程序中加入如下指令,将横坐标单位设置为时间“t”,纵坐标设置为温度单位“℃”,这样一来,一旦打开开始按钮,单位就会自动显示在坐标轴上。
Form1->Curves1->SetXLabel(\ Form1->Curves1->SetYLabel(\℃]\ Form1->Curves1->SetTitle(12,\垂直面轨迹图\温度模块界外观如下图4-14。
如图4-14温度绘制曲线
下位机采集来的数据是随机的,并且每次采集来的数据个数是不确定的,如
32
西安工程大学本科毕业设计(论文)
果用数组先后存放不同节点不同时间段的温度,那就很难确定数组的长度,如果将数组定义的足够大,那么当采集来的数据较少时,就会浪费大量的内存空间;如果对记录个数估计不足,将数组定义的比较小,那么又无法适应采集来的数据较多的情况。因此,在温度曲线显示这一模块的程序设计中,就需要一个动态分配存储的空间,而链表恰恰是在一种动态的进行存储分配的数据结构,它克服了上述缺点,其特点是在需要时开辟一个节点的存储单元,在不需要的时候释放相应的存储单元,而且插入和删除只需少量的操作就可完成,大大提高了空间利用率和时间效率。C语言标准函数库提供了有关函数,用于实现内存的动态分配和释放,这就是动态数组,它以可根据实际需要制定数组的大小,这样既满足处理需要,又不浪费内存空间,克服了静态数组的缺点。在链表中,每个元素称为结点,每个结点包括两个部分:一部分用于存储用户需要的使用的实际数据,叫做数据域;另一部分用于存储下一个节结点的地址,叫做指针域。链表中的各个元素在内存中可以不连续存放,因此它需要通过每个结点的指针域将若干个结点按照其逻辑顺序连接起来。链表中有一个“头指针变量”,通常用head表示,用于存放地一个节点地址。通过头指针,可以访问第一个结点,通过第一个结点的指针域可以访问第二个结点,直到最后一个结点。链表中的每一个结点都是同一种结构体类型。
任意点击下面的点击“开始”按钮,则系统将会自动绘图,即将温度与时间数据都显示在SimuCurves组件上。
4.5辅助功能设计
在界面设计中,为了能够更加直观,我在里面加入一些几何图形。例如在选择通讯簿旁边放置一个实心圆点,该圆点初始状态为灰色,在开始通讯按钮下,加入“Shape1->Brush->Color=clGreen;”指令,调用它的Color属性,这样一来点击开始通讯按钮,指示灯就会变为绿色;而在就结束通讯按钮下加入“Shape1->Brush->Color=clRed;”指令,依旧是调用它的Color属性,一旦点击结束通讯按钮,指示灯就会变成红色。这也比较符合我们生活中红灯停,绿灯行的观念,让开始与结束区分更鲜明一些。另外,为了美观,我还在上位机添加了波特率显示窗口,放在选择通讯簿的下面。这样可以很容易看出调试串口的波特
33
西安工程大学本科毕业设计(论文)
率。具体应用如下图4-15所示。
图4-15指示灯
要用到几何图形,我首选的组件是Shape组件,因为在它的属性里可以将其变换成不同的几何图形,并且,能够根据个人需要,将其填充不同的颜色。最常使用此组件作为信号灯的显示,并且一般是以实心圆表示,在程序中调用Brush属性的Color子属性就可以动态的改换显示的颜色,相当方便。此组件在组件面板中的位置及外观如图4-16所示。
图4-16 Shape组件外观
该组件常用属性如下表4-6所示。 表4-6 Shape组件属性 常用属性 说明
Name 对象名称,对象摆放完成后给予,是第一个必要设置的属性 Brush 该组件的填充颜色 Shape 该组件的几何形状
而对于波特率的设计,其中用到了一个Edit组件,两个Label组件,这里Label组件的用法前面已经做过详细说明,这里我只对Edit组件进行说明一下。
1) Edit是让用户最方便的输入方式,其主要的工作就是输入文字或显示文字的结果。此组件在组件面板中的位置及外观如图4-17。
图4-17 Edit组件外观
34
西安工程大学本科毕业设计(论文)
2) Edit组件常用属性见下表4-7。 表4-7 Edit组件属性 常用属性 说明
Name 对象名称,对象摆放完成后给予,是第一个必要设置的属性 Font 决定字体、颜色、大小…… Text 决定文本框的内容
使用Text属性,就可以设置Edit组件的内容或读取其他内容了。
我在界面上还放置了一个用于显示日期的控件DataTimePicker组件,这样一来,系统开始运行,打开界面就会显示当时的日期。而这个组件用法简单,将其拉到窗体上默认设置就好,运行后如图4-18所示。
图4-18 日期显示
点击右边的下拉菜单就会显示成如图4-19所示。
图4-19日期显示
此外,在系统的右上角还放置了一个退出按钮,用于整个系统的退出。
35