VB设计有语音报时和报警功能的闹钟(5)

2008-04-09 04:44:42来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

二、实现语音报时

  下面我们再继续个它添加语音报时的功能.其实很简单,主要思路就是获取当前时间,如果是整点(即,分针,时针都为零)时,我们可以运用MCI ( Media Control Interface , 媒体控制接口)来播放,你已经录好的报时的声音文件.下面我们具体来看一看怎样实现这一功能.

  (1) 使用MCI控件

  MCI是Windows提供的一个可以处理音频和视频的API(应用程序编程接口),通过它,我们可以很方便的实现对音频设备,和视频设备及其其他设备的控制.这一接口极大的方便了使用者,使我们可以只使用设备接口,而不用对实际的物理设备进行直接的操作.

  为了使用MCI控件我们首先要点取Project ( 工程 ) / Components (组件)菜单,或在工具箱中点击右键,然后在弹除的菜单中选择部件,这时屏幕上会弹出如图所示的对话框.



  在其中选中”microsoft Multimedia Control”,在单击确定按钮,就可以把MMControl控件添加到工具箱中了.当把MMControl控件添加到窗体中时,她的形状如下所示:




  上面的九个按钮,分别表示九种功能.和普通的录音机上的按钮类似,从左到右分别是:Prev (向前) , Next (向后) , Play (播放) , Pause (暂停) , Back (快速倒带) , Step (快速进带) , Record ( 录音 ) ,和Eject (弹出).

  使用时,先要为MMContorl控件指定一个要播放的文件,然后用Open命令打开它.然后再使用Play命令播放文件.最后关闭所打开的文件.

  下面我们看看怎样用MMControl来实现语音报时功能.

  下面是代码(我们这里主要给出所改动的地方):

‘ = = = = = = = = = = = = = = = = = = = = = = = =

‘ 每秒钟触发一次此事件,从而获取当时的时间,并调用相应的函数,画出三个针的位置

‘ = = = = = = = = = = = = = = = = = = = = = = = =

Private Sub Timer1 _ Timer ( )

 miao = Second (time)
 miao = 60 – miao

 fen = Minute (time)
 fen = 60 - fen

 shi = Hour (time)

 If shi > = 12 Then ‘因为一天之内时针要走二十四个钟头,也就是要走两圈,所以将下午和晚上的时间减去十二,就可以确定时针准确的位置

  shi = shi - 12

 End If

 shi = 12 - shi
 miao = xianshimiao ( maio )
 fen = xianshifen ( fen )
 shi = xianshishi ( shi )
 If fen = 0 and miao = 0 then ‘如果分针和秒针都为零,这位整点,根据时针的数报时

  Select case shi
   Case 0 ‘零点,0.wav报时零点
    MMControl1.FileName = App . Path & “ 0.wav ” ‘选择要打开的文件
    MMControl1.Commond = “ Open ” ‘打开所选择的文件
    MMControl1.Commond = “ Play ” ‘播放所选择的文件
   Case 1 ‘ 一点,1.wav报时一点,以下依次类推
    MMControl1.FileName = App . Path & “ 1.wav ” ‘选择要打开的文件
    MMControl1.Commond = “ Open ” ‘打开所选择的文件
    MMControl1.Commond = “ Play ” ‘播放所选择的文件
   Case 2
    MMControl1.FileName = App . Path & “ 2.wav ”
    MMControl1.Commond = “ Open ”
    MMControl1.Commond = “ Play ”
   Case 3
    MMControl1.FileName = App . Path & “ 3.wav ”
    MMControl1.Commond = “ Open ”
    MMControl1.Commond = “ Play ”
   Case 4
    MMControl1.FileName = App . Path & “ 4.wav ”
    MMControl1.Commond = “ Open ”
    MMControl1.Commond = “ Play ”
   Case 5
    MMControl1.FileName = App . Path & “ 5.wav ”
    MMControl1.Commond = “ Open ”
    MMControl1.Commond = “ Play ”
   Case 6
    MMControl1.FileName = App . Path & “ 6.wav ”
    MMControl1.Commond = “ Open ”
    MMControl1.Commond = “ Play ”
   Case 7
    MMControl1.FileName = App . Path & “ 7.wav ”
    MMControl1.Commond = “ Open ”
    MMControl1.Commond = “ Play ”
   Case 8
    MMControl1.FileName = App . Path & “ 8.wav ”
    MMControl1.Commond = “ Open ”
    MMControl1.Commond = “ Play ”
   Case 9
    MMControl1.FileName = App . Path & “ 9.wav ”
    MMControl1.Commond = “ Open ”
    MMControl1.Commond = “ Play ”
   Case 10
    MMControl1.FileName = App . Path & “ 10.wav ”
    MMControl1.Commond = “ Open ”
    MMControl1.Commond = “ Play ”
   Case 11
    MMControl1.FileName = App . Path & “ 11.wav ”
    MMControl1.Commond = “ Open ”
    MMControl1.Commond = “ Play ”
  End Select

  MMControl1.Commond = “ Close ”

End Sub
  不知道你的机子是否还能运行良好.毕竟再短短的一秒钟内,我们让计算机做的事情太多了.为了提高效率,我们可以考虑使用API函数.

  我们先来看一下所要用到的相关知识.

  (2) 相关API函数

  1、 GetLocalTime()

  VB声明:Declare Sub GetLocalTime Lib " kernel32 " Alias " GetLocalTime " ( lpSystemTime As SYSTEMTIME )

  说明:在lpSystemTime结构中装载本地日期和时间

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:用VB6.0编程禁止网上下载文件

下一篇:VB MapX编程实现地图数据查询