<nobr id="zkazv"></nobr>

      午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al

      語音卡應用編程實例

      通訊地址:遼河油田油建二公司人教科張輝 郵編:124012
      電子郵件:zhanghui@lh.cnpc.com.cn

      目前電話語音產品已在各方面得到廣泛應用,常用的語音卡具有4線或8線通道,可以同時處理4線或8線電話的請求。以下介紹利用語音卡實現計算機自動應答的醫療及養老帳戶金語音查詢系統。
      系統功能
      當外線電話打入時,計算機自動檢測到振鈴信號,并開始播放提示音,同時開始接收用戶的電話按鍵信息。用戶通過電話按鍵選擇查詢類別、輸入身份證號碼、查詢年度,計算機根據接收的信息從后臺ORACLE數據庫中取得查詢結果數據,并將相應帳戶金額數據進行語音合成,再通過語音卡的相應外線電話通道播放查詢結果,例如:"姓名張三 年度1999您的醫療帳戶金余額是一千二百三十四元五角六分 上年利息一百二十三元 統籌金劃入二十三元四角 個人繳納二十八元五角 帳戶內報銷八百零八元八角八分"。用戶端電話接聽所查帳戶數據的語音信號。
      編程思路
      系統應劃分為6個運行階段:
      1、 初始化語音卡、連接數據庫,等待外線電話打入。檢測到振鈴后進入下一階段。
      2、 接收用戶選擇的查詢類別。
      播放提示音:"歡迎使用,查詢醫療帳戶請撥1,查詢養老帳戶請撥2,查詢離退休金請撥3"。用戶選擇1-3后進入下一階段。默認選擇為1。
      3、 接收用戶輸入的身份證號碼。
      播放提示音:"請您輸入身份證號碼"。用戶輸入后,系統判斷數據庫中是否存在此身份證號碼,如果存在,則進入下一階段。否則提示重新輸入。
      4、 接收用戶輸入查詢年度。
      播放提示音:"請您輸入查詢年度"。用戶輸入后,生成查詢條件,取得查詢數據。進入下一階段。
      5、 合成及播放姓名語音。
      6、 帳戶金數額語音合成及播放。
      具體實現
      由于電話語音卡的編程接口以windows動態鏈接庫(TW8VID32.DLL)方式提供,可以使用目前常用的可視化開發工具,如:delphi ,vb, pb, visual c++等。下面以PB環境舉例說明。
      首先建立一個新的application ,一個新的窗口yyk,在application的open事件中,連接后臺ORACLE數據庫,并對語音卡進行初始化。設置窗口的定時器。也可以在窗口yyk中設置一些代表各個通道當前狀態的提示文本,在系統響應用戶按鍵時可以隨時更新提示文本,以反映各通道的工作狀態。

      函數聲明Global external functions ,以及常量定義
      FUNCTION int TV_Installed() library "tw8vid32.dll"
      SUBROUTINE TV_Initialize() library "tw8vid32.dll"
      SUBROUTINE TV_Disable() library"tw8vid32.dll"
      FUNCTION int TV_ChannelType(int chno) library"tw8vid32.dll"
      FUNCTION int TV_OffHookDetect(int chno) library"tw8vid32.dll"
      FUNCTION int TV_RingDetect(int chno) library"tw8vid32.dll"
      ......................略
      詳細的函數聲明附錄在最后。

      定義結構ch_stru
      {    string Fname //通道放音文件名
          int wstate //通道狀態
          int jieduan //運行階段
          int cx_select //查詢類型
          string sfzhm //身份證號碼
          string nd //查詢年度
          string xingmin //姓名
          string sentence //通道放音字符 }

      定義全局變量ch_stru channel[8]
                  int chnum
      定義application的open事件
      integer i
      string ls_startupfile
      l_startupfile = "yyk.ini"
      //設置數據庫事務對象參數
      sqlca.DBMS = ProfileString (l_startupfile, "database", "dbms", "")
      sqlca.database = ProfileString (l_startupfile, "database", "database", "")
      sqlca.userid = ProfileString (l_startupfile, "database", "userid", "")
      sqlca.dbpass = ProfileString (l_startupfile, "database", "dbpass", "")
      sqlca.logid = ProfileString (l_startupfile, "database", "logid", "")
      sqlca.logpass = ProfileString (l_startupfile, "database", "LogPassWord", "")
      sqlca.servername = ProfileString (l_startupfile, "database", "servername", "")
      sqlca.dbparm = ProfileString (l_startupfile, "database", "dbparm", "")
      connect; //連接數據庫
      if sqlca.sqlcode <> 0 then
      MessageBox ("不能連通數據庫", sqlca.sqlerrtext)
      return
      end if
      open(yyk)
      if timer(0.06,yyk)=-1 then
      MessageBox ("錯誤提示","設置定時器失敗, 程序不能執行!")
          return
      end if
      chnum=tv_installed()
      if chnum<=0 then
      MessageBox ("錯誤提示","未安裝語音卡!")
      else
          tv_initialize() //初始化語音卡
          if chnum>8 then
              chnum=8
          end if
          initchannel () //初始化各通道
      end if
      //application的open事件定義結束

      定義函數initchannel (),初始化各通道結構channel[i]
      for i=1 to 8
          channel[i].FName="welcome.tw"
          channel[i].wstate=WS_FREE
          channel[i].jieduan=1
          channel[i].cx_select=1
          channel[i].sfzhm=''
          channel[i].nd=''
          channel[i].xingmin=''
          channel[i].sentence=" "
          if i>chnum then
              channel[i].chtype = CT_EMPTY
          else
              channel[i].chtype=tv_channelType(i -1) //判斷通道類型,外線或內線或空
          end if
      next
      //退出應用時,使語音卡無效。
      if chnum>0 then
          tv_disable()
      end if
      disconnect using sqlca ; //取消連接數據庫

      //在窗口yyk的timer事件中處理各通道的請求
      int i
      for i=1 to chnum
                  if channel[i].chtype=1 then
                      //如果是外線通道,處理請求
                      externalyyk (i) //自定義函數
                  end if
      next

      自定義函數externalyyk (int chno)定義如下:
      // 函數externalyyk ()開始
      long retval
      integer DtmfVal,temp
      unsignedinteger sigtype
      double num
      string strRet, password,yyk_path,xm_temp
      CHOOSE CASE channel[chno].jieduan
      case 1 //選擇查詢類別
             
      CHOOSE CASE channel[chno].wstate
          CASE WS_FREE
              if tv_ringdetect(chno -1) > 1 then //檢測到振鈴
                  channel[chno].wstate=WS_STARTFILE
                  tv_offhookctrl(chno -1) //控制摘機
                  tv_flushdtmf(chno -1) //清空某通道的雙音多頻碼(dtmf)
          end if
          case WS_STARTFILE
      //開始播放提示音,"歡迎使用,查詢醫療帳戶請撥1,查詢養老帳戶......"            
                  f_start_file(chno,WS_ONFILE)
      //自定義函數f_start_file(int chno ,int next_state) 定義如下:
      //        long retval
      //啟動某通道文件放音
      //    retval=tv_startplayfile(ch_no -1,channel[ch_no].FName,0,300000)
      //        if retval<=0 then
      //            tv_hangupctrl(ch_no -1) //如果啟動放音失敗則掛斷
      //             channel[ch_no].wstate=WS_FREE
      //             channel[ch_no].jieduan=1
      //            設置提示音文件
      //             channel[ch_no].FName="welcome.tw"
      //        else
      //             否則改變通道狀態標志
      //             channel[ch_no].wstate=next_state
      //        end if
      //       
      //        return 1
      case WS_ONFILE
              //如果檢測到忙音,則停止放提示音,并控制掛斷。
              if tv_monitorbusy(chno -1,SIG_BUSY1,5)<>0 or tv_monitorbusy(chno -1,SIG_BUSY2,5)<>0 then
                  tv_stopplayfile(chno -1)
                  channel[chno].wstate=WS_FREE
                  tv_hangupctrl(chno -1)
                  channel[chno].jieduan=1
              else
              //否則繼續播放剩余提示音
                  retval=tv_playfilerest(chno -1)
                  if retval<=0 then //如果提示音播放完畢
                      //設置等待接收雙音多頻碼DTMF的時間為35秒
                      tv_starttimer(chno -1,35)
                      //準備轉到接收雙音多頻碼DTMF
                      channel[chno].wstate=WS_WAITDTMF
                  else
                      DtmfVal=tv_getdtmfchar(chno -1) //檢測用戶按鍵信息
                      if DtmfVal<>-1 then
                          tv_stopplayfile(chno -1) //檢測到按鍵,停止播放提示音
                          channel[chno].wstate=WS_WAITDTMF
                          if char(DtmfVal)<>'*' and char(DtmfVal)<>'#' then
                              channel[chno].DtmfStr=""
                              channel[chno].DtmfStr=channel[chno].dtmfstr+char(dtmfval)
                              if len(channel[chno].dtmfstr)>=1 then
                                  channel[chno].wstate=WS_STARTFILE
                                  channel[chno].jieduan=2 //準備轉到身份證輸入部分
                                  channel[chno].FName="srsfzhm.tw" //設置提示音文件,提示輸入身份證
                                  if integer(left(channel[chno].dtmfstr,1)) > 3 or integer(left(channel[chno].dtmfstr,1)) < 1 then
                                      channel[chno].cx_select=1 //默認選擇為1
                                  else
                                      channel[chno].cx_select=integer(left(channel[chno].dtmfstr,1))
                                  end if
                              end if
                          end if
              end if
                  end if
              end if
          case WS_WAITDTMF
              DtmfVal=tv_getdtmfchar(chno -1) //檢測用戶按鍵信息
              if DtmfVal<>-1 then //檢測到按鍵
                  channel[chno].wstate=WS_WAITDTMF
                  if char(DtmfVal)<>'*' and char(DtmfVal)<>'#' then
                      channel[chno].DtmfStr=""
                      channel[chno].DtmfStr=channel[chno].dtmfstr+char(dtmfval)
                      if len(channel[chno].dtmfstr)>=1 then
                          channel[chno].wstate=WS_STARTFILE
                          channel[chno].jieduan=2 //準備轉到接收身份證號部分
                          channel[chno].FName="srsfzhm.tw" //設置放音文件名,提示輸入身份證號碼
                          if integer(left(channel[chno].dtmfstr,1)) > 3 or integer(left(channel[chno].dtmfstr,1)) < 1 then
                              channel[chno].cx_select=1 //默認選擇為1(查詢醫療帳戶)
                          else
                              channel[chno].cx_select=integer(left(channel[chno].dtmfstr,1))
                          end if
                      end if
                  end if            
                 
              else //未檢測到用戶按鍵信息
                  if tv_monitorbusy(chno -1,SIG_BUSY1,5)<>0 or tv_monitorbusy(chno -1,SIG_BUSY2,5)<>0 then
                      channel[chno].wstate=WS_FREE //檢測到忙音,掛機,改變通道狀態為空閑
                      tv_hangupctrl(chno -1)
                  else
                      if tv_timerelapsed(chno -1)<0 then
                          channel[chno].wstate=WS_FREE //等待接收Dtmf數據碼超時,掛機
                          tv_hangupctrl(chno -1)
                      end if
                  end if
              end if
          end choose
      case 2 //獲取身份證號部分
             
      CHOOSE CASE channel[chno].wstate
          case WS_STARTFILE
              f_start_file(chno,WS_ONFILE)
      case WS_ONFILE
      //........省略,與前面類似
          case WS_WAITDTMF
      //........省略,與前面類似
          case WS_GETDTMF
      //..............省略
                  if len(channel[chno].dtmfstr)=15 then
                      channel[chno].sfzhm=channel[chno].dtmfstr //得到身份證號碼(15位)
                      //準備轉到查詢數據庫中是否存在此身份證號部分
                      channel[chno].wstate=WS_looksfzhmfromdb
                  end if
          case WS_looksfzhmfromdb
              channel[chno].a1=0
              //判斷數據庫中是否存在所輸的身份證號碼
              choose case channel[chno].cx_select
                  case 1 //從數據庫中醫療帳戶表中查找
                      //a1>=1表示數據庫中存在所輸的身份證號碼
                      channel[chno].a1=f_count_yiliao(channel[chno].sfzhm)
                  case 2 //從數據庫中養老帳戶表中查找
                      channel[chno].a1=f_count_yanglao(channel[chno].sfzhm)
                  case 3 //從數據庫中離退休表中查找
                      channel[chno].a1=f_count_lituixiu(channel[chno].sfzhm)
              end choose
              //如果數據庫中存在所輸的身份證號碼
                      if channel[chno].a1 >= 1 then
                          //從數據庫中獲取姓名
                          choose case channel[chno].cx_select
                              case 3
                                  channel[chno].xingmin=f_getxingmin_lituixiu(chno)
                              case 2
                                  channel[chno].xingmin=f_getxingmin_yanglao(chno)
                              case 1
                                  channel[chno].xingmin=f_getxingmin_yiliao(chno)
                          end choose
                              channel[chno].wstate=WS_STARTFILE
                              channel[chno].jieduan=4 //準備轉到接收查詢年度部分
                              channel[chno].FName="srnd.tw" //設置放音文件名,提示輸入查詢年度
                      else
                          //數據庫中不存在所輸的身份證號碼
                              channel[chno].wstate=WS_STARTFILE
                              channel[chno].jieduan=2 //準備轉到接收身份證號碼部分
                              //設置放音文件名,身份證號碼有誤或為找到,請重輸
                              channel[chno].FName="nosfzhm.tw"
                      end if   
          end choose
      case 4 //獲取年度部分
      CHOOSE CASE channel[chno].wstate       
          case WS_STARTFILE
              f_start_file(chno,WS_ONFILE)
      case WS_ONFILE
              //........省略,與前面類似
          case WS_WAITDTMF
              //........省略,與前面類似
          case WS_GETDTMF
              //........省略,與前面類似
              channel[chno].dtmfstr=channel[chno].dtmfstr+char(DtmfVal)
              if len(channel[chno].dtmfstr)=4 then //如果接收到四位代表年度的按鍵
                  channel[chno].wstate=WS_retrievedatafromdb //轉到檢索數據部分
              end if
          case WS_retrievedatafromdb
                  channel[chno].nd=channel[chno].dtmfstr //賦值年度
                  if channel[chno].cx_select=1 then //查詢醫療帳戶
                      if integer(left(channel[chno].dtmfstr,4)) < 1996 then
                          channel[chno].dtmfstr='1996'
                          channel[chno].nd='1996'
                      end if
                      if integer(left(channel[chno].dtmfstr,4)) > year(today()) then
                          channel[chno].dtmfstr=string(today(),"yyyy")
                          channel[chno].nd=string(today(),"yyyy")
                      end if                
                      //檢索帳戶內數據,例如上年余額,利息,統籌金劃入,個人交納,帳戶內報銷等
                      f_getdata_yiliao(chno)
      //自定義函數f_getdata_yiliao(int i_chno)定義如下
      //real aa1,aa2,aa3,aa4,aa5,aa6
      //string sfz,s_nd
      //sfz=channel[i_chno].sfzhm
      //s_nd=channel[i_chno].nd
      // SELECT "QA39"."SNYE",
      // "QA39"."SNLX",
      // "QA39"."DWHR",
      // "QA39"."GRJN",
      // "QA39"."ZHNBX"
      // INTO :aa2,
      // :aa3,
      // :aa4,
      // :aa5,
      // :aa6
      // FROM "QA39"
      // WHERE ( "QA39"."SFZHM" = :sfz ) AND
      // ( "QA39"."SJ" = :s_nd ) ;
      //        aa1 = aa2 + aa3 + aa4 + aa5 - aa6
      //channel[i_chno].a1=Round(aa1,2)
      //channel[i_chno].a2=Round(aa2,2)
      //channel[i_chno].a3=Round(aa3,2)
      //channel[i_chno].a4=Round(aa4,2)
      //channel[i_chno].a5=Round(aa5,2)
      //channel[i_chno].a6=Round(aa6,2)
      //return 1
                      channel[chno].wstate=WS_STARTFILE
                      channel[chno].jieduan=5 //準備轉到播放姓名部分
                      channel[chno].FName="ndxm.tw"     //提示音文件,提示音"您的姓名"
                  end if
                  //養老帳戶機離退休金省略
                  ....
      END CHOOSE
      case 5 //播放姓名語音
      CHOOSE CASE channel[chno].wstate
          CASE WS_STARTFILE
              //播放姓名語音"您的姓名"
              f_start_file(chno,WS_ONFILE)
      case WS_ONFILE
              f_on_file(chno,WS_startoutputxingmin)
      //自定義函數f_on_file(int ch_no,int next_state)定義如下:
      //long retval
      //    if tv_monitorbusy(ch_no -1,SIG_BUSY1,5)<>0 or tv_monitorbusy(ch_no -1,SIG_BUSY2,5)<>0 then
      //            tv_stopplayfile(ch_no -1)
      //             channel[ch_no].wstate=WS_FREE
      //            tv_hangupctrl(ch_no -1)
      //             channel[ch_no].jieduan=1
      //             channel[ch_no].FName="welcome.tw"
      //        else
      //             retval=tv_playfilerest(ch_no -1) //繼續播放剩余提示音
      //            if retval<=0 then
      //                 channel[ch_no].wstate=next_state
      //            end if
      //        end if
      //        return 1
          CASE WS_startoutputxingmin
              password="12345678" //語音合成庫口令
              yyk_path="" //語音合成庫路徑,當前路徑
              temp=PasswordDetect(password,yyk_path)
              if temp < 0 then //如果語音合成庫出錯,則掛機
                  tv_hangupctrl(chno -1)
                  channel[chno].wstate=WS_FREE
                  channel[chno].jieduan=1
                  channel[chno].FName="welcome.tw"
              else
                  xm_temp=trim(channel[chno].xingmin)
                  retval=TV_StartPlayCh(chno -1,xm_temp) //播放姓名語音
                  if retval < 0 then //如果播放姓名語音出錯,掛機
                      tv_hangupctrl(chno -1)
                      channel[chno].wstate=WS_FREE
                      channel[chno].jieduan=1
                      channel[chno].FName="welcome.tw"
                  else
                      channel[chno].wstate=WS_onoutputxingmin
                  end if
              end if
          case WS_onoutputxingmin
              if tv_monitorbusy(chno -1,SIG_BUSY1,5)<>0 or tv_monitorbusy(chno -1,SIG_BUSY2,5)<>0 then
                  tv_stopplaych(chno -1)
                  channel[chno].wstate=WS_FREE
                  tv_hangupctrl(chno -1)
                  channel[chno].jieduan=1
                  channel[chno].FName="welcome.tw"
              else
                  retval=tv_playchrest(chno -1) //繼續播放姓名語音剩余部分
                  if retval<=0 then //播放姓名語音完畢
                      choose case channel[chno].cx_select
                          case 1 //yiliao
                              channel[chno].wstate=WS_yiliao_nd
                              channel[chno].jieduan=7 //準備轉到播放醫療帳戶數據部分
                              channel[chno].FName="nd.tw" //設置放音文件名,提示所查年度
                          case 2
                              .....
                          case 3
                              .....
                      end choose
                  end if
              end if        
      end choose
      case 6 //播放離退休金數據略

      case 7 //播放醫療帳戶數據
      CHOOSE CASE channel[chno].wstate
          case WS_yiliao_nd
              f_start_file(chno,WS_yiliao_on_nd) //播放年度提示語音
          case WS_yiliao_on_nd       
              f_on_file(chno,WS_yiliao_nd_data)
          case WS_yiliao_nd_data
              f_start_year(chno,channel[chno].nd,WS_yiliao_on_nd_data) //播放年度數據語音
          case WS_yiliao_on_nd_data       
              f_onmoney(chno,WS_yiliao_a1,"ye.tw")        
      //自定以函數f_onmoney(int ch_no,int next_state,string fname)如下:        
      //long     retval
      //        if tv_monitorbusy(ch_no -1,SIG_BUSY1,5)<>0 or tv_monitorbusy(ch_no -1, SIG_BUSY2,5)<>0 then
      //             channel[ch_no].wstate=WS_FREE
      //            tv_stopplayfile(ch_no -1)
      //            tv_hangupctrl(ch_no -1)
      //             channel[ch_no].jieduan=1
      //             channel[ch_no].FName="welcome.tw"
      //        else
      //             retval=tv_playsentencerest(ch_no -1) //繼續播放剩余的放音字符
      //            if retval<=0 then
      //                 channel[ch_no].wstate=next_state
      //                 channel[ch_no].FName=fname
      //            end if
      //        end if
      //        return 1        
          case WS_yiliao_a1
              f_start_file(chno,WS_on_yiliao_a1)
      case WS_on_yiliao_a1
              f_on_file(chno,WS_yiliao_a1_data)
          case WS_yiliao_a1_data
              f_startmoney(chno,channel[chno].a1,WS_on_yiliao_a1_data)
      //自定以函數f_startmoney(int ch_no,real data_a,int next_state)如下:
      //long retval
      //double num
      //        num=double(data_a)/1.0
      // 賦值生成的放音字符串,makemoney(num)對給定的數生成xx千x百X十X元X角X分放音字符
      //        channel[ch_no].sentence=makemoney(num)
      //        播放帳戶金額語音
      //        retval=tv_playsentence(ch_no -1,channel[ch_no].sentence)
      //        if retval<=0 then //         播放帳戶金額語音失敗
      //             channel[ch_no].wstate=WS_FREE
      //            tv_hangupctrl(ch_no -1)
      //             channel[ch_no].jieduan=1
      //             channel[ch_no].FName="welcome.tw"
      //        else
      //             channel[ch_no].wstate=next_state
      //        end if
      //        return 1
      //自定以函數makemoney(real num)
      //string strTmp
      //string strRet
      //double yuan, jiao, fen
      //if money=0 then
      //    strRet=char(2)
      //    strRet=strRet+char(19)
      //    return strRet
      //end if
      //strRet=""
      //strTmp=space(60)
      //if money<0 then
      //    strRet=strRet+char(18)
      // money=abs(money)
      //end if
      //yuan=truncate(money,0)
      //money=(money - yuan)*10.0
      //jiao=truncate(money,0)
      //money=(money - jiao)*10.0
      //fen = truncate(money,0)
      //if (yuan>0) then
      //    tv_MakeSentence(yuan,strTmp) //生成多文件放音字符串
      //    strRet=strRet + strTmp
      ////    strRet=strRet + strTmp + char(19) //元
      //end if
      //if jiao=0 then
      //    if fen>0 then
      //        strRet=strRet+char(2)+char(fen+2)+char(21)
      // end if
      //else
      //    strRet=strRet+char(jiao+2)+char(20) // 角
      //    if fen>0 then
      //        strRet=strRet+char(fen+2)+char(21) // 分
      //    end if
      //end if
      //return strRet       
          case WS_on_yiliao_a1_data
              f_onmoney(chno,WS_yiliao_a2,"snye.tw")
      //播放"上年余額"數據語音
          case WS_yiliao_a2
              f_start_file(chno,WS_on_yiliao_a2)
      case WS_on_yiliao_a2
              f_on_file(chno,WS_yiliao_a2_data)
          case WS_yiliao_a2_data
              f_startmoney(chno,channel[chno].a2,WS_on_yiliao_a2_data)
          case WS_on_yiliao_a2_data
              f_onmoney(chno,WS_yiliao_a3,"snlx.tw")
      //播放"上年利息"數據語音等
          case WS_yiliao_a3
      ....
          case WS_on_yiliao_a3_data
                  retval=tv_playsentencerest(chno -1)
                  if retval<=0 then
                      channel[chno].wstate=WS_STARTFILE
                      channel[chno].jieduan=1
                      channel[chno].FName="welcome.tw"
                  end if
      END CHOOSE
      case 8 //播放養老帳戶數據略
      END CHOOSE
      // 函數externalyyk ()結束
      應用效果
      本系統已經應用于油田采油廠,方便了人們對帳戶金的查詢。無論距離多遠,僅需使用電話就可以得到所需信息,全天24小時隨時提供查詢服務。達到了系統設計要求,具有準確性、易于操作的特點。

      附錄
      //設置函數聲明,設置系統常量
      FUNCTION int TV_Installed() library "tw8vid32.dll"
      SUBROUTINE TV_Initialize() library "tw8vid32.dll"
      SUBROUTINE TV_Disable() library"tw8vid32.dll"
      FUNCTION int TV_ChannelType(int chno) library"tw8vid32.dll"
      FUNCTION int TV_OffHookDetect(int chno) library"tw8vid32.dll"
      FUNCTION int TV_RingDetect(int chno) library"tw8vid32.dll"
      FUNCTION unsignedint TV_StartPlay(int chno,string sp,unsignedint play) library"tw8vid32.dll"
      FUNCTION unsignedint TV_StopPlay(int chno) library"tw8vid32.dll"
      FUNCTION unsignedint TV_PlayRest(int chno) library"tw8vid32.dll"
      FUNCTION long TV_StartPlayFile(int chno,string sp,long long_min,long long_max) library"tw8vid32.dll"
      FUNCTION long TV_PlayFileRest(int chno) library"tw8vid32.dll"
      FUNCTION long TV_StopPlayFile(int chno) library"tw8vid32.dll"
      SUBROUTINE TV_MakeSentence(double double_test, REF string sp) library"tw8vid32.dll"
      FUNCTION long TV_PlaySentence(int chno,string sp) library"tw8vid32.dll"
      FUNCTION long TV_PlaySentenceRest(int chno) library"tw8vid32.dll"
      SUBROUTINE TV_FlushDTMF(int chno) library"tw8vid32.dll"
      FUNCTION int TV_GetDTMFChar(int chno) library"tw8vid32.dll"
      FUNCTiON string TV_GetDTMFStr(int chno) library"tw8vid32.dll"
      FUNCTION int TV_CheckSignal(int chno,int int1,int int2) library"tw8vid32.dll"
      FUNCTION int TV_ListenerOffHook(int chno) library"tw8vid32.dll"
      SUBROUTINE TV_StartMonitor(int chno) library"tw8vid32.dll"
      FUNCTION int TV_MonitorOffHook(int chno,int tirme) library"tw8vid32.dll"
      FUNCTION int TV_MonitorBusy(int chno,int int1,int int2) library"tw8vid32.dll"
      SUBROUTINE TV_StartTimer(int chno,long timer) library"tw8vid32.dll"
      FUNCTION long TV_TimerElapsed(int chno) library"tw8vid32.dll"
      SUBROUTINE TV_SetVoicei(int num,string fn) library"tw8vid32.dll"
      FUNCTION int PasswordDetect(string password,string path) library"Playch32.dll"
      FUNCTION int TV_StartPlayCh(int chn,string sentence) library"Playch32.dll"
      FUNCTION int TV_PlayChRest(int chn) library"Playch32.dll"
      FUNCTION int TV_StopPlayCh(int chn) library"Playch32.dll"
      CONSTANT Integer WS_NULL=0
      CONSTANT Integer WS_FREE=1
      CONSTANT Integer WS_STARTFILE=2
      CONSTANT Integer WS_ONFILE=3
      CONSTANT Integer WS_WAITDTMF=4
      CONSTANT Integer WS_GETDTMF=5
      CONSTANT Integer WS_STARTSENTENCE=6
      CONSTANT Integer WS_ONSENTENCE=7
      CONSTANT Integer WS_STARTMONEY=8
      CONSTANT Integer WS_ONMONEY=9
      CONSTANT Integer WS_WAITEND=10
      CONSTANT Integer WS_looksfzhmfromdb=11
      CONSTANT Integer WS_retrievedatafromdb=12
      CONSTANT Integer WS_startoutputxingmin=13
      CONSTANT Integer WS_onoutputxingmin=14
      CONSTANT Integer WS_yiliao_nd=16
      CONSTANT Integer WS_yiliao_on_nd=18
      CONSTANT Integer WS_yiliao_nd_data =100
      CONSTANT Integer WS_yiliao_on_nd_data =101
      CONSTANT Integer WS_yiliao_a1 =40
      CONSTANT Integer WS_on_yiliao_a1 =41
      CONSTANT Integer WS_yiliao_a1_data =42
      CONSTANT Integer WS_on_yiliao_a1_data =43
      CONSTANT Integer WS_yiliao_a2 =44
      CONSTANT Integer WS_on_yiliao_a2 =45
      CONSTANT Integer WS_yiliao_a2_data =46
      CONSTANT Integer WS_on_yiliao_a2_data =47
      CONSTANT Integer WS_yiliao_a3 =48
      CONSTANT Integer WS_on_yiliao_a3 =49
      CONSTANT Integer WS_yiliao_a3_data =50
      CONSTANT Integer WS_on_yiliao_a3_data =51

      主站蜘蛛池模板: 18禁亚洲一区二区三区| 99久久亚洲综合精品成人| 亚洲欧美日韩成人综合一区| 爱性久久久久久久久| 亚洲无人区视频在线观看| 国产激情一区二区三区成人| 久热天堂在线视频精品伊人| 国产激情国产精品久久源| 亚洲熟妇在线视频观看| 少妇高潮喷水惨叫久久久久电影 | 亚洲中文久久久精品无码| 国产精品先锋资源在线看| 亚洲自拍偷拍中文字幕色| 国产精品成人一区二区三区| 蜜臀av一区二区三区日韩| 免费看的一级黄色片永久| 亚洲国产精品美日韩久久| 国产午夜视频在线观看| 久久久久青草线蕉亚洲| 欧美色欧美亚洲高清在线观看| 久久这里只有精品免费首页| 亚洲成aⅴ人在线观看| 午夜夫妻试看120国产| 成人看的污污超级黄网站免费| 亚洲精品国产一二三区| 国产激情艳情在线看视频| 亚洲中文字幕国产综合| 欧美和黑人xxxx猛交视频| 丰满无码人妻热妇无码区| 日本高清中文字幕免费一区二区| 最近中文字幕国产精品| 国产精品天天看天天狠| 精品乱码一区二区三四五区 | 蜜桃一区二区三区在线看| 亚洲中少妇久久中文字幕| 国产激情国产精品久久源| 国产无遮挡真人免费视频| 亚洲性日韩精品一区二区| 亚洲av成人久久18禁| 久久精品色妇熟妇丰满人| 日韩人妻少妇一区二区三区|