实验3指导书Word文档下载推荐.docx
《实验3指导书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验3指导书Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
(3)组合框控件(ComboBox)设置
①设置列表内容(List)为:
1、2、3、4、5;
②设置风格(Style)为:
2–Dropdown;
(4)“Comand1”设置
①设置标题(Caption)为“设置”;
②将控件调整到适当位置(按住Ctrl+箭头可移动控件、格式菜单有对齐等操作)和适当大小。
(5)“MSFlexGrid1”设置
①将控件调整到适当大小(Height=3135,Width=8535);
②将控件调整到适当位置(按住Ctrl+箭头可移动控件、格式菜单有对齐等操作)。
(6)“Timer1”设置
①设置定时时间间隔(Interval)为1200。
(五)“系统主界面窗体.frm”代码设计
(1)若窗体打开,撰写代码实现如下功能:
①组合框的报警电压上限值默认选择“3”;
②串口初始化;
③读取存储的测量记录并显示。
参考代码如下,实验要求:
必须为每一句代码添加上注释。
PrivateSubForm_Load()
Combo1.ListIndex=2
MSComm1.CommPort=2'
设置串口为COM2
MSComm1.Settings="
9600,n,8,1"
'
传输率为9600bit/s,无奇偶校验位,8位数据,1位停止
MSComm1.RThreshold=1'
接收缓冲区每收到1个字节字符,都会触发执行MSComm控件的OnComm()事件函数
MSComm1.SThreshold=0'
数据发送事件不产生OnComm()事件
MSComm1.InputLen=1'
使用Input()函数时读取接收缓冲区的字符个数,0表示全部读取
MSComm1.PortOpen=True'
打开串口
MSComm1.Output="
6"
向单片机发送字符6表示启动了VB,要求单片机发送当前设置的报警上限值
DBConn.CursorLocation=adUseClient
DBConn.Open"
Provider=Microsoft.Jet.OLEDB.4.0;
DataSource="
&
App.Path&
"
\数据库.mdb;
"
DimqueryStrAsString
queryStr="
select*from测量记录orderby序号desc"
DimrsAsNewADODB.Recordset
Setrs=DBConn.Execute(queryStr)
MSFlexGrid1.Cols=rs.Fields.Count'
设置列数
MSFlexGrid1.Rows=1'
设置行数,目前可以确定的是只有一行
MSFlexGrid1.ColWidth(0)=1600'
设置第1列的宽度
Fori=1Tors.Fields.Count-1'
设置剩余的列的宽度(等距离)
MSFlexGrid1.ColWidth(i)=(MSFlexGrid1.Width-MSFlexGrid1.ColWidth(0))/(rs.Fields.Count-1)
Nexti
Fori=0Tors.Fields.Count-1'
设置第1行的值
MSFlexGrid1.ColAlignment(i)=3'
各列文字居中显示
MSFlexGrid1.TextMatrix(0,i)=rs.Fields(i).Name'
第一行中各列的值为数据库中测量记录表的列名
DoWhileNotrs.EOF'
读取记录,直到指针指向末尾
MSFlexGrid1.Rows=MSFlexGrid1.Rows+1'
增加一行用来存储读取的记录
将读取的记录的值在增加的行中显示
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows-1,i)=rs.Fields(i).Value
rs.MoveNext'
指针移向下一条记录
Loop
EndSub
(2)撰写代码,实现实时获取电压值并显示。
提示:
类似单片机的串口中断函数,VB的串口控件也有一个串口接收事件函数OnComm(),如:
MSComm1.RThreshold=1‘接收缓冲区每收到1个字节字符,都会触发执行MSComm控件的OnComm()事件函数。
双击串口控件可以建立OnComm()事件函数。
PrivateSubMSComm1_OnComm()
SelectCaseMSComm1.CommEvent
CasecomEvReceive
rd$=MSComm1.Input'
只接收1个字符
mv=mv&
rd'
接收的字符串
If(rd="
N"
AndLen(mv)>
=5)Then'
数据格式为0.00N
Label4.Caption="
报警上限值:
Mid(mv,Len(mv)-4,1)&
V"
mv="
EndIf
M"
数据格式为0.00M
Label2.Caption="
电压值:
Mid(mv,Len(mv)-4,4)&
Label3.Caption="
时间:
Now()
insertStr="
insertinto测量记录(测量值,测量时间)values('
'
#"
Now()&
#)"
DBConn.Execute(insertStr)
CaseElse
EndSelect
以上代码要能运行,需要进行如下设置和修改:
(3)撰写代码,实现定时刷新网格控件(MSFlexGrid1)的显示。
通过定时器定时刷新网格控件(MSFlexGrid1)的数据。
定时器通过Interval属性(这里设置Interval的值为1200)定时调用时间函数Timer()。
双击定时器控件可建立Timer()事件。
PrivateSubTimer1_Timer()
MSFlexGrid1.Cols=rs.Fields.Count
MSFlexGrid1.Rows=1
MSFlexGrid1.ColWidth(0)=1600
Fori=1Tors.Fields.Count-1
Fori=0Tors.Fields.Count-1
MSFlexGrid1.ColAlignment(i)=3
MSFlexGrid1.TextMatrix(0,i)=rs.Fields(i).Name
rs.MoveFirst
DoWhileNotrs.EOF
MSFlexGrid1.Rows=MSFlexGrid1.Rows+1
rs.MoveNext
(4)单击设置按钮,撰写代码实现如下功能:
①通过串口发送设置的报警上限值给单片机;
②并给Label4标签赋值;
③弹出提示对话框。
PrivateSubCommand1_Click()
MSComm1.Output=Combo1.Text
Combo1.Text&
MsgBox"
设置成功!
vbOKOnly+vbInformation,"
恭喜"
(五)打开串口调试助手,进行如下操作:
(1)发送数据填写为:
2.67M;
自动发送周期设置为:
2000ms;
勾选“自动发送”。
(4)运行VB上位机程序,观察采集效果;
(5)改变发送数据为“2.79M”,观察采集效果;
(6)改变发送数据为“4.00N”,观察采集效果。
(六)“退出”菜单设计
(1)选择“系统主界面窗体”,进行如下操作:
按键Ctrl+E或选择菜单“工具à
菜单编辑器”打开菜单编辑器;
(2)设置一级菜单“退出(T)”
①在“标题(P)”输入:
退出(&
T);
②在“名称(M)”输入:
退出。
(3)设置二级菜单“返回登陆界面”
①点击“下一个(N)”
②在“标题(P)”输入:
返回登陆界面;
③在“名称(M)”输入:
④选择快捷键为:
Ctrl+F;
⑤点击向右箭头将菜单项下降一个级别。
(4)设置二级菜单“关闭系统”
关闭系统;
Ctrl+G;
⑤点击“确定”按钮完成设定。
(5)若点击菜单项“返回登陆界面”,撰写代码实现如下功能:
①跳出对话框询问是否确定要返回登陆界面,若确定则关闭当前窗体,打开“登陆窗体”。
PrivateSub返回登陆界面_Click()
IfMsgBox("
您确定要返回登陆界面吗?
vbOKCancel,"
请确定!
)=vbOKThen
DBConn.Close
UnloadMe
登陆窗体.Show
EndIf
(6)若点击菜单项“关闭系统”,撰写代码实现如下功能:
①跳出对话框询问是否确定要关闭系统,若确定则关闭系统。
PrivateSub关闭系统_Click()
您确定要退出本系统?
)=vbOKThenEnd
(七)“数据”菜单设计
(2)设置一级菜单“数据(S)”
①选择“关闭系统”菜单项;
②点击“下一个(N)”;
③点击“向左箭头”,将菜单项上升一个级别;
④在“标题(P)”输入:
数据(&
⑤在“名称(M)”输入:
数据。
(3)设置二级菜单“清除测量数据”
清除测量数据;
Ctrl+Q;
⑤点击向右箭头将菜单项下降一个级别;
⑥点击“确定”按钮完成设置。
(4)若点击菜单项“清除测量数据”,撰写代码实现如下功能:
①跳出对话框询问是否确定要清除测量数据,若确定则删除存储的测量数据,并提示清除成功。
PrivateSub清除测量数据_Click()
您确定要清除测量数据吗?
DimdeleteStrAsString
deleteStr="
deletefrom测量记录"
DBConn.Execute(deleteStr)
MsgBox"
清除测量数据成功!
(八)“用户”菜单设计
(2)设置一级菜单“用户(Y)”
①选择“清除测量数据”菜单项;
用户(&
Y);
用户。
(3)设置二级菜单“查看和修改个人信息”
①点击“下一个(N)”;
查看和修改个人信息;
⑤点击向左箭头将菜单项下降一个级别。
(4)设置二级菜单“修改密码”
修改密码;
Ctrl+X;
⑤点击“确定”命令按钮。
(5)若点击菜单项“查看和修改个人信息”,撰写代码实现如下功能:
①弹出窗体“查看和修改个人信息窗体”。
PrivateSub查看和修改个人信息_Click()
查看和修改个人信息窗体.Show
以上代码要能运行必须进行如下设计:
添加“查看和修改个人信息窗体”
(1)窗体文件保存,名字为“查看和修改个人信息窗体.frm”;
(2)“查看和修改个人信息窗体.frm”设置
①设置窗体名((名称))为“查看和修改个人信息窗体”;
②设置窗体标题(Caption)为“查看和修改个人信息窗体”;
③添加窗体背景图片(Picture);
④设置(Height=5725,Width=7500)或拉动窗体到适当大小。
“查看和修改个人信息窗体.frm”控件放置
(1)放置6个标签控件(Label)、3个文本框控件(TextBox)、1个组合框控件(ComboBox)和2个命令按钮(CommandButton)。
“查看和修改个人信息窗体.frm”控件设置
②设置背景样式(BackStyle)为“0-Transparent”;
(2)文本框控件(TextBox)设置
①设置文本内容(Text)都为空;
②将控件调整到适当位置(按住Ctrl+箭头可移动控件)和适当大小。
男、女;
2–DropdownList;
(4)“Comand1”和“Comand2”设置
①设置标题(Caption)分别为“修改”和“取消”;
“查看和修改个人信息窗体.frm”代码设计
①连接数据库,读取登陆用户的信息,并将读取的用户信息填入对应控件。
DimDBConnAsNewADODB.Connection
select*from用户where用户名='
登陆窗体.userName&
Label2.Caption=rs("
用户名"
)
Text1.Text=rs("
姓名"
If(StrComp(rs("
性别"
),"
男"
vbBinaryCompare)=0)Then
Combo1.ListIndex=0
Else
Combo1.ListIndex=1
Text2.Text=rs("
电话"
Text3.Text=rs("
邮箱"
代开登陆窗体的代码串口,按如下要求进行修改?
思考为什么。
(2)若点击“修改”按钮,撰写代码实现如下功能:
①判断姓名是否为空,若为空则弹出对话框提示;
②将新的用户信息写入数据库,并提示修改成功。
IfText1.Text="
Then
请输入姓名!
vbOKOnly+vbExclamation,"
警告"
Text1.SetFocus
ExitSub
DimupdateStrAsString
updateStr="
update用户set姓名='
Trim(Text1.Text)&
性别='
Trim(Combo1.Text)&
电话='
Trim(Text2.Text)&
邮箱='
Trim(Text3.Text)&
where用户名='
DBConn.Execute(updateStr)
修改成功!
(3)若点击“取消”按钮,撰写代码实现如下功能:
①关闭当前窗体。
PrivateSubCommand2_Click()
(九)若点击“用户”菜单下的菜单项“修改密码”,应该实现什么功能?
请补充完成该部分的设计。
四、实验记录
(1)对所有以上撰写的每一句代码都添加注释后附在实验报告后(把字体弄小点,看得清楚就可以,不要那么多页),可打印。
五、实验提交要求
(1)每次实验课后提交实验做题文件;
(2)撰写实验报告(可打印),内容包括实验目的、实验工具、实验内容(可全部省略,只保留“实验内容”大标题)、实验记录及结果,提交时间为下次实验时;
(3)实验报告提交时间为下一次实验课的时候。