新闻中心

EEPW首页>测试测量>设计应用> 建筑外窗保温性能检测装置测控系统的设计与实现

建筑外窗保温性能检测装置测控系统的设计与实现

作者: 时间:2010-01-08 来源:网络 收藏
在启动通信线程之前,必须为线程的主程序编写一个全局函数。这个函数应该返回一个UINT,它应该以一个32位值(声明为IPVOID)作为参数。在启动线程的时候,可以使用这个参数来传递任何东西,在AfxBeginThread函数中传递的是this->GetDocument()(文档类的指针),这样就可以在辅助线程中使用文档类的数据。在辅助线程中,要采集下位机数据,然后挂起线程,等待定时器OnTimer函数恢复线程。

3.2串口通信

辅助线程的主要工作是PC通过串口采集下位机数据,PC机的Windows操作系统不提倡应用程序直接控制硬件,而是通过Windows操作系统提供的设备驱动程序来进行数据传递。基于上述特点,结合本系统多串口通信的特点,使用Visual C++6.0集成开发环境下封装好的串口类CSerialPort来设计串口通信。本系统使用两个串口,串口3用于与功率计之间的通信,串口4用于与巡检仪及温控仪之间的通信。

从机通信协议以巡检仪为例简述如下:波特率设置为2 400 bit/s,帧格式为1个起始位,8个数据位,1个停止位。巡检仪采用ASCII码传输,其下传命令帧格式如表1所示,仪表返回数据帧如图4所示。每个通道的测量值为16位二进制,最高位为测量值的符号标志位,1为负,0为正。接收到返回数据后,在程序中按照协议对其进行相应的处理。

使用CSerialPort类实现双串口通信,先要在对象所有者窗口类头文件(.H)中声明两个CSerialPort的对象,然后调用该类的InitPort函数(主要完成串口号选择、波特率设置等串口的初始化设置),并启动监视串口的工作线程。之后串口接到数据后,会以消息的形式发送到串口的所有者窗口中,只要在该窗口中加入对这些消息的响应即可。

数据发送可以使用CSerialPort::WriteToPort(char*string)函数,鉴于本系统中的通信协议都采用BYTE数据类型进行传送,故把该函数修改为Serial-Port::WriteToPort(BYTE bWriteBuffer[],int nWfite-BufferSize),bWriteBuffer[]为要发送的数据,nWfite-BufferSize为要发送的字节个数。

数据接收需要添加消息响应函数,首先要在对象所有者窗口类头文件(.H)中加入串口接收的响应函数声明。由于没有自动的消息映射机制,必须在消息映射机制的标志处手工添加:



然后在该窗口类的CPP文件中添加消息映射:

ON_MESSAGE(WM_COMM_RXCHAR,OnCommunication)

最后加入消息处理函数OnCommunication,在其中进行相应的接收数据处理即可。

3.3其他部分

系统除了基本测试功能的设计外,还增加了数据存储、历史数据的查询、检测报告的打印等功能。

3.3.1数据库

ODBC(开放式数据库连接)为不同的数据库资源提供一个标准接口,是目前Windows应用程序中应用最广泛的数据接口,已经成为工业标准。为了方便ODBC使用,MFC针对ODBC原始的简单的函数型API,建立了一些抽象类:CDatabase、CRecordset和CRecordView,分别用来支持数据库、记录集和记录视图。MFC的ODBC类与数据库的关系如图5所示。



本系统数据库中建立了实时数据、历史数据和检测结果3张表,故相应用到3个CRecordset的派生类,通过这些派生类的对象调用类中的成员函数,即可进行数据的添加、编辑、删除、查询等操作。



评论


相关推荐

技术专区

关闭