APP下载

数控虚拟仿真实验辅助教学系统构建*

2022-05-24马秀丽

机械工程与自动化 2022年2期
关键词:窗体服务端控件

滕 凯,马秀丽

(1.徐州工程学院,江苏 徐州 221018;2.徐州机电技师学院,江苏 徐州 221131)

0 引言

随着计算机和信息技术的飞速发展,虚拟仿真技术在航空航天、智能制造、化工能源、教育教学等领域都得到了广泛的应用和发展。数控虚拟仿真实验就是利用虚拟现实技术,在虚拟制造环境中,借助视觉、听觉及触觉等传感通道与虚拟环境进行多维度的实时交互,完成程序编制、机床操作、工艺制定、加工制造等一系列工程训练。虚拟仿真不仅具有沉浸感和逼真性,而且还能够降低实验风险,减少资源投入,增强工程能力培养。

蔡卫国[1]指出数控虚拟仿真弥补了设备老化、经费不足的缺陷,避免了撞刀、过切等现象,提高了实验安全性和机床利用率。李建广等[2]以Excel表为考评数据载体,开发了数控虚拟仿真加工操作过程考核系统。高洪[3]将数控加工虚拟仿真项目与传统加工虚拟仿真项目相结合,突破了传统教学阶段在时间和空间上的限制,弥补了传统教学模式的不足,有效地提高了工程训练的教学效果。李淑颖等[4]将数控虚拟仿真与实际操作相结合,构建了以项目驱动为导向的开放式实践教学模式。

研究发现,数控虚拟仿真在传统意义上的模拟制造基础上,增加了面向加工对象模型的几何及物理性能仿真模块,涉及到切削力、振动、切屑形成、工件表面质量等诸多方面[5-7]。但这也导致仿真系统变得越来越庞大、复杂,交互界面变得越来越繁琐,增加了实验操作难度。同时,虚拟仿真还忽略了与传统教学的融合,缺少了教学资源、实践项目等多方供给,进而弱化了其在数控技术课程实验教学中的重要作用[8,9]。实验中发现,学生经常遇到由于原理理解不清、实验路线选择不合理、仿真操作失误等所导致的实验失败现象。为此,本文开发设计了一款数控虚拟仿真实验辅助教学系统,对实验流程进行全程跟踪与指导,切实提高虚拟仿真实验实效。

1 实验辅助教学系统的设计

在数控虚拟仿真系统构架下,基于Visual Basic可视化编程环境,开发了实验辅助教学系统。该系统操作界面简洁,人机交互友好,可实现与虚拟仿真系统交互运行。它构建了一个从实验目的、原理出发,以实验向导为导引,逐步实现交互仿真实验的辅助教学系统,实验流程如图1所示。学生在虚拟实验中遇到任何问题,都可以通过实验辅助系统寻求帮助。

1.1 实验原理导引设计

实验原理是整个实验设计的指导思想和依据。该模块通过索引引导学生进入多媒体教学环节,通过调用实验导引课件、指导文件和视频资源,使学生明确实验目的,理清实验原理,掌握实验难点,把握实验关键。

1.2 实验向导设计

数控虚拟仿真的实验方法与步骤是复杂多样的,每一个学生都可以制定一个个性化的实验流程图。也正因如此,部分学生很难制定出适合自己的实验方法与路线。实验向导模块可为学生提供经典的实验路线规划示例,供其参考;此外,学生也可通过模块提供的“导向工具栏”进行人机交互,不断探求正确合理的实验方法与路径。

1.3 在线仿真交互设计

数控虚拟仿真系统所提供的虚拟机床本体和数控系统,往往与实体机床还是有一定的差别和不同,学生也很难加以明确区分[10]。为此,学生可通过实验辅助系统寻求线上或线下帮助,解决实验中遇到的任何问题,真正实现在做中学、在学中做。

图1 实验流程

2 实验原理导引模块设计

2.1 PPT、Word、PDF、Excel和HTML等文档调用

该模块通过在Form窗体中创建一个OLE容器控件,可以在虚拟仿真应用程序运行期间预览与调用PowerPoint课件、Word文档、PDF指导手册等文件,用以指导实验。

在Form窗体上右键选择“菜单编辑器”,完成课件导引的下拉菜单设计,并在窗体上创建一个PictureBox控件,该控件中内嵌1个OLE控件、3个CommandButton控件。

CommandButton的“名称”属性分别命名为:“播放”和“关闭”;CausesValidation属性为Ture,执行窗体页面上的验证;“播放”控件Defauit属性为True,让该按钮作为缺省的活动按钮,缺省时,按回车键可以触发;“关闭”控件Cancel属性为True,让该按钮作为缺省的取消按钮,按ESC键可以触发。

以“PPT”调用为例,在窗体中添加如下程序控制代码:

Private Sub KJCall_Click() '课件调用

PPT播放

Courseware = "e:Microsoft Office PowerPoint实验原理.ppt"

OLE2.SourceDoc = Courseware '将对象插入,以便程序调用

OLE2.SourceItem = Courseware

OLE2.CausesValidation = True ' 失去焦点控件的Validate事件触发

OLE2.Class= PowerPoint.Show.8' 设置嵌入对象的类名

OLE2. OLETypeAllowed =2-Either'设置OLE容器控件包含的对象类型

OLE2.Action = 1 '打开

End Sub

Private Sub PLAY_Click()'课件播放

OLE2.Action = 7 'DoVerb打开一个对象

Courseware = " "

End Sub

2.2 MPEG、AVI、WAV、MP4等视频文件调用

在VB6.0中利用API函数mciSendString()来播放MPEG、AVI、WAV、MP4等多媒体文件。

在Form窗体中创建1个PictureBox控件,用以实现MCISendString()的多媒体文件播放;再创建多个OptionButton控件和CommandButton控件,并按照逻辑关系分别添加到各自的Frame控件中,如图2所示。

以“AVI”视频调用为例,在窗体中添加如下程序控制代码:

Private Sub Form_Load()'视频调用

Dim AVI_Name As String, AVI As String

Dim S As Integer

For S = 0 To 13

Option1(S).CausesValidation = True

……

Next S

Select Case ShiPingJX

Case 0

AVI_Name = "e:视频强化实验原理.avi"

Option1(0).Value = True

Case 1

……

End Select

mciSendString "close MyAVI", "", 0, 0 '关闭先前可能打开的avi文件

……

Picture1.ScaleMode = 3 'pixel设置Picture坐标系单位为像素

Picture1.AutoSize = True '?picture根据载入的图片自动调整大小

End Sub

Private Sub Command2_Click(Index As Integer) '播放/暂停

Dim s As Integer

Select Case Index

Case 0

mciSendString "play MyAVI", "", 0, 0 '播放

Case 1

mciSendString "pause MyAVI", "", 0, 0 '暂停

Case 2

Form_Unload 0 '关闭动画文件

For s = 0 To 13

Option1(s).Value = False

Next s

Case 3

mciSendString "stop MyAVI", "", 0, 0 '停止

……

End Select

End Sub

3 实验向导模块设计

数控虚拟仿真辅助系统添加了实验导引“快捷工具栏”和仿真解析模块,学生可以根据工具栏指引和仿真解析来完成实验[11]。

图2 多媒体强化模块

在辅助系统Form窗体中,创建1个Toolbar标准工具栏,添加1个imagelist控件,并在imagelist的相应属性里依次添加若干个ico图标文件,然后在toolbar属性的“通用”选项卡的图像列表下拉菜单选择“imagelist”;再在“按钮”选项卡,按照实验步骤依次插入若干个快捷操作按钮,每一个按钮添加其对应的“关键字”、按钮“图像”和“工具提示文本”,如图3所示。

图3 实验向导导引界面

实验向导模块的仿真解析功能实现,是在辅助系统Form窗体中插入多个个性化用户控件,以便实时展示仿真实例的刀具路径图。在操作界面的PictureBox控件中,创建1个RichTexBox控件数组,用来显示仿真实例加工程序;创建1个TexBox控件数组,用来指示当前执行程序段。

4 在线仿真交互模块设计

虚拟仿真实验的在线交互系统采用Client/Server网络结构模式,通过TCP协议与用户建立双向的网络连接服务[12],如图4所示。通过在线网络交互平台,实现师生之间的实时交互,有力保障实验的顺利进行。

图4 在线仿真交互系统

Client/Server通讯网络通过设置服务端LocalPort属性,来设定本地侦听端口;通过设置客户端RemotePort属性,来设定远程侦听端口。两端口属性值均为一个其他TCP/IP应用程序没有使用过的整数值。

服务端使用Listen()进入侦听状态,等待客户机程序的连接请求。客户端使用Connect()向服务器提出连接请求,使服务器程序产生ConnectionRequest事件,该事件得到一个参数requestID。 服务器端用Accept()接受客户端的requestID请求。这样,客户端就可以用SendData()发送数据了。Accept()依次用上一步得到的requestID作为其参数。 当服务端用GetData()接收到数据时,产生DataArrival数据到达触发事件。服务端进行服务处理请求,用SendData()向客户端发送数据,如果接受到Close事件,则关闭TCP/IP连接。客户端用GetData()接收到应答数据,如果接受到Close事件,则关闭TCP/IP连接。

创建服务端与客户端的Winsock控件源程序如下:

Private Sub scksever_ConnectionRequest(ByVal requestID As Long)

If scksever.State <> 0 Then scksever.Close

scksever.Accept requestID

End Sub

Private Sub scksever_DataArrival(ByVal bytesTotal As Long)

'数据到达触发

Dim strdata As String

Dim sdata As String

scksever.GetData strdata

sdata = Left$(strdata, 7)

Select Case sdata'系统消息

Case "SYSINFO"

xtxx = Right$(strdata, Len(strdata) - 7)'发送消息

Case "SENDINF"

sendxx = Right$(strdata, Len(strdata) - 7)

sendform.sendtxt.Text = sendxx

Case "OUITMYF"'关闭服务端

scksever.Close

scksever.Listen

Timer1.Enabled = True

Case "GETFXIF"

xtxx = Right$(strdata, Len(strdata) - 7)

End Select

End Sub

Private Sub scksever_Click() '客户端连接

If txtip.Text = "" Then

MsgBox "请输入IP,后连接", vbInformation, "提示"

Exit Sub

Else

KeHuDuan.Enabled = False

sckclient.RemoteHost = txtip.Text '远程计算机名(IP)

sckclient.LocalPort = 1008 '本地机通信应用程序端口

sckclient.RemotePort = 1007

sckclient.Connect '向远程主机发出连接请求

End If

End Sub

Private Sub sckclient_DataArrival(ByVal bytesTotal As Long) 'GetdData接收到数据时触发

……

ClassName = Space(256)

ClassName = "Shell_TrayWnd"

StartWindow = FindWindow(ClassName, vbNullString)

wnd = FindWindow(sTrayWindow, vbNullString)

sckclient.GetData sdata

myCHUFA = Left$(sdata, 7)

Select Case myCHUFA

Case "JIAOHU" '信息交互

xinxi= Right$(sdata, Len(sdata) - 7)

infoform.Refresh

infoform.Show

Case "FZJH" '仿真交互

FangZhenJiaoHu

Case "JIANCE" '在线监测

ZaiXianJianCe

……

Case "GuanBiXT" '退出

sckclient.SendData "关闭服务端"

End

End Select

End Sub

5 结论

数控虚拟仿真虽然具有逼真性和沉浸感,但与实际操作还是有一定的差异,还不能完全用虚拟仿真代替实际数控加工实验。虚拟仿真实验辅助系统较好地解决了虚拟仿真与实体数控加工之间的衔接问题,拓展了实验教学的深度和广度,提高了实验教学实效。

猜你喜欢

窗体服务端控件
基于.net的用户定义验证控件的应用分析
试谈Access 2007数据库在林业档案管理中的应用
基于Qt的多窗体快速并行图形绘制方法研究
关于.net控件数组的探讨
新时期《移动Web服务端开发》课程教学改革的研究
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
摸清黑客套路防范木马侵入
WinCE.net下图形用户界面的开发
Spreadsheet控件在Delphi数据库系统中的编程与应用