丁鹏飞
摘要:为观察和分析压力计在测量时间段温度和压力的变化情况,需要将测量的数据以图形方式进行显示。针对以往的压力计显示系统不具备报表生成功能的缺点,设计了基于C++ Builder的具有生成word报表功能的压力计测量数据显示系统。该数据显示系统通过串口读取压力计的温度、压力数据,以图形的方式显示温度、压力的变化曲线,并生成生成便于保存和浏览的测量报告。
关键词:温度;压力;word报表;图形方式;显示
中图分类号:TP317 文献标识码:A 文章编号:1009-3044(2016)19-0060-02
Design and Implementation of Pressure Gauge Measured Data Display System
DING Peng-fei
(School of Electronic Engineering, Xian University of Posts and Telecommunications, Xian 710121, China)
Abstract: In order to observe and analyze the temperature and pressure changes of pressure gauge in the measurement periods, the measure data must be displayed by graph mode. According to the others pressure gauge display system does not have the report function, design the pressure gauge data display system with the function of generating Word reports based on C++ Builder. This display system read temperature data and pressure data by serial port, and display the changed cure of temperature and pressure, and generate the measure report for convenient to save and browse.
Key words:temperature;pressure;word report;graph mode; display
在智能仪器仪表中,测量数据的显示是仪器的重要功能之一。文献[1]对液晶屏实现数据的动态显示进行了探讨;文献[2-4]对Lab view实现数据的动态显示进行了研究。智能仪器仪表以何种方式呈现其测量的数据,将影响仪器仪表的灵活性和方便性。在工业控制领域,对于即时显示的数据信息通常以数码管、液晶屏等方式进行显示。然而,像井下压力计这样的仪器需要长时间工作记录井下的压力和温度,在仪器结束工作时需要读取并显示测量的温度和压力信息。对于这种大数据量的仪器,数码管、液晶屏等显示方式很难满足测量波形的显示要求,而基于PC机软件的处理、显示模式无疑是最佳的选择。基于压力计数据量大的特点,设计了压力计数据显示系统,满足了压力计测量数据的图形化显示和生成测量数据报告的要求。
1 通信的设计与实现
在很多工业控制中都会用到串口通信,无论是RS232还是RS485都是通过串口来进行数据传输的。串口通信方式在工业控制中具有广泛的应用[5-6],因此,系统的通信方式采用串口模式。串口的操作通常采用Windows API或串口控件实现。Windows API实现串口的方法较为复杂,故采用串口控件的实现串口通信。微软提供的串口控件Mscomm具有文件驱动与查询方式两种通信方法[7],操作过程相对简单。由于Victor串口VCL控件[8]针对C++Builder设计,因此,采用该控件实现串口功能。在c++ Builder开发平台下使用Victor串口控件,必须先安装该控件,其安 装方式是:在Project->Options->Packages->Add下,选择VCL控件文件夹的 yb_base_c6.bpl 和 yb_comm_c6.bpl, 然后按“打开”按钮,实现控件的安装。为编译时能正确连接VCL控件,必须将VCL控件的目录加入到C++ Builder,其添加方式为:在Project->Options->Directories/Conditionals下,点击Include Path右面的“…”按钮,添加包含*.h 文件的文件夹,点击Library Path 右面的“…”按钮,添加包含 *.lib 文件的文件夹。经过上述步骤后,添加到C++ Builder下的Victor串口控件就可以正常使用了。使用该控件向串口写数据的格式为Comm1->Write(WaitBufLook,nBytes),WaitBufLook为写入出口的数据数组,nBytes为写入串口的数据长度;读取串口数据为:int n = Comm1->Read(Buf,8192),n为读取数据的实际长度,Buf用于存储读取的数据,8192为读取的最大长度。
2 测量数据的显示
测量人员通常希望将采集的数据以图表的方式直观并实时地显示出来,以便直接观察出测量结果[9]。为便于观察测量数据,本系统以表格形式显示温度、压力、时间等信息,通过图形化的方式显示温度、压力的变化曲线。
在较多数据需要查看时,表格进行数据的显示方式具有浏览方便的特点。在多数编程软件中,将数据以表格方式显示难以实现。C++ Builder在工具栏的Additional标签页提供了StringGrid控件用于表格
形式的数据显示。StringGrid控件通过ColCount和RowCount属性设置表格的列数及行数。通过向StringGrid1->Cells[i][j]赋值实现温度、压力、时间等信息写入数据表格,测量数据显示如图1所示。
通过数据表格的形式能方便查看不同时间点的温度、压力、时间等信息,然而,通过测量数据无法浏览温度、压力的变化趋势,无法直观查找温度或压力的异常点。因此,实现测量数据的图形化显示对于数据的快速分析具有非常重要的意义和价值。
C++ Builder在工具栏的Additional标签页提供的Image控件对于曲线的显示具有较好的灵活性。绘图区域的长宽分别通过Image控件的Width、Height属性设置,而绘制曲线的颜色、线宽、线条类型通过Image->Canvase->Pen的Color、Width和Style属性进行设置。绘图区域的文字显示通过Image1->Canvas的TextOutA()函数实现,如Image1->Canvas->TextOutA(740,142+10,AnsiString("温度"))。通过Image控件Image1->Canvas的MoveTo()函数和LineTo()函数实现绘图起始点的移动和连线。本数据显示系统利用红色曲线绘制温度,蓝色曲线绘制压力,绘制的一次测量曲线图如图2所示。
3 word数据报表生成
对于测量的数据结果,往往需要测试人员将测试结果生成word文档,以便于测试报告的生成、存储和共享。C++ Builder提供了word报告生成的快捷方式,通过WordApplication控件和WordDocument控件可快速实现word报表的生成。利用VarApp=CreateOleObject("Word.Application")函数实现word软件对象的创建;CreateOleObject("Word.Basic")函数实现word实例;文档的添加则通过VarApp.OlePropertyGet("Documents").OleFunction("Add")语句实现。 Word文档的字体、字体大小则通过Font的相关属性设置,如设置字体为黑体,实现语句为:
Vselect.OlePropertyGet("Font").OlePropertySet("Name","黑体"),字体大小的设置为Vselect.OlePropertyGet("Font").OlePropertySet("Size",28);输出文字通过TypeText设置,如Vselect.OleFunction("TypeText","压力测试报告")。
为便于测量人员直观了解测量数据的整体变化情况,在测试报告插入测量数据的曲线图显得尤为必要。为实现测试报告中加入测量数据的曲线图,采用将绘制的曲线图保存为图片,然后将图片插入word文档。实现显示曲线图存储的方法是利用Image1->Picture的存储文件方法,即Image1->Picture->SaveToFile(CurrentFile),CurrentFile为存储图片的文件名。将生成的图片插入word文档方法是获取插入对象后添加图片,即
Vshape=Vselect.OlePropertyGet("InlineShapes")和Vshape.OleFunction("AddPicture",CurrentFile)函数实现。word文档插入到测量曲线的效果图如图3所示。
4 结束语
本文所设计的压力计测量数据显示系统以C++ Builder为开发平台,采用C++作为开发语言,实现了压力计温度、压力及时间信息的读取;利用C++Builder的StringGrid、Image、WordApplication和WordDocument等控件,实现了测量数据的表格化显示及测量数据的图形化显示;实现了测试数据及测量波形的word报表生成。经压力计测量数据的多次验证,压力计测量数据显示系统操作简单,显示方式直观,测量数据报告的生成功能大大减轻了测量人员工作量,提高了工作效率,满足了用户的需求。
压力计测量数据显示系统实现仪器数据的读取、显示及报告生成的方法简单,满足了压力计对测量数据表格化显示、数据波形生成及测量报告生成的要求,具有较高的实用价值和广泛的应用前景。该系统的数据显示法及报告生成方法,对其他智能仪器显示系统的开发具有重要的参考价值。
参考文献:
[1] 曾政菻, 刘学满. 基于FPGA图形字符加速的液晶显示模块[J]. 液晶与显示, 2012, 27(3):352-358.
[2] 刘闯. 基于LabVIEW的报表生成[J]. 测控技术, 2010,29(5):102-103.
[3] 闫群民. 基于LabVIEW的超文本报表生成方法[J]. 自动化仪表, 2010, 31(7): 29-31.
[4] 张佩, 江颖, 许伟明,等. LabVIEW中综合报表生成技术的开发[J]. 微计算机信息, 2007, 23(2-1): 161-163.
[5] 唐普英, 谢启. 基于LabVIEW的多串口通信及数据存储的研究与实现[J]. 实验室研究与探索, 2015, 34(8): 93-97.
[6] 崔牧凡. 基于LabVIEW和FPGA的串口通信系统设计与实现[J]. 计算机应用, 2012, 32(s2): 82-84
[7] 张瑞卿, 胡爱军, 张超. 基于VC++的PC机与PLC串口通讯的实现[J]. 制造技术与机床, 2010(9): 58-61.
[8] Victor串口VCL控件[EB/OL].http://www.cppfans.com/.
[9] 唐磊, 孟祥印, 唐波. 气动量仪自动数据采集及处理系统的设计与实现[J]. 机床与液压, 2014, 42(14): 107-109.