|
虚拟通信设备DSC中的双手指效应
李振东
为了保证航运的安全,从1992年2月1 日起,国际海事组织开始实施“全球海上遇险与安全系统”
——
Global Maritime Distress & Safety System (简称GMDSS),并且将在1999年2月1日完全替代现行的海上遇险与安全系统。而GMDSS是一个服从于海上国际搜寻与救助公约的全球通信网络,其中配备有多种先进的通信设备,船舶驾驶人员则必需熟练掌握满足GMDSS要求的各种通信设备,才能取得船舶驾驶员适任证书,作为培养航运人材的教学机构,担任着船舶驾驶人员的GMDSS设备的培训任务。
在GMDSS中必需配备的一种通信设备“数字选择性呼叫终端——Digital Selective Calling Terminals (简称DSC),它可完善地进行包括遇险报警、遇险报警的确认、遇险转播、遇险转播确认在内的遇险呼叫功能;也能可靠地沟通岸台与船台之间的无线电联络,完成自动值守及船舶查询功能。所以作为一名船舶驾驶人员必需掌握DSC设备操作和使用,而DSC设备则为培训中的一个重要的内容之一。现行的培训方法是教师在介绍了DSC设备的相关知识后,一个重要的过程就是让学员学习和练习DSC设备的操作,其中实际操作在教学过程中占有相当大的比重,目前能让学员练习操作使用的是一台真正的实体DSC设备,学员多,只能轮流上机操作,从设备的数量上就不能满足大批量学员培训的要求;另外由是一台实体设备,在实际操作练习中有一些操作(甚至是一些很重要的操作)是不能练习的,如练习报文的发送,特别是遇险报警呼叫信号的发送,这是因为每一次发送都会通过发信设备发射到空中,这样会破坏正常的通信秩序而影响正常的航行安全,由于这种原因,有一些练习就不能进行,也就达不到培训的要求。所以就必需开发出一种能够替代实体机的模拟DSC设备,也即为虚拟通信设备,供学员进行全面的操作练习。同时,根据国际海事组织关于《STCW(95)》(“培训、发证和值班标准国际公约”——International Convention on Standards of Training
Certification and Watch-Keeping 简称STCW)公约中特别强调了采用模拟器获取海上技能潜力和在航海培训与评估中采用计算机辅助教学的必要性,船舶驾驶人员必需通过一定学时的模拟设备的练习,通过考核以后才能获得船舶驾驶员的适任证书。鉴于这种情况利用计算机对现有的通信设备进行模拟,即开发出一个虚拟的DSC通信设备,以满足航海人材的培训要求,也是计算机应用的一个方向。
所图1所示是一个虚拟DSC设备的控制面板,与一台实体完全一致,溶入计算机多媒体功能,使所有按键动作及按键所发出的音响也完全与实体机相同,虚拟DSC设备采用了Microsoft
公司的Visual Basic 5.0编程语言进行开发,运行于Windows 95平台,利用Windows 95的网络功能,使得多台计算机构成多台虚拟DSC设备,以实现多台设备之间的通信,从而可以使学员在虚拟DSC设备上完成所有的DSC设备的操作练习,包括报文的发送,甚至是遇险报警呼叫信号的发送,因为所有的报文信息是作为文件在网络中传送,不会干扰正常的空中通信信道,更不会影响正常的航行安全,学员在通过虚拟DSC设备上的操作练习后,完全能掌握真正DSC设备的操作使用。满足了航海驾驶人员的培训要求,也完全符合《STCW(95)》公约的要求。
图1
在DSC设备的操作中,有几种功能需要两个按键同时按下,既双手指同时按下某两个按键才能进入某一项功能的操作,如要对本DSC终端进行初始化操作,就必需同时按下“*”
和“ENT”这两个按键,要进行报文试验,就必需同时按下“TEST”键和“START/STOP”键,发射试验则必需同时按下“SEND”和“START/STOP”键,特别是初始化操作,是学员必需掌握的内容之一,这些操作在实体机上操作不成问题,而在虚拟的DSC上,所有的按键动作都是通过鼠标器进行的,既用鼠标指针指向画面上的某一个按键,单击鼠标上的按键,利用动画原理,使虚拟DSC上的按键实现一个按键动作,同时发出一声音响,完成一个功能的操作,并且还会在虚拟的液晶屏上显示相应信息。如何在虚拟的DSC设备上来实现双键操作,既产生双键效应,这在软件开发的过程中必需解决的问题。
由图1可知,单键操作时,鼠标指针为一个右手图形,而需要双手同时操作时,必需要有明确的图形指示,也就需要将鼠标指针改为双手图形,同时当鼠标指针移到双键盘中的左边在个键时,鼠标指针切换为左手图形,而双键的另一个键上同时显示出一个右手的图形,进入双手指状态,单击鼠标器上的按纽,即可进行双手指操作,而如果需要单手指操作时,要能够回到单手指状态,也就是虚拟DSC设备必需要有单手指和双手指的切换机制。
要实现上述功能,首先用EditImage工具软件,绘制三个鼠标指针图形如图2中的(a)(b)(c),其中图2(a)为DSOU.ICO文件,图2(b)为LSOU.ICO文件,图2(c)为RSOU.ICO文件,这三个文件供鼠标指针切换时调用。在整个控制面板的下面建立一个Image1控件,该控件的picture属性为DSOU.ICO,作为单、双手的切换指示。在单手指操作时,鼠标指针为右手鼠标指针,当需要双手指操作时,只需用鼠标单击Image1控件,就可以利用Image1_Click()子过程通过改变Form2的MousePoint属性,将鼠标指针切换成双手指针,同时将Image1控件的picture属性为RSOU.ICO
。同样,需要单手指操作时,也只需用鼠标单击Image1控件,就可以利用Image1_Click()子过程将鼠标指针切换成单手指针,同时将Image1控件的picture属性为DSOU.ICO
。
图2
Private Sub Image1_Click()
If pwrflg = 1 Then Exit Sub
If DSOU = 0 Then
DSOU
= 1
Form2.MousePointer
= 99
Form2.MouseIcon
= LoadPicture("C:\JRC\DSOU.ICO") ‘置Form2的MousePoint为双手图形
Image1.Picture
= LoadPicture("C:\JRC\RSOU.ICO")
Else
DSOU
= 0
Form2.MousePointer
= 0 ‘置Form2的MousePoint为常规指针
Form2.MouseIcon
= LoadPicture("C:\JRC\DSOU.ICO")
Image1.Picture
= LoadPicture("C:\JRC\DSOU.ICO")
End If
End Sub
一旦将鼠标切换成双手指针后,就可以双手指操作,此时鼠标指针在移动时利用Form_MouseMove
子过程保持鼠标为双手指针。并不出现双手效应。
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single,
Y As Single)
If DSOU = 1 Then
Image2.Visible
= False
Image3.Visible
= False
End If
End Sub
何时才产生双手效应呢?以双手指进行初始化操作为例,必需在“*”和“ENT”两个按键图形上同时显示左右手鼠标指针,然后单鼠标按纽,利用动画原理,在画面上这两个按键同时出现运动图形,以产生双手效应。其具体实现的方法是,首先在“ENT”按键上生成一个Image2控件,该控件的picture属性为RSOU.ICO既右手图形,而将Image2的Visible设置为False,既在运行的过程中,该控件的图形是不可见的,只有在双手鼠标指针移动到“*”按键时,利用MouseMove事件启用Picture21_MouseMove(Button
As Integer, Shift As Integer, X As Single, Y As Single)子过程,使Image2的Visible设置为True,显示出“ENT”按键上的右手图形,同时也将在“*”按键上的鼠标指针切换成左手图形,此时在两个按键上同时可以看到左右两个手的图形,如图3所示,首先在视觉上满足操作的需求。
图3
Private
Sub Picture21_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single)
If DSOU = 1 Then
Image2.Visible
= True ‘显示Image2控件(右手)
Picture21.MousePointer
= 99
Picture21.MouseIcon
= LoadPicture("C:\JRC\LSOU.ICO") 对性‘将双手图形指针切换成左手图形指针
Else
Image2.Visible
= False
Picture21.MousePointer
= 99
Picture21.MouseIcon
= LoadPicture("C:\JRC\RSOU.ICO")
End If
End Sub
当同时出现左右两个手的图形时,单击鼠器的按纽,由Picture21_MouseDown(Button
As Integer, Shift As Integer, X As Single, Y As Single)和Picture21_MouseUp(Button
As Integer, Shift As Integer, X As Single, Y As Single)两个子过程,同时完成两个按键的动画过程,将鼠标指针恢复到单手图形指针,并进入到虚拟DSC设备的初始化操作,从而实现了虚拟通信设备DSC中的双手效应。
Private Sub Picture21_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Picture21.Picture = LoadPicture("c:\JRC\nx-2.BMP")
If pwrflg = 1 Then Exit Sub
If DSOU = 1 Then
DSOU
= 0
Image1.Picture
= LoadPicture("C:\JRC\DSOU.ICO")
Form2.MousePointer
= 0
Form2.MouseIcon
= LoadPicture("C:\JRC\DSOU.ICO")
Picture21.MousePointer
= 99
Picture21.MouseIcon
= LoadPicture("C:\JRC\RSOU.ICO")
Picture25.Picture
= LoadPicture("c:\JRC\ent-2.BMP")
initflg
= 1 'INIT FLAG
‘进入DSC的初始化操作及设置
SELF_ID
= ""
GROUP_ID
= "0"
text_b3
= Text3.Text
text_b4
= Text4.Text
initbp
= 1
txt = Text3.Text
Mid(txt, 1, 26)
= "
"
Text3.Text = txt
txt = Text4.Text
Mid(txt, 1, 26)
= "
"
Mid(txt, 1, 26)
= initbuf$(initbp, 0) + initbuf$(initbp, 1)
Text4.Text = txt
End If
End Sub
Private Sub Picture21_MouseUp(Button As Integer, Shift As Integer, X As Single,
Y As Single)
Picture21.Picture = LoadPicture("c:\JRC\nx-1.BMP")
Image2.Visible
= False
Picture21.MousePointer
= 99
Picture21.MouseIcon
= LoadPicture("C:\JRC\RSOU.ICO")
Picture25.Picture
= LoadPicture("c:\JRC\ent-1.BMP")
End Sub
用同样的方法,亦可实现另外两组双手指效应的功能,从而达到了虚拟DSC设备上的双手指操作练习。在开发设计的过程中,充分利用了Visual
Basic 5.0 提供的Image控件的功能,灵活地应用了控件的Picture属性、Visible属性、MousePoint属性以及MouseMove事件的方法。当然也可以其他的方法来解决这个问题,如控件对象的拖动技术,控件对象的移动方法及图象的透明技术等,本文所述的方法较为实用有效。
Double-finger
effect while operating DSC on simulation equipment
Li
Zhendong
Abstract:This paper introduces the functions of DSC in
GMDSS, and hammers at the necessity of applying simulation communications
equipment in the training of seafarers. The writer, rich in practical
experience in software developemnr, elaborates the use of double
fingers on DSC operating panel and the effects ensuing.
Key words:Simulation
Communication; Double finger; Calling Terminals
|