VB课程设计报告-数显百分表.doc_第1页
VB课程设计报告-数显百分表.doc_第2页
VB课程设计报告-数显百分表.doc_第3页
VB课程设计报告-数显百分表.doc_第4页
VB课程设计报告-数显百分表.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计与语言实习(VB)课程设计报告一、课题名称:第19题 数显百分表的读数监控本程序以数显百分表为对象,通过模拟数字和模拟显示界面,仿真位移监测等功能。班级:09机工A1姓名:蒋梦娇二、需求和功能要求分析数显百分表是通过齿轮或杠杆将一般的直线位移(直线运动)转换成指针的旋转运动,然后在显示屏上进行读数的长度测量仪器。数显百分表具有显示精确,而且很方便,读数一目了然,精度高等优点。工作温度为0-40,电源为3V锂电池CR2032,数据输出为USB2.0,仪表接口为5芯串行端口(量表液晶面向上,从量表侧面看串口座,从左至右依次为电源、地线、数据口、时钟口、地线)因此在软件的开发过程中,要求实现如下功能:1、串口通信利用MSComm 控件通过串行端口传输和接收数据,为程序提供串行通讯功能。对于本程序来说数据一直主动发,和外部设备状态无关,只做数据输入。使用此控件需在程序中设置CommPort、Settings、InputMode等属性。其中CommPort为端口号,可供用户选择,可由Err.Number(返回值8005表示端口打开,8002表示无效端口)来判定所选端口处于哪种状态并弹出提示框,最终选择出正确连接设备的端口。Setting属进行RS232通信设置4800,n,8,1分别对应”波特率,奇偶校验,数据位,停止位”。 InputMode设定为二进制输入。2、实时监控测量值要求软件每隔1秒,就从设备上读取相应的监控数据(位移数据),直至软件停止监控。加载一个timer控件,设定其interval属性为1000。在timer事件里编写显示数据的程序。先将数据采入做循环判断每个数组元素的起始字节是否为0xaa,如果是则5个一循环得到用来表示数值的两个十六进制数,用HEX函数获得表示的字符串用作label显示,一秒得到一个数值,实现实时动态显示。3、绘制动态曲线图利用第三方控件CWgraph绘制。在timer事件中设定表示数值的纵坐标和表示时间的横坐标的名称、刻度的最大值最小值、刻度数字的颜色等值。通过将横坐标时间刻度的最大值最小值一秒加一来达到横坐标滚动显示的效果,数据曲线也可以一直延续下去。纵坐标数值由读取的数值重新定义动态数组后赋值。4、公英制转换 测量值的单位可在in/mm间切换。用两个option控件来选择公制还是英制,两种状态下的数值显示规定好各自的格式精度。由于量程范围不同,图形显示用不同的坐标刻度并且纵坐标坐标显示相应的单位。公制的分辨力:0.01 mm 英制的分辨力:0.0001 in公制量程:0.0027.49 mm英制量程:0.00001.0825 in5、实时监控最大最小值显示显示每次测量数据的最大值以及最小值。用函数val对Label的caption取值获得一个数组,对数组的最大值最小值分别用for循环进行判断。都假设第一个元素为最大或最小,判断交换,最后输出的第一个元素即为最大或最小值。 6、数据的读取与保存可将每次读到的数据写入一个外部文本文档中,并记录下每个数据的读取时间。在timer事件中吧每次显示的数据读入一个外部txt文本,文件名为数据+当前日期时间,存储路径App.path获取程序所在路径。可读取记录的外部文本文档中的数据,并用软件进行回放。使用CommDialog控件可以达到想windows系统选择文件打开的效果。通过一个list控件输出每行数据以及记录时间三、模块功能图四、软件主要技术特点和方法1、程序功能的主要说明 COM端可选; 能够实时显示当前测试值,最大值,最小值;。 可选择是否保存数据; 可选择读取数据回放的文件; 显示开始测量时间; 动态实时图显示。2、程序界面的主要说明 3、 算法应用动态数组元素取最大值最小值:在若干数中求最大值,一般先取第一个数为最大值的初值(即假设第一个数为最大值),然后,在循环体内将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值,直到循环结束。求最小值的方法类同。五、窗体及各控件的属性说明:对象名属性名称设置值备注Form1Caption数显百分表的读数监控StartUpPosition2-屏幕中心Label1Caption动态实时图Label2Caption当前测试值:Label3CaptionMax:Label4CaptionCOM端:Label7Caption缺省动态显示Label8Caption缺省动态显示Label9CaptionMin:Label10Caption缺省动态显示Label11Caption开始监测时间Command1Caption开始监测(&O)Command2Caption停止监测(&C)Text3Text缺省获取时当前时间Frame1Caption显示方式BorderStyle1-Fixed SingleOption1Caption公制Option2Caption英制Timer1EnabledFalseInterval1000MSComm1Setting4800,n,8,1CommonDialog1InitDir缺省文件目录Filter缺省指定文件类型CancelErrorFalseFilename缺省文件名六、变量使用说明:变量名变量类型数据类型备注i公共变量整型输入数据的数组元素j公共变量整型以0xaa开头的数据k公共变量整型采到第几个字节biaozhi公共变量整型判定5个字节是否全部输出mm(4)公共变量整型字节shuju()公共变量字节型输入数据h()公共变量单精度浮点型测量值t公共变量整型秒数max公共变量单精度浮点型最大值min公共变量单精度浮点型最小值FormOldWidth公共变量长整型窗体原始宽度FormOldHeight公共变量长整型窗体原始高度msg局部变量字符串(定长)是否退出程序Str局部变量字符串(变长)文件名S局部变量字符串(变长)文本各行字符串Obj局部变量控件类名Form上的各控件Pos(4)局部变量双精度浮点型四个方向位置TempPos局部变量长整型原始位置大小StartPos局部变量长整型控件原始位置ScaleX局部变量双精度浮点型窗体宽度缩放比例ScaleY局部变量双精度浮点型窗体高度缩放比例七、软件使用说明书1、连接数显百分表。2、打开程序,选择COM端。3、COM端选择正确,单击确定。4、选择公英制。5、仪表调零。6、可选择是否保存此次测量数据7、点击“开始监测”。8、测试完成后点击“停止监测”。9、打开txt文本文件读取回放数据(输出的txt文本保存在程序所在文件夹下)10、快捷键设置:开始监测 Alt + O 停止监测 Alt + C打开文件 Ctrl + O八、参考资料1 Visual Basic 程序设计教程, 刘瑞新 王远征著,2011年3月第二版,机械工业出版社2 Visual Basic 与RS-232 串行通信控制,范逸之 陈立元 编著,最新版,中国青年出版社3 来自网络: /question/428169083.html?fr=fd /wbkx/blog/item/d6f674ec2888a7d42e2e2109.html /u/20110702/19/c42f7283-860f-4e79-b252-ecef2cab3d1b.html /view/4b2fb16e58fafab069dc0234.html/question/59082589.html/jxfuwu/ZK/dzshw/%BC%EC%B2%E92005/vb/vb%BF%CE%BC%FE11/d10j/10.htm九、代码Dim FormOldWidth As Long 保存窗体的原始宽度Dim FormOldHeight As Long 保存窗体的原始高度Dim shuju() As ByteDim mm(4) As IntegerDim h() As SingleDim biaozhi As IntegerDim i As Integer, j As Integer, k As Integer, t As IntegerDim n As Single, max As Single, min As SinglePrivate Sub Combo1_Click()On Error GoTo errMSComm1.CommPort = Val(Combo1.Text)MSComm1.Settings = 4800,n,8,1MSComm1.InputMode = comInputModeBinaryMSComm1.InputLen = 0If MSComm1.PortOpen = False Then MSComm1.PortOpen = Trueerr: Select Case err.Number Case 8002 MsgBox 无效端口号,请确定是否连接或更换Com口, vbExclamation + vbOKOnly, 警告 Case 8005 MsgBox 端口已打开, vbExclamation + vbOKOnly, 警告 Case 8018 MsgBox 只有当端口打开时操作才有效, vbExclamation + vbOKOnly, 警告 Case 8021 MsgBox 端口内部控制块出现错误, vbExclamation + vbOKOnly, 警告 Case Else MsgBox err.Description End SelectEnd SubPrivate Sub Command1_Click()Text3.Text = NowTimer1.Enabled = Truet = 0End SubPrivate Sub Command2_Click()Timer1.Enabled = Falset = 0End SubPrivate Sub Form_Load() Combo1.AddItem 1 Combo1.AddItem 2 Combo1.AddItem 3 Combo1.AddItem 4 Combo1.AddItem 5 Combo1.AddItem 6 Combo1.AddItem 7 Combo1.AddItem 8 Combo1.AddItem 9 Option1.Value = TrueCall ResizeInit(Me)End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)Dim msg As Stringmsg = 是否退出 & Me.CaptionIf MsgBox(msg, vbQuestion + vbYesNo, 确定吗) = vbNo Then Cancel = TrueEnd SubPrivate Sub Form_Resize()Call ResizeForm(Me) 控件随窗体改变End SubPrivate Sub Openfile_Click()Dim str As String, s As String r() As StringList1.ClearOn Error GoTo nofileWith CommonDialog1 .InitDir = c:windows .Filter = 记事本(*.txt)|*.txt .CancelError = True .ShowOpen str = .FileNameEnd WithOpen str For Input As #1Do If EOF(1) Then Exit Do Input #1, s List1.AddItem sLoopClose #1nofile: If err.Number = 32755 Then MsgBox 放弃操作, vbInformation, 提示End SubPrivate Sub Timer1_Timer()Dim a As String, b As String, c As String i = 0 j = 0 k = 0 shuju() = MSComm1.Input For i = LBound(shuju) To UBound(shuju) If shuju(i) = &HAA Then j = i Do mm(k) = shuju(j) k = k + 1 j = j + 1 Loop Until k = 5 biaozhi = 1 End If If biaozhi = 1 Then Exit For biaozhi = 0 End If Next i a = Hex(mm(2) b = Hex(mm(3) t = t + 1 If Option1 = True Then If a 10 Then b = Val(b) * 10 Label7.Caption = Format(Round(Val(b & a) / 100, 4), 0.00) Else Label7.Caption = Format(Round(Val(b & a) / 100, 4), 0.00) End If Else If a = h(1) Then max = h(i) h(i) = h(1) h(1) = max If Option1 = True Then Label8.Caption = Format(Round(h(1), 4), 0.00) Else Label8.Caption = Format(Round(h(1), 4), 0.0000) End If End If Next i For i = 1 To t If h(i) 6 Then CWGraph1.Axes(1).Minimum = t - 6 横坐标的最小值 CWGraph1.Axes(1).Maximum = t + 4 End IfElse CWGraph1.Axes(1).Minimum = 0 横坐标的最小值 CWGraph1.Axes(1).Maximum = 10 横坐标的最大值 CWGraph1.Axes(2).Minimum = 0 纵坐标的最小值 CWGraph1.Axes(2).Maximum = 2 纵坐标的最大值 CWGraph1.Axes(2).Labels.Color = vbBlack 纵坐标上数字颜色 CWGraph1.Axes(2).Ticks.MajorTickColor = vbBlack 纵坐标上刻度线颜色 CWGraph1.Axes(1).Caption = 时间(s) 横坐标的名称 CWGraph1.Axes(2).Caption = 测量值(in) 纵坐标 的名称 CWGraph1.Plots(1).PlotY h 将数值在图上画出来 CWGraph1.Axes(1).Maximum = CWGraph1.Axes(1).Maximum + 1 If t 6 Then CWGraph1.Axes(1).Minimum = t - 6 CWGraph1.Axes(1).Maximum = t + 4 End IfEnd If If Check1.Value = 1 Then Open App.Path + 数据 & Format(Text3, yymmddhhmmss) & .txt For Append As #1 Print #1, t & s, & h(t) Close #1 End IfEnd Sub 适配窗体过程Public Sub ResizeInit(FormName As Form) 调用ResizeForm前先调用本函数 Dim Obj As Control FormOldWidth = FormName.ScaleWidth FormOldHeight = FormName.ScaleHeight On Error Resume Next For Each Obj In FormName Obj.Tag = Obj.Left & & Obj.Top & & Obj.Width & & O

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论