<style id="7i3y3"></style>

      <sub id="7i3y3"><i id="7i3y3"></i></sub>

        午夜精品一区二区三区成人,中文字幕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

        主站蜘蛛池模板: 亚洲国产精品日韩专区av| 天天爽天天爽天天爽| 一本久道久久综合久久鬼色| 光棍天堂在线手机播放免费| 国产成人高清精品免费软件| 中文字幕亚洲综合久久菠萝蜜| 亚洲区中文字幕日韩精品| 人妻少妇精品久久| 亚洲二区中文字幕在线| 亚洲一区二区美女av| 熟妇的奶头又大又长奶水视频| 1精品啪国产在线观看免费牛牛| 亚洲高清国产拍精品5G| 亚洲av无码乱码国产麻豆穿越| 双乳奶水饱满少妇呻吟免费看| 无码av永久免费大全| 激情综合色综合久久丁香| 男女性高爱潮免费网站| 性人久久久久| 动漫精品中文字幕无码| 男女做aj视频免费的网站| 综合色一色综合久久网| 蜜臀av午夜精品福利| 国产在线中文字幕精品| 亚洲aⅴ天堂av在线电影| 亚洲大尺度一区二区三区| 熟妇无码熟妇毛片| 亚洲国产欧美在线人成| 免费看黄色片| 精品国产自线午夜福利| 亚洲午夜理论无码电影| 国产黄色精品高潮播放| 日韩av综合免费在线| 狠狠色丁香婷婷综合潮喷 | 亚洲欧美综合人成在线| 国产精品妇女一二三区| 视频一区视频二区视频三区 | 人妻少妇偷人无码视频| 97久久综合区小说区图片区| 99精品国产综合久久久久五月天| 黑人糟蹋人妻hd中文字幕|