在线温度监控系统上位机软件设计(7)

2019-01-10 11:40

西安工程大学本科毕业设计(论文)

//BS = StrLen(SendData); //也可以使用此种方式取得字符串长度 //实际的发送动作

WriteFile(hComm,SendData,BS, &lrc,NULL); // 送出数据 }

在接收资料按钮下加入如下程序代码:

void __fastcall TForm1::Button4Click(TObject *Sender) {

String Temp; char inbuff[1024];

DWORD nBytesRead, dwEvent, dwError; COMSTAT cs; //取得状态

ClearCommError(hComm,&dwError,&cs); // 数据是否大于我们所准备的缓冲区 if (cs.cbInQue > sizeof(inbuff)) {

PurgeComm(hComm, PURGE_RXCLEAR); // 清除通信端口数据

return; }

ReadFile(hComm, inbuff,cs.cbInQue,&nBytesRead,NULL); // 接收通信端口的数据

//数组中的字符串结尾处补上零字符 inbuff[cs.cbInQue]= '\\0'; // 将数据显示于Memo1 上 mReceive->Text = inbuff; }

3) 关闭串口。串口是非共享资源,所以打开串口后,一定要关闭串口。关闭串口函数的原型是BOOL CloseHandle(HANDLE hObject);其中hObject参数为CreatFile()返回的端口句柄。返回值为非0时,表示调用成功。双击结束通讯按钮,为其加入如下程序代码:

26

西安工程大学本科毕业设计(论文)

void __fastcall TForm1::Button2Click(TObject *Sender) {

if (hComm!=INVALID_HANDLE_VALUE) CloseHandle(hComm); exit(EXIT_SUCCESS); }

4) 另外还要声明文件句柄变量,在单元文件声明部分添加如下一条语句: HANDLE hComm;

此模块界面的具体设计:串口用于接收温度数据,因此,串口调通至关重要。该模块用到的组件主要有一个RadioGroup组件,两个Label组件,四个Button组件,两个Memo组件。 调节串口界面如下图4—7所示。

图 4—7串行模块界面

台式计算机一般有两个串口,而选择通讯簿用于选择用哪个串口。点击开始通讯按钮,则系统开始接收下位机传来的数据。点击结束通讯按钮,则停止接收数据。

由于我做的只是上位机,为了调试方便,我做了自发自收的设计,即一个Memo用于显示输入的数据,而另一个则用于显示接收的数据。这样一来很容易

27

西安工程大学本科毕业设计(论文)

看出串口是否调试好,如果串口调通,那么传送的资料将会显示在接收的资料栏里。但要注意的是,如果输入一次内容,但连续按两次发送键,再按一次接收键,则会在接收资料里显示两遍接收到的内容,即出现如图4-8所示情况。

图4-8串口调试

4.3 数据表设计

数据表是数据的集合,具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序共享。数据库存放数据是按数据所提供的数据模式存放的,具有集成与共享的的特点。

在本次毕设中,为了使数据观察起来更方便,我建立了数据表,数据表主要是用于存放通过RS-232串口接收来的数据。

数据成组出现,每组有三个数据,分别为温度、时间和结点。接收进来后分别将温度和时间数据显示到数据表上的时间和温度栏。以下是数据表的建立方法。

首先在开始菜单中,C++Builder6.0的下拉菜单下,打开Database,然后通过菜单命令File|new|Table,这是则会出现Creat Table对话框,点击OK,将会出现Creat Paradox7 Table:(Untiled)对话框,此对话框如图4-9所示,在该对话框的右上角有Table properties选项栏,在Table properties的下拉菜单中选择中Secondary Indexes,如此一来,就可以在Field roster中创建满足自己所需要的索引。然后是保存过程,保存文件的名称应该是头文件为“.db”的,这一点很重要。

28

西安工程大学本科毕业设计(论文)

图4-9 Creat Paradox7 Table

建立完后,还需建立一个别名,这样才能使窗体上的感知数据组件连接到数据。在开始中打开BDE Administrator,通过菜单命令Object|New打开New Database Alias对话框,在此对话框中的Database Driver Name项中选择MSACCESS,将发现在Database窗口中增加了一个新节点,修改别名为TemperatureData,选中该名称,单击右键,选Apply命令,在出现的对话框中选OK,便完成了这项工作。创建后的对话框如图4-10所示。

图4-10建立别名

最后还需要通过能够感知数据的DBGrid组件才能连接到它。在C++Builder6.0的窗体中,添加一个TDBGrid组件、一个数据源组件TDataSource、一个Table、和一个StatusBar组件。名称取默认值(Table1、StatusBar1)。将Table1的DatabaseName属性设置为BCDEMOS,TableName属性设置为BIOLIFE.DB,Active属性设置为true,DataSource1的DataSet属性设置为Table1,

29

西安工程大学本科毕业设计(论文)

DBGrid1的Align属性设置为alBottom,DataSource属性设置为DataSource1.这样就可以连接到此数据库了。数据库存储的温度数据如下图4-11所示。

图4-11 数据表显示

4.4 上位机温度曲线设计

在温度显示模块中,所用到的组件并不多。因为要求将采集来的温度和时间显示在坐标曲线上,时间在X轴上,温度在Y轴上,因此要用到C++builder中的SimuCurves组件,并且还需要一个Button组件。因为是多点温度度采集,所以设置了六个节点,每个节点下面都配有指示灯和打开按钮,打开哪个按钮,哪个指示灯就亮,且变为绿色,而显示的温度曲线也就是该节点的温度曲线。不同节点的温度曲线颜色也不同,在节点下面用Lable组件将每个节点的曲线颜色进行标注,这样就可以通过颜色来辨别是哪个节点的温度曲线。下面对组件分别进行介绍。

组件介绍:

Button组件是使用率最高的组件,用于提供一个给系统用户操作用的按钮,在组件面板中的位置及外观如图4—12所示。

图4-12 Button组件外观

而其常用属性设置如表4-1所示。

30


在线温度监控系统上位机软件设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2012年钳工技能比武理论题库

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: