VB6编程步骤全部文档格式.docx
- 文档编号:21844349
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:18
- 大小:302.67KB
VB6编程步骤全部文档格式.docx
《VB6编程步骤全部文档格式.docx》由会员分享,可在线阅读,更多相关《VB6编程步骤全部文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
EndSub
在subMain中调用Init过程
Submain()
Init'
初始化,读取原设置参数
frmMain.ShowvbModal'
启动主窗体,有模式窗体
(3)设置frmConfig窗体的界面。
如图所示
上述四个文本框的名字,从上到下依次为:
txtTempH,txtTempL,txtRHH,txtRHL
双击该窗体空白处,在Form_Load事件中输入代码,如下
PrivateSubForm_Load()'
调入旧参数并显示在界面上
Me.txtRHH=mAlarm.RHH
Me.txtRHL=mAlarm.RHL
Me.txtTempH=mAlarm.TH
Me.txtTempL=mAlarm.TL
双击该窗体上的“确定”按钮,代码如下:
PrivateSubcmdOK_Click()'
把界面上输入的新参数保存在变量中
mAlarm.TH=Me.txtTempH
mAlarm.TL=Me.txtTempL
mAlarm.RHH=Me.txtRHH
mAlarm.RHL=Me.txtRHL
变量保存在文件中
OpensAppPath&
ForRandomAs#1Len=Len(mAlarm)
Put#1,1,mAlarm
Close#1
UnloadMe
6.下位机数据的模拟采集
(1)定义变量存放下位机的数据
PublicTypemData'
下位机数据,用于保存到磁盘文件中
T(1To2)AsSingle'
温度
RH(1To2)AsSingle'
湿度
PublicmD(1To4)AsmData'
用自定义类型mData定义下位机数据变量
(2)在frmMain窗体上放置一个定时器控件,命名为:
tmrCaiji,其Ennabled属性设为True,并设Interval属性为1000,双击定时器,完成代码如下所示:
PrivateSubtmrCaiji_Timer()'
采集定时器,模拟产生下位机的数据
Fori=1To4
mD(i).T
(1)=30+Rnd*20:
mD(i).T
(2)=50+Rnd*20'
随机数Rnd在0~1之间
mD(i).RH
(1)=60+Rnd*20:
mD(i).RH
(2)=30+Rnd*20
Nexti
7.下位机数据更新到界面上,并作报警处理
放置一个定时器,命名为:
tmrUpdate,其Ennabled属性设为True,并设Interval属性为1000,双击定时器,完成代码如下所示
PrivateSubtmrUpdate_Timer()'
更新界面定时器
Fori=1To4'
显示温度,并格式化为显示1位小数
Me.lblTemp1(i)=Format(mD(i).T
(1),"
#0.0"
):
Me.lblTemp2(i)=Format(mD(i).T
(2),"
)Rnd
Me.lblRH1(i)=Format(mD(i).RH
(1),"
Me.lblRH2(i)=Format(mD(i).RH
(2),"
)
Nexti
IfmD(i).T
(1)>
=mAlarm.THThen'
温度高于报警值上限
Me.lblTemp1(i).BackColor=vbRed'
背景变红
ElseIfmD(i).T
(1)<
mAlarm.TLThen'
温度低于报警值下限
Me.lblTemp1(i).BackColor=vbCyan'
背景变青色
Else'
温度正常
Me.lblTemp1(i).BackColor=vbGreen'
背景变绿色
EndIf
8.绘制曲线
(1)放置按钮“开始绘图”,命名为cmdDraw,输入下列代码:
PrivateSubcmdDraw_Click()
Me.tmrDraw.Enabled=NotMe.tmrDraw.Enabled'
每单击一次,切换一次定时器启动/停止命令
IfMe.tmrDraw.Enabled=TrueThenMe.cmdDraw.Caption="
暂停绘图"
ElseMe.cmdDraw.Caption="
开始绘图"
(2)在frmMain窗体上放置图片框控件picturebox,设置背景为深蓝,命名为picD,在图片框左侧和下侧放置lablel控件,作为坐标刻度指示。
,界面如图所示
(3)在frmMain窗体代码窗口创建一个初始化坐标系的过程,如下所示
SubInitDraw(XminAsSingle,XmaxAsSingle,YminAsSingle,YmaxAsSingle)'
自变量x,函数值y,min-max:
范围
Me.picD.AutoRedraw=True'
自动重绘
Me.picD.Cls'
清屏
Me.picD.Scale(Xmin,Ymax)-(Xmax,Ymin)'
定义坐标系(左上角x,左上角y)-(右下角x,右下角y)
Me.picD.DrawWidth=1'
画线宽度为1
画垂直网格
Fori=1To6:
Me.picD.Line((Xmax-Xmin)/6*i+Xmin,Ymin)-((Xmax-Xmin)/6*i+Xmin,Ymax),vbWhite:
画水平网格
Fori=1To10:
Me.picD.Line(Xmin,(Ymax-Ymin)/10*i+Ymin)-(Xmax,(Ymax-Ymin)/10*i+Ymin),vbWhite:
Me.picD.CurrentX=Xmin:
Me.picD.CurrentY=Ymin'
光标回原点
Me.picD.DrawWidth=2'
画线宽度为2
(4)放置一个定时器,命名为:
tmrDraw,其Ennabled属性设为false,并设Interval属性为100,双击定时器,完成代码如下所示
PrivateSubtmrDraw_Timer()'
绘制曲线定时器
StaticTAsInteger'
定义静态变量
T=T+1'
累加
IfT=60Then'
到60次
T=0'
回到0
CallInitDraw(0,60,0,100)重新初始化坐标系
EndIf
Me.picD.Line-(T,mD
(1).T
(1)),vbYellow'
画线,由上次光标位置画到指定坐标,光标也更新
(5)双击frmMain窗体,在其Load事件中调用初始化坐标系的过程,如下:
PrivateSubForm_Load()
CallInitDraw(0,60,0,100)'
初始化坐标系
9.数据记录
(1)在frmMain窗体上放置两个按钮“开始记录”和停止记录,命名为cmdStart和cmdStop,放置一个定时器命名为tmrRecord,其定时间隔设为1000
(2)在程序所在文件夹建一个Excel文件,另存为97-2003兼容模式,名为“数据模板.xls”如图所示:
(3)在frmMain代码窗口创建如下过程
SubOpenExcel()
DimsFileNameAsString'
文件名
sFileName=sAppPath&
\"
&
Month(Now)&
-"
Day(Now)&
Hour(Time)&
Minute(Time)&
Second(Time)'
“月-日-时-分-秒”作文件名
CallGetExcel'
获取可用的Excel文件
sXLSName=sFileName&
.xls"
:
sModelName=sAppPath&
\数据模板.xls"
IfDir(sXLSName)<
>
"
ThenKillsXLSName'
如果欲保存的Excel文件已存在,则先删除
SetxlApp=GetObject(sModelName)'
打开模扳文件
xlApp.Parent.Windows
(1).Visible=True'
使父窗体可见
SetxlSheet=xlApp.Application.Worksheets
(1)'
当前工作簿的第一页
(4)为“开始记录”按钮添加代码:
PrivateSubcmdStart_Click()
OpenExcel'
打开Excel文件
xlSheet.Cells(1,5)=Month(Now)&
月"
日采集的数据"
xlSheet.Cells(2,1)="
序号"
xlSheet.Cells(2,2)="
时间"
Fori=1To8:
xlSheet.Cells(2,i+2)=i&
#温度"
xlSheet.Cells(2,i+2+8)=i&
#湿度"
Me.tmrRecord.Enabled=True'
开始记录
Me.cmdStop.Enabled=True:
Me.cmdStart.Enabled=False'
使能“停止记录”按钮,禁止“开始记录”按钮
(5)为“停止记录”按钮添加代码:
PrivateSubcmdStop_Click()
Me.tmrRecord.Enabled=False'
停止记录数据
xlSheet.SaveAssXLSName'
Excel表格另存
xlApp.Application.Quit'
退出Excel
Me.cmdExit.Enabled=True'
保存完Excel后才能退出系统
Me.cmdStart.Enabled=True:
Me.cmdStop.Enabled=False'
使能“开始记录”按钮,禁止“停止记录”按钮
(6)为定时器tmrRecord按钮添加代码:
PrivateSubtmrRecord_Timer()'
数据记录定时器,定时保存到Excel表格
StatickAsLong
k=k+1
If(kMod5)=0Then'
定时器中断5次(即5秒)执行一次
SaveToExcel'
数据记录到Excel文件
(7)在frmMain代码窗口创建SaveToExcel过程,如下所示:
PrivateSubSaveToExcel()
StatickAsLong'
K为行号
Ifk>
32767Thenk=0'
Excel最大行不能超过32768
xlSheet.Cells(k+2,1)=Time:
xlSheet.Cells(k+2,2)=k'
表头
xlSheet.Cells(k+2,3)=Format(mD
(1).T
(1),"
)&
℃"
xlSheet.Cells(k+2,4)=Format(mD
(1).T
(2),"
xlSheet.Cells(k+2,5)=Format(mD
(2).T
(1),"
xlSheet.Cells(k+2,6)=Format(mD
(2).T
(2),"
xlSheet.Cells(k+2,7)=Format(mD(3).T
(1),"
xlSheet.Cells(k+2,8)=Format(mD(3).T
(2),"
xlSheet.Cells(k+2,9)=Format(mD(4).T
(1),"
xlSheet.Cells(k+2,10)=Format(mD(4).T
(2),"
xlSheet.Cells(k+2,11)=Format(mD
(1).RH
(1),"
#0"
%"
xlSheet.Cells(k+2,12)=Format(mD
(1).RH
(2),"
xlSheet.Cells(k+2,13)=Format(mD
(2).RH
(1),"
xlSheet.Cells(k+2,14)=Format(mD
(2).RH
(2),"
xlSheet.Cells(k+2,15)=Format(mD(3).RH
(1),"
xlSheet.Cells(k+2,16)=Format(mD(3).RH
(2),"
xlSheet.Cells(k+2,17)=Format(mD(4).RH
(1),"
xlSheet.Cells(k+2,18)=Format(mD(4).RH
(2),"
10.使用ADO访问数据库
(1)创建数据库(DB)
①使用“可视化数据管理器”创建一个数据库文件:
执行菜单命令“外接程序\可视化数据管理器”,在打开的对话框中执行如下菜单命令,数据库文件命名为“数据”,保存
②在数据库窗口中,点右键,选“新建表”,表名称为“数据表”,按如下表格添加字段
名称
类型
大小
必要的
顺序位置
缺省值
序号
Long
4
√
时间
Date/time
8
1
00:
01
温度1
Single
2
温度2
温度3
温度4
湿度1
湿度2
湿度3
湿度4
添加完后,点击“生成表”
③双击“数据表”,点“添加”,输入数据,每输入完一条记录就点击“更新”,如果出现下列错误提示,点“否”
输入4~5行数据即可,关闭“可视化数据管理器”
(2)创建数据库访问程序
①在frmMain窗体上放置一个按钮,外形:
,名称:
cmdDB
②新建一个窗体,按下表设置属性
属性名
Caption
Width
Height
MaxButton
MinButton
属性值
frmDB
数据访问窗口
15000
9000
False
③在frmDB窗体下方放置两个按钮外形:
,分别命名为cmdQuery和cmdQuit。
④在frmDB窗体上,执行菜单命令“工程/部件”,按下图选择ADO控件(ActiveXDataObjects)和DataGrid控件。
点击“确定”,可以看到左侧的工具箱多了两个工具图标:
⑤在frmDB窗体上放置一个DataGrid控件,设置其宽度(Width)为14000,高度(Height)为7000,其背景色(BackColor)为黄色。
右键单击该控件,选“属性”,打开其属性窗口,设置下列其字体属性
⑥切换到frmDB的代码窗口,定义访问数据库必须的变量:
DimcnnAsNewConnection,RstAsNewADODB.Recordset
⑦生成数据库连接字符串:
在frmDB窗体上放置一个ADO控件,右键单击它,如下图选ADODC属性
打开ADO控件的属性页:
点“生成”,得到下图,如图中所示选第二项
点“下一步”,得到下图
点击图中位置,找到数据库文件“数据.mdb”,如下图
点“测试连接”,显示
,点确定,复制属性页第一页中“使用连接字符串”下面文本框中的内容。
⑧删除frmDB窗体上的ADO控件,双击“查询”按钮,输入如下代码
PrivateSubcmdQuery_Click()
连接数据库并实现所要求的查询
cnn.CursorLocation=adUseClient
cnn.Open"
Provider=Microsoft.Jet.OLEDB.4.0;
PersistSecurityInfo=False;
DataSource=E:
\软件技术基础\TR\数据.mdb"
此处粘贴刚刚生成的连接字符串
Rst.Open"
select序号,时间,温度1,湿度1,from数据where温度1>
30"
cnn,adOpenStatic,adLockBatchOptimistic,adCmdText
Rst.Open"
select*from数据表"
Debug.PrintRst.RecordCount
若无满足要求的记录,则提前退出
IfRst.RecordCount<
1Then'
若无符合条件的记录,则
SetMe.DataGrid1.DataSource=Rst'
更新查询结果显
ExitSub
Rst.Sort="
排序
显示于表格中
Fori=0To9:
Me.DataGrid1.Columns(i).Width=Me.DataGrid1.Width/10:
Me.DataGrid1.Caption="
查询到的数据"
(3)完成数据访问窗体,双击“返回按钮”,输入下面代码:
PrivateSubcmdQuit_Click()
Rst.Close'
关闭视图
cnn.Close'
断开数据库连接
UnloadMe'
关闭窗体
11.给采集到的数据添加滤波功能
(1)添加模块module2,在其代码窗口中输入下面函数:
'
中位平均法滤波函数,数组x中去掉TrimN个最大的和最小的,剩余数据取平均值
PublicFunctionMidLvBo(x()AsSingle,TrimNAsInteger)AsSingle
DimL,U:
L=LBound(x):
U=UBound(x)'
取数据源数组下标的下限和上限
Dimb()AsSingle:
ReDimb(LToU)'
定义用于排序的数组
Fori=LToU:
b(i)=x(i):
Nexti'
数组另存
以下为冒泡法排序
Fori=LToU-1
Forj=i+1ToU
If(b(i)>
b(j))Then
DimtAsSingle
t=b(i):
b(i)=b(j):
b(j)=t'
交换
Nextj
DimsumAsSingle,nAsInteger:
sum=0'
sum为求和数,n为最终留下的数据个数
Fori=L+TrimNToU-TrimN:
sum=sum+b(i):
中间数求和
n=U-L-2*TrimN+1'
留下的数据个数
Ifn<
=0ThenMidLvBo=0ElseMidLvBo=sum/n'
异常处理
EndFunction
(2)在frmMain窗体空白处放置按钮,
,命名为cmdLvBo,双击它,添加下面的代码:
PrivateSubcmdLvBo_Click()
Dimx(1To6)AsSingle,TrimNAsInteger,yAsSingle
Fori=1T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB6 编程 步骤 全部