用VB制作一个简单的压力值采集显示的上位机制作总结.docx

上传人:b****8 文档编号:24060367 上传时间:2023-05-23 格式:DOCX 页数:24 大小:458.94KB
下载 相关 举报
用VB制作一个简单的压力值采集显示的上位机制作总结.docx_第1页
第1页 / 共24页
用VB制作一个简单的压力值采集显示的上位机制作总结.docx_第2页
第2页 / 共24页
用VB制作一个简单的压力值采集显示的上位机制作总结.docx_第3页
第3页 / 共24页
用VB制作一个简单的压力值采集显示的上位机制作总结.docx_第4页
第4页 / 共24页
用VB制作一个简单的压力值采集显示的上位机制作总结.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

用VB制作一个简单的压力值采集显示的上位机制作总结.docx

《用VB制作一个简单的压力值采集显示的上位机制作总结.docx》由会员分享,可在线阅读,更多相关《用VB制作一个简单的压力值采集显示的上位机制作总结.docx(24页珍藏版)》请在冰豆网上搜索。

用VB制作一个简单的压力值采集显示的上位机制作总结.docx

用VB制作一个简单的压力值采集显示的上位机制作总结

GCCX上位机制作总结

本系统的上位机制作主要采用MicrosoftWordVisualBasic6.0编写。

主要实现将采集和传输的数据进行接收、处理和储存的功能。

一、基本思路如下所示:

开始

从串口接收数据

数据实时显示

将数据存储到数据

库中,并实现查询

结束

由上图可以知道,本程序的三个要点分别是:

1、数据的接收部分,主要指将传到串口的数据进行接收,这是后面步骤的前提与基础。

2、数据的处理部分,将接收到的数据进行实时处理与绘制曲线图,并对超过警戒值的数据给予提示。

3、数据的储存部分,指对接收处理过的数据按照一定的格式存储到access2007数据库中,以便以后查询,也为分析列车运行规律以及螺丝生产厂家提供真实可贵的资料。

总体思路是先分别实现三个部分对应的功能,再将三个部分有机联合起来形成功能完善的上位机系统。

二、分别实现三个部分的制作过程及成果

第一部分,从串口接收数据。

主要用到的是MSComn控件(

)实现串口通信。

其测试设计界面如下图所示:

其中MSComn控件的属性设置为:

程序如下:

测试便可实时显示串口传输的数据。

即实现了从串口接收数据。

第二部分,数据的实时显示部分。

这个部分的测试与制作的思路是采用随机函数产生数据并与时间控件(

)配合来模拟所收集的数据,对其进行实时绘图。

测试设计界面:

程序如下:

OptionExplicit

DimDataFromComyAsInteger'从串口读过来的实时值y坐标

DimDataFromComLastyAsInteger'上次的串口值y坐标

DimTimeCountAsInteger

DimiAsInteger

PrivateSubCommand1_Click()’返回按钮

UnloadMe

EndSub

PrivateSubForm_Load()

PicScalePic'调整图像框的坐标系

zuobiaoxiPic'画出坐标系

PicMidleLinePic'在图像框中画一条中线

EndSub

PrivateSubPicScale(picXAsPictureBox)'调整图像框的坐标系

picX.Scale(0,picX.ScaleHeight)-(picX.ScaleWidth,0)

EndSub

PrivateSubPicMidleLine(picXAsPictureBox)

'在图像框中画一条中线

picX.Line(0,1000)-(picX.ScaleWidth,1000),vbGreen

'画出中线

EndSub

PrivateSubzuobiaoxi(picXAsPictureBox)'表示坐标系

Dimi%

picX.Line(0,0)-(picX.ScaleWidth,0),vbWhite'x坐标轴表示

picX.Line(0,0)-(0,-picX.ScaleHeight),vbWhite

'y坐标轴表示

Fori=0TopicX.ScaleWidthStep1000'X,y轴坐标坐标刻度显示picX.Line(0,i)-(100,i)

picX.Line(i,0)-(i,100)

Nexti

EndSub

PrivateSubDrawRealLine(picXAsPictureBox,DataFromComyAsInteger,DataFromComLastyAsInteger,TimeCountAsInteger)

IfTimeCount-1>0Then

picX.Line(TimeCount-100,DataFromComLasty)-(TimeCount,DataFromComy),vbWhite

EndIf

EndSub

PrivateSubTimer1_Timer()

DataFromComLasty=DataFromComy

Randomize

DataFromComy=Int((2000-0+1)*Rnd+0)'随机数的产生

TimeCount=TimeCount+100

IfTimeCount-100>=Pic.WidthThen

TimeCount=0

Pic.Cls

PicMidleLinePic

zuobiaoxiPic

EndIf

DrawRealLinePic,DataFromComy,DataFromComLasty,TimeCount'画出实时的曲线

EndSub

测试结果如下:

至此,由数据的实时绘图部分的测试完成。

第三部分,数据库的操作,数据库采用access2007数据库。

并采用VisualBasic的ADOData控件(

)进行连接和SQL语言实现数据库的添加,删除和查阅等基本功能。

(本实验以姓名、性别、年龄的操作为例)

测试设计界面:

创建数据库mydb如下:

首先是数据库的连接:

利用ADO控件生成字符串连接数据库的步骤为:

1)右击data控件,选择ADODC属性

 

2)点击生成,选择数据库类型

3)填写数据源

4)测试连接

其次是数据库操作:

1)添加:

DimrsAsNewADODB.Recordset

DimcnAsNewADODB.Connection

PrivateSubOpenConn()

Setcn=NewADODB.Connection

Setrs=NewADODB.Recordset

cn.CursorLocation=adUseClient

cn.Open

"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:

\Users\Administrator\Desktop\GCCX\数据库\mydb.accdb;PersistSecurityInfo=False"

EndSub

PrivateSubCloseConn()

Ifrs.State<>sckclosedThenrs.Close

Setrs=Nothing

Ifcn.State<>sckclosedThencn.Close

Setcn=Nothing

EndSub

PrivateSubCommand1_Click()

CallOpenConn

rs.Open"select姓名,性别,年龄from表1",cn,adOpenStatic,adLockPessimistic

rs.AddNew

rs.Fields("姓名")=Text1.Text

rs.Fields("性别")=Text2.Text

rs.Fields("年龄")=Text3.Text

rs.Update

CallCloseConn

MsgBox"添加成功!

",,"温馨提示"

Text1.Text=""

Text2.Text=""

Text3.Text=""

EndSub

PrivateSubCommand2_Click()

UnloadMe

EndSub

PrivateSubCommand3_Click()

UnloadMe

Form3.Show

EndSub

PrivateSubCommand4_Click()

Form5.Show

UnloadMe

EndSub

结果:

2)删除:

PrivatecnAsNewADODB.Connection

DimrsAsNewADODB.Recordset

PrivateSubOpenConn()

Setcn=NewADODB.Connection

Setrs=NewADODB.Recordset

cn.CursorLocation=adUseClient

cn.Open

"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:

\Users\Administrator\Desktop\GCCX\数据库\mydb.accdb;PersistSecurityInfo=False"

EndSub

 

PrivateSubCloseConn()

Ifrs.State<>sckclosedThenrs.Close

Setrs=Nothing

Ifcn.State<>sckclosedThencn.Close

Setcn=Nothing

EndSub

PrivateSubCommand1_Click()

CallOpenConn

rs.Open"selectIDfrom表1WhereID="&Text1.Text,cn,3,3

rs.Delete

rs.Update

rs.Close

Setrs=Nothing

MsgBox"删除成功",,"Successful!

"

cn.Close

EndSub

PrivateSubCommand2_Click()

Form3.Show

UnloadMe

EndSub

结果:

3)查看:

PrivatecnAsNewADODB.Connection

DimrsAsNewADODB.Recordset

PrivateSubOpenConn()

Setcn=NewADODB.Connection

Setrs=NewADODB.Recordset

cn.CursorLocation=adUseClient

cn.Open"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:

\Users\Administrator\Desktop\GCCX\数据库\mydb.accdb;PersistSecurityInfo=False"

EndSub

PrivateSubCloseConn()

Ifrs.State<>sckclosedThenrs.Close

Setrs=Nothing

Ifcn.State<>sckclosedThencn.Close

Setcn=Nothing

EndSub

PrivateSubCommand1_Click()

CallOpenConn

rs.Open"selectID,姓名,性别,年龄from表1WhereID="&Text1.Text,cn,adOpenStatic,adLockPessimistic

Text2.Text=rs.Fields("姓名")

Text3.Text=rs.Fields("性别")

Text4.Text=rs.Fields("年龄")

rs.Update

CallCloseConn

EndSub

PrivateSubCommand2_Click()

Form1.Show

UnloadMe

EndSub

结果:

至此,上位机的三个部分的关键问题已经解决。

三、上位机各部分的有机连接

为了实现上位机接收、处理、储存数据的功能,需要将上述三个部分结合为一个整体,但由于数据采集和无线传输部分还未完全贯通,第一部分的串口通信无法进行测试。

于是仅实现了数据库操作与实时绘图的结合。

其包括:

①随机函数产生数据并与时间控件结合代替串口通信部分。

②数据实时绘图和过低值警报。

③数据实时存储。

④原始记录查询。

实验设计界面:

程序设计:

OptionExplicit

DimkAsInteger

DimDataFromComyAsInteger'从串口读过来的实时值y坐标

DimDataFromComLastyAsInteger'上次的串口值y坐标

DimTimeCountAsInteger

DimiAsInteger

DimrsAsNewADODB.Recordset

DimcnAsNewADODB.Connection

PrivateSubOpenConn()

Setcn=NewADODB.Connection

Setrs=NewADODB.Recordset

cn.CursorLocation=adUseClient

cn.Open"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:

\Users\Administrator\Desktop\GCCX\数据库\mydbnew.accdb;PersistSecurityInfo=False"

EndSub

PrivateSubCloseConn()

rs.Close

cn.Close

Setrs=Nothing

Setcn=Nothing

EndSub

PrivateSubForm_Load()

PicScalePic'调整图像框的坐标系

PicMidleLinePic

zuobiaoxiPic

EndSub

PrivateSubPicScale(picXAsPictureBox)

'调整图像框的坐标系

picX.Scale(0,picX.ScaleHeight)-(picX.ScaleWidth,0)

EndSub

PrivateSubPicMidleLine(picXAsPictureBox)

'在图像框中画一条中线

picX.Line(0,1500)-(picX.ScaleWidth,1500),vbRed

'画出中线

EndSub

PrivateSubzuobiaoxi(picXAsPictureBox)'表示坐标系

Dimi%

picX.Line(0,0)-(picX.ScaleWidth,0)'x坐标轴表示

picX.Line(0,0)-(0,-picX.ScaleHeight)'y坐标轴表示

Fori=0TopicX.ScaleWidthStep1000

'X,y轴坐标坐标刻度显示

picX.Line(0,i)-(100,i)

picX.Line(i,0)-(i,100)

Nexti

EndSub

PrivateSubDrawRealLine(picXAsPictureBox,DataFromComyAsInteger,DataFromComLastyAsInteger,TimeCountAsInteger)

IfTimeCount-1>0Then

picX.Line(TimeCount-100,DataFromComLasty)-(TimeCount,DataFromComy),vbGreen

EndIf

EndSub

PrivateSubTimer1_Timer()

Ifk=1Then

DataFromComLasty=DataFromComy

Randomize

DataFromComy=Int((3000-0+1)*Rnd+0)

'随机数的产生

IfDataFromComy<1500Then

MsgBox"螺丝压力值偏低!

",48,"警告"

EndIf

TimeCount=TimeCount+100

'向数据库实时存放数据

CallOpenConn

rs.Open"select时间,力from表1",cn,adOpenStatic,adLockPessimistic

rs.AddNew

rs.Fields("时间")=TimeCount

rs.Fields("力")=DataFromComy

rs.Update

CallCloseConn

IfTimeCount-100>=Pic.WidthThen

TimeCount=0

Pic.Cls

PicMidleLinePic

zuobiaoxiPic

EndIf

DrawRealLinePic,DataFromComy,DataFromComLasty,TimeCount'画出实时的曲线

EndIf

EndSub

PrivateSubCommand1_Click()

Command3.Enabled=False

k=1

EndSub

PrivateSubCommand2_Click()

Command3.Enabled=True

k=0

EndSub

PrivateSubCommand3_Click()

Form2.Show

UnloadMe

EndSub

PrivateSubCommand4_Click()

UnloadMe

EndSub

实验结果:

查询功能:

DimrsAsNewADODB.Recordset

DimcnAsNewADODB.Connection

PrivateSubOpenConn()

Setcn=NewADODB.Connection

Setrs=NewADODB.Recordset

cn.CursorLocation=adUseClient

cn.Open"Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:

\Users\Administrator\Desktop\GCCX\数据库\mydbnew.accdb;PersistSecurityInfo=False"

EndSub

PrivateSubCloseConn()

rs.Close

cn.Close

Setrs=Nothing

Setcn=Nothing

EndSub

PrivateSubCommand1_Click()

CallOpenConn

rs.Open"select时间,力from表1Where时间="&Text1.Text,cn,adOpenStatic,adLockPessimistic

Ifrs.EOFAndrs.BOFThen

MsgBox"您所查询的时间没有记录",,"温馨提示"

Text1.Text=""

Text1.SetFocus

Else

Text2.Text=rs.Fields("力")

rs.Update

EndIf

CallCloseConn

EndSub

PrivateSubCommand2_Click()

Text1.Text=""

Text2.Text=""

Text1.SetFocus

EndSub

PrivateSubCommand3_Click()

Form1.Show

UnloadMe

EndSub

结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1