以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  循环中铃声和文字轮换进行语音播报,但每次都会把前面的新报障信息提示音.wav播报几遍后,同时来 播放 文字  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=124693)

--  作者:ycwk
--  发布时间:2018/9/12 8:20:00
--  循环中铃声和文字轮换进行语音播报,但每次都会把前面的新报障信息提示音.wav播报几遍后,同时来 播放 文字
循环中铃声和文字轮换进行语音播报,但每次都会把前面的新报障信息提示音.wav连续播报几遍,同时播放 文字,请老师看看代码是否有问题?
我希望是播放完一遍wav后,再播放文字,然后再进行第二个循环,如此往复。  

If Date.today.DayOfWeek >= 1 AndAlso Date.today.DayOfWeek <= 5 AndAlso (format(Date.Now, "HHmm") <= "1200" Or format(Date.Now, "HHmm") >= "1430") Then   \'在周一到周五的 12:00以前和14:30以后,都播报     
DataTables("自助报障记录表").Load
    For Each nr As DataRow In  DataTables("自助报障记录表").DataRows  
           If nr("问题描述") <> Nothing And nr("问题处理状态")="继续跟进"  Then      
               Dim sp_str As String=  nr("计算机中心责任人") & "有报障仍未解决,请注意:" & nr("所在楼") & nr("所在科室") & nr("所在房间") & nr("三级分类") 
             
                 \'下面是不能调用函数的,以防第一轮调用的提示音还没播完就在调用第二轮的播放函数了,就会连续听到N个提示音
                 Audio.play("Voice\\新报障信息提示音.wav",AudioPlayMode.WaitToComplete)     \'播放提示音,并且要等它播放完毕
                 sp.Speak(sp_str, DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync)     \'异步
              
           End If
     Next
End If

--  作者:有点甜
--  发布时间:2018/9/12 8:52:00
--  
播放文字的时候,应该使用同步的方式,而不能是异步。