通信工程畢業(yè)設(shè)計(jì)(論文)電話語(yǔ)音查詢與控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
《通信工程畢業(yè)設(shè)計(jì)(論文)電話語(yǔ)音查詢與控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》由會(huì)員分享,可在線閱讀,更多相關(guān)《通信工程畢業(yè)設(shè)計(jì)(論文)電話語(yǔ)音查詢與控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(36頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、內(nèi)蒙古工業(yè)大學(xué)本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū) 學(xué)校代碼: 10128 學(xué) 號(hào): 030901067 本科畢業(yè)設(shè)計(jì)說(shuō)明書(shū) ( 題 目:電話語(yǔ)音查詢與控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)生姓名: 學(xué) 院:信息工程學(xué)院 系 別:通信工程 專 業(yè):電子信息工程專業(yè) 班 級(jí):通信04—2班 指導(dǎo)教師: 二 〇 〇 八 年 六 月 摘 要 電話語(yǔ)音查詢與控制系統(tǒng),它既能對(duì)用戶所有可訪問(wèn)的數(shù)據(jù)進(jìn)
2、行查詢,也可以完成對(duì)大型電機(jī)(如熱水器、空調(diào)、電冰箱)進(jìn)行重點(diǎn)的溫度監(jiān)測(cè)和遠(yuǎn)程控制,以此優(yōu)化管理,提高工作效率。 本文設(shè)計(jì)了電話語(yǔ)音查詢與控制系統(tǒng),本系統(tǒng)是由上位機(jī)(PC機(jī))、下位機(jī)(PIC16F54單片機(jī))、電話語(yǔ)音卡、執(zhí)行機(jī)構(gòu)、外線(普通市話線路)和內(nèi)線等組成。電話語(yǔ)音查詢部分是由用戶通過(guò)電信網(wǎng)撥打系統(tǒng)熱線連接電話語(yǔ)音卡或者內(nèi)線直接連接電話語(yǔ)音卡,從而檢測(cè)振鈴或摘機(jī)、錄放音、收發(fā)DTMF碼等功能,經(jīng)過(guò)上位機(jī)的數(shù)據(jù)庫(kù)給用戶提供所查詢的結(jié)果。電話語(yǔ)音控制系統(tǒng)是基于PIC16F54單片機(jī)來(lái)控制執(zhí)行機(jī)構(gòu)的運(yùn)行。 本系統(tǒng)還具有良好的可擴(kuò)展性,比如對(duì)產(chǎn)生小數(shù)據(jù)量的設(shè)備進(jìn)行遠(yuǎn)程監(jiān)測(cè)的能力;自動(dòng)遠(yuǎn)程報(bào)
3、警的功能;還能及時(shí)提醒此時(shí)該進(jìn)行哪項(xiàng)工作等等,因此本系統(tǒng)能夠有效地管理監(jiān)控中心某些工作的進(jìn)度。 關(guān)鍵詞:電話語(yǔ)音卡;PIC16F54單片機(jī);MAX232 Abstract The telephone pronunciation inquiry and the control system can not only carry on the inquiry to the data which might be enquired by the users,but it can also accomplish the key te
4、mperature monitoring and the remote control on the the large-scale electrical machinery such as the water heater, the air conditioning, and the electric refrigerator in order to optimize the management and improve work efficiency . This article has designed the telephone pronunciation inquiry and
5、 the control system,which is composed by the superior machine (pc machine), the lower position machine (the PICI6F54 monolithic integrated circuit), the telephone sound card, the implementing agency, the outwire (ordinary public opinion line) and the inside connection and so on. The telephone pronu
6、nciation inquiry is partially a kind of telephone sound card which is connected through the telecommunication network dialing system hot line by the users or the inside line directly, thereby it can detect ringing or pick, tape recorders, send and receive DTMF code, and other functions and provide t
7、he inquiry result to the users by the superior machine database. The telephone voice control system controls the implementation of the operation based on the PIC16F54 microcontroller. This system also has the good extendibility, for instance, the ability to have a remote detecting about the equip
8、ment producing the small quantity data, remote automatic alarm function, pair process carries on the long-distance monitor, automatic long-distance warning function, and also a timely reminder at this time to carry out work,etc. Therefore, the system can be effective Monitoring Centre to manage some
9、 of the progress. Key words: Telephone sound card; PIC16F54 (SCM) ;MAX232 圖表清單 圖1—1 電話語(yǔ)音查詢與控制系統(tǒng)的組成 2 圖2—1 TWI_16A十六線智能型模擬電話語(yǔ)音卡實(shí)物圖 4 表2—1 電話撥號(hào)數(shù)字對(duì)應(yīng)的高低頻率組 7 圖2—2 DTMF撥號(hào)系統(tǒng)圖 8 圖3—1 PCI插槽實(shí)物圖 10 圖3—2 PCI插槽引腳圖 11 圖3—3 PIC16F54引腳圖 12 表3—1 PIC16F54引腳排列說(shuō)明 13 圖3—4 PIC16F5
10、4外部上電復(fù)位電路圖 14 圖3—5 PIC16F54晶振電路圖 15 表3—2 晶體振蕩器外部電容選擇 15 圖3—6 RS232 (DB9)引腳 16 圖3—7 MAX232引腳圖 17 圖3—8 上、下位機(jī)連接圖 17 圖3—9 光敏二極管型光電耦合器 18 圖3—10 PIC16F54與光電偶合器的連接圖 18 圖4—1 主程序流程圖 20 圖4—2 子程序路程圖 21 引 言 隨著社會(huì)信息化程度的不斷提高,許多企業(yè)利用基于CTI技術(shù)的電話語(yǔ)音系統(tǒng)來(lái)改善服務(wù)。電話語(yǔ)音系統(tǒng)不僅可
11、以有效、快速地改善企業(yè)服務(wù),提高客戶的滿意度,而且可以降低企業(yè)營(yíng)運(yùn)成本,完善營(yíng)業(yè)網(wǎng)絡(luò)和營(yíng)銷手段,挖掘潛在用戶,增加企業(yè)的綜合競(jìng)爭(zhēng)力,是一種新型的具有市場(chǎng)前景的系統(tǒng)。 由于我們只能在控制中心才能查詢和控制整個(gè)系統(tǒng)的監(jiān)測(cè)情況,所以在工作中,特別是在檢修控制的設(shè)備時(shí),常常需要幾個(gè)人在相距較遠(yuǎn)的監(jiān)控中心和被控制設(shè)備之間來(lái)回忙碌,當(dāng)發(fā)現(xiàn)問(wèn)題時(shí)不能盡快采取有效措施予以解決從而導(dǎo)致不必要的經(jīng)濟(jì)損失。為了避免不必要的經(jīng)濟(jì)損失本文將設(shè)計(jì)交互式電話語(yǔ)音查詢和控制系統(tǒng)。它既能對(duì)該用戶所有可訪問(wèn)的數(shù)據(jù)進(jìn)行查詢,也可以完成對(duì)一些大型機(jī)電進(jìn)行重點(diǎn)的溫度監(jiān)測(cè)和遠(yuǎn)程控制,以此優(yōu)化管理,提高工作效率。它還能夠根據(jù)用戶需求擴(kuò)展
12、出一些個(gè)性化功能:添加具有可以撥發(fā)DTMF碼的用于監(jiān)測(cè)的 下位機(jī),使用DTMF碼接通并轉(zhuǎn)入信息到系統(tǒng)中,這樣使其能夠具有對(duì)那些產(chǎn)生小數(shù)據(jù)量的設(shè)備進(jìn)行遠(yuǎn)程監(jiān)測(cè)能力;自動(dòng)遠(yuǎn)程報(bào)警的功能,系統(tǒng)可以能夠定時(shí)遠(yuǎn)程提醒值班人員該進(jìn)行哪項(xiàng)工作(如夜間巡視),因此,它能夠有效地管理監(jiān)控中心某些工作的進(jìn)度。 第一章 電話語(yǔ)音查詢與控制系統(tǒng)概述 電話語(yǔ)音查詢與控制系統(tǒng)已經(jīng)廣泛應(yīng)用于話費(fèi)查詢、電話銀行、證券委托、自動(dòng)繳費(fèi)、語(yǔ)言信箱、自動(dòng)聲訊服務(wù)、民航、公共考務(wù)、鐵路等部門及各種公共場(chǎng)所自動(dòng)回答顧客提問(wèn)等領(lǐng)域。各政府部門和企業(yè)應(yīng)用語(yǔ)音卡應(yīng)用軟件,提高看辦公效率,提供
13、了全天二十四小時(shí)服務(wù),突破了地域限制,方便了廣大用戶。 1.1 電話語(yǔ)音查詢與控制系統(tǒng)工作原理 圖1—1 電話語(yǔ)音查詢與控制系統(tǒng)的組成 電話語(yǔ)音查詢和控制系統(tǒng)主要由上位機(jī)(PC機(jī))、下位機(jī)、執(zhí)行機(jī)構(gòu)、電話語(yǔ)音卡、外線(普通市話線路)和內(nèi)線等組成。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。用戶可以在任何地方使用雙音頻電話或手機(jī)等通訊工具撥打監(jiān)控中心的系統(tǒng)電話,振鈴信號(hào)通過(guò)電話網(wǎng),經(jīng)語(yǔ)音卡接口傳人上位機(jī),系統(tǒng)感知振鈴后接通電話,并播放提示音。當(dāng)用戶按下電話鍵盤(pán)后,電話語(yǔ)音卡將傳送來(lái)的雙音多頻(DTMF)碼轉(zhuǎn)換為PC機(jī)能識(shí)別的計(jì)算機(jī)命令后傳給上位機(jī),上位機(jī)進(jìn)行判斷該命令是查詢命令還是控制命令。若收到的是查詢
14、命令,則對(duì)相應(yīng)的測(cè)控?cái)?shù)據(jù)庫(kù)進(jìn)行查詢,上位機(jī)將查詢后的結(jié)果轉(zhuǎn)換合成為語(yǔ)音信息,再經(jīng)語(yǔ)音卡接口和電信網(wǎng)播放給用戶收聽(tīng);若收到的是控制命令,上位機(jī)通過(guò)通訊將此信息下傳到下位機(jī)中,驅(qū)動(dòng)相應(yīng)的執(zhí)行機(jī)構(gòu),然后上傳控制命令的執(zhí)行情況,上位機(jī)將其轉(zhuǎn)換合成為語(yǔ)音信息播放給用戶,并顯示狀態(tài)信息參數(shù),將控制日志記錄到數(shù)據(jù)庫(kù)中,以便以后的統(tǒng)計(jì)和分析。如果系統(tǒng)檢測(cè)到掛機(jī)信號(hào)或等待雙音頻信息的時(shí)間過(guò)長(zhǎng),系統(tǒng)將掛斷電話機(jī)。 1.2 Visual C++6.0語(yǔ)言簡(jiǎn)介 VC++是微軟公司開(kāi)發(fā)的一個(gè)IDE(集成開(kāi)發(fā)環(huán)境),換句話說(shuō),就是使用c++的一個(gè)開(kāi)發(fā)平臺(tái)。 VC++是Windows平臺(tái)上的C++編程環(huán)境,學(xué)習(xí)
15、VC要了解很多Windows平臺(tái)的特性并且還要掌握MFC、ATL、COM等的知識(shí),難度比較大。Windows下編程需要了解Windows的消息機(jī)制以及回調(diào)(callback)函數(shù)的原理;MFC是Win32API的包裝類,需要理解文檔視圖類的結(jié)構(gòu),窗口類的結(jié)構(gòu),消息流向等等 1、Visual C++語(yǔ)言從C語(yǔ)言發(fā)展而來(lái),產(chǎn)生與1983年,經(jīng)過(guò)20年的發(fā)展已經(jīng)逐步走向成熟,Visual C++語(yǔ)言是目前最受歡迎的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言之一。 研制Visual C++語(yǔ)言的一個(gè)首要目標(biāo)是“根除” C語(yǔ)言中存在問(wèn)題,是Visual C++語(yǔ)言成為一個(gè)更好的C語(yǔ)言。Visual C++語(yǔ)言的另一個(gè)重要
16、目標(biāo)是支持面向?qū)ο蟮某绦蛟O(shè)計(jì),因此在Visual C++中引入了類的機(jī)制。最初的Visual C++語(yǔ)言被稱為“帶類的C語(yǔ)言”,1983年正式取名為Visual C++語(yǔ)言。Visual C++語(yǔ)言的標(biāo)準(zhǔn)化工作從1989年開(kāi)始,于1994年制定了ANSI C++標(biāo)準(zhǔn)草案。以后又經(jīng)過(guò)不斷完善,成為目前的Visual C++語(yǔ)言。 2、Visual C++語(yǔ)言的主要特點(diǎn)表現(xiàn)在兩個(gè)方面:一是全面兼容C語(yǔ)言;二是支持面向?qū)ο蟮姆椒ā? Visual C++語(yǔ)言的確是一個(gè)更好的C語(yǔ)言。它保持了C語(yǔ)言的簡(jiǎn)潔、高效和接近匯編語(yǔ)言等特點(diǎn),對(duì)C語(yǔ)言的類型系統(tǒng)進(jìn)行了改革和擴(kuò)充,因此C++語(yǔ)言比語(yǔ)言更安全,Vis
17、ual C++語(yǔ)言的編譯系統(tǒng)能檢查出更多的類型錯(cuò)誤。 Visual C++最有意義的方面是支持面向?qū)ο蟮奶卣?。雖然與C語(yǔ)言的兼容使得C++語(yǔ)言具有雙重特點(diǎn),但它在概念上是和C語(yǔ)言完全不同的語(yǔ)言。 3、VC應(yīng)用程序框架提供的強(qiáng)大功能,為開(kāi)發(fā)提供了極大的方便,利用它可以很輕松地生成應(yīng)用程序的框架.許多常用功能,例如文檔的創(chuàng)建,文件的打開(kāi),保存等操作的大部分代碼都由應(yīng)用程序框架來(lái)完成.這些操作對(duì)于開(kāi)發(fā)軟件的用戶而言是透明的。通過(guò)VC自帶的強(qiáng)大的Debug調(diào)試工具,跟蹤應(yīng)用程序框架代碼,從而得出應(yīng)用程序框架操作的部分流程.具體實(shí)現(xiàn)是:利用Visual C++應(yīng)用程序生成器生成應(yīng)用程序框架代碼,啟動(dòng)
18、Classwizard,在各個(gè)類中加入欲跟蹤的接口函數(shù),編輯接口函數(shù),設(shè)置斷點(diǎn),再啟動(dòng)Debug進(jìn)行單步跟蹤調(diào)試。 第二章 TWI_16A十六線智能型模擬電話語(yǔ)音卡 電話語(yǔ)音卡,即“電腦與電話語(yǔ)音處理卡”,是CTI(Computer Telecommunication Integration)技術(shù)的產(chǎn)品。電話語(yǔ)音卡包含有模擬電話語(yǔ)音處理卡和數(shù)字中繼接口語(yǔ)音處理卡。本系統(tǒng)使用的是模擬電話語(yǔ)音卡,不管是模擬語(yǔ)音卡還是數(shù)字中繼接口語(yǔ)音卡都具有相互獨(dú)立的多個(gè)通道。作為公用電話網(wǎng)與電腦的關(guān)鍵借口設(shè)備,電話語(yǔ)音卡負(fù)責(zé)檢測(cè)和執(zhí)行各種電話信息。 圖
19、2—1 TWI_16A十六線智能型模擬電話語(yǔ)音卡實(shí)物圖 2.1電話語(yǔ)音卡的性能特點(diǎn) 采用PCI總線標(biāo)準(zhǔn),具有高穩(wěn)定性、高可靠性的特點(diǎn): 即插即用,主機(jī)資源(中斷,內(nèi)存)由操作系統(tǒng)直接分配,無(wú)需人工干預(yù); 支持雙向均衡錄音(即發(fā)話方和受話方可以同時(shí)錄音,且大小一致); 自動(dòng)完成模擬線路呼出撥號(hào)全過(guò)程,并能準(zhǔn)確識(shí)別是人或錄音電話或傳真機(jī) 的應(yīng)答; 準(zhǔn)確的主叫號(hào)碼(Caller ID)自動(dòng)偵測(cè),支持 DTMF 制式; 準(zhǔn)確的信號(hào)音檢測(cè),支持標(biāo)準(zhǔn)的或自定義的雙音頻信號(hào)音的檢測(cè),包括忙音、 撥號(hào)音、回鈴音等。信號(hào)音的頻率、占
20、空比、周期均可以軟件設(shè)置; 所有通道都有獨(dú)立的會(huì)議資源,無(wú)需配置額外的電話會(huì)議卡即可實(shí)現(xiàn)任意多方的交互式電話會(huì)議; DTMF 過(guò)濾功能。處于會(huì)議中的通道可以自動(dòng)消除來(lái)話中的 DTMF 信號(hào),從而使 DTMF 信號(hào)音不出現(xiàn)在會(huì)議中; 可對(duì)所有通道進(jìn)行線路故障監(jiān)測(cè),所有線路都可以實(shí)現(xiàn)電壓監(jiān)測(cè)(通道處于外線、搭線、音控、錄放音時(shí),可以檢測(cè)是否有電話線插入); 板卡提供支持各種電話語(yǔ)音功能(如錄音、放音、接受和發(fā)送雙音頻碼等)的底層驅(qū)動(dòng)軟件。 2.2電話語(yǔ)音卡實(shí)現(xiàn)的功能 大部分語(yǔ)音卡只有能播放實(shí)現(xiàn)錄制好的語(yǔ)言的功能,并且大部分用語(yǔ)音卡的單位對(duì)數(shù)字播報(bào)的要求多,故這部分的重點(diǎn)就是怎樣從數(shù)據(jù)
21、庫(kù)中提取有效數(shù)據(jù)以及將這些數(shù)據(jù)合成語(yǔ)音數(shù)據(jù)。其中合成語(yǔ)音數(shù)據(jù)主要也是應(yīng)用語(yǔ)音卡自帶的API函數(shù)將單個(gè)數(shù)字組合成連串的語(yǔ)音數(shù)據(jù)。在本系統(tǒng)使用的語(yǔ)音卡中,將要播放的語(yǔ)言文件利用語(yǔ)音卡API函數(shù)轉(zhuǎn)化為字符串,再利用一個(gè)API函數(shù)就可以將該字符串用語(yǔ)音通過(guò)電話播放給用戶。而每個(gè)數(shù)字有對(duì)應(yīng)的一個(gè)語(yǔ)音文件,如0,1…9分別對(duì)應(yīng)10個(gè)語(yǔ)音文件。程序在提取數(shù)據(jù)庫(kù)中的數(shù)據(jù)部分后,再分離出每個(gè)數(shù)字,然后根據(jù)數(shù)字的位置,用語(yǔ)音卡API函數(shù)將數(shù)字語(yǔ)音文件和數(shù)字單位語(yǔ)音文件組成有意義的數(shù)字語(yǔ)音字符串。 2.2.1檢測(cè)及控制函數(shù) 1、int TV_ChannelType(int); 功能:查詢某通道的類型 參數(shù)
22、:通道號(hào) 返回:參閱<通道類型常量定義> CT_INTERNAL 內(nèi)線通道 CT_EXTERNAL 外線通道 CT_EMPTY 空通道 2 、int TV_OffHookDetect(int); 功能:判斷某一內(nèi)線、搭線或者音控通道是否已掛機(jī) 參數(shù):通道號(hào) 返回值為0: 表示掛機(jī); 返回值為1: 表示摘機(jī); 返回值為2: 表示電壓位于摘機(jī)和掛機(jī)之間 3 、int_TV_RingDetect(int); 功能:判斷某一外線、搭線通道是否在振鈴 參數(shù):通道號(hào) 返回:0:沒(méi)有振鈴; >0:振鈴次數(shù) 2.2.
23、2電話語(yǔ)音卡的錄、放音功能 電話語(yǔ)音卡的錄音分為提示語(yǔ)音錄制和通話錄制兩部分。 1、提示語(yǔ)音的錄制:在用戶撥通系統(tǒng)熱線電話號(hào)碼時(shí),應(yīng)由電腦自動(dòng)播放出相應(yīng)的 提示語(yǔ)音,以提示用戶一步一步地操作。這些提示語(yǔ)音都應(yīng)該是實(shí)現(xiàn)通過(guò)程序控制語(yǔ)音卡錄制好的語(yǔ)言文件,即語(yǔ)音卡能識(shí)別的 語(yǔ)音文件,故要編寫(xiě)一個(gè)語(yǔ)音錄制與播放程序,實(shí)現(xiàn)錄音與放音功能時(shí)調(diào)用函數(shù)程序。 2、通話錄制:電話語(yǔ)音卡不僅錄制提示語(yǔ)音文件,還可以錄制與用戶的通話,負(fù)責(zé)服務(wù)臺(tái)和其它電話信號(hào)記錄下來(lái)。為了方便查詢操作,要求錄音時(shí)要把通話的詳細(xì)信息記錄下來(lái)。這些信息包括:通話內(nèi)容、通道號(hào)、主叫號(hào)碼、通話起止時(shí)間。這些信息存放在上位機(jī)數(shù)據(jù)庫(kù)中,
24、以便于事后對(duì)證查詢。 3、 錄放音函數(shù) (1) long TV_StartRecord(int, char far *, int); 功能:某一通道開(kāi)始錄音 參數(shù): 1、通道號(hào) 2、錄音緩沖區(qū)指針 3、錄音字節(jié)數(shù) 返回:上次錄音時(shí)沒(méi)有錄完的字節(jié) (2) long TV_StopRecord(int); 功能: 強(qiáng)制停止某一通道的錄音 參數(shù): 通道號(hào) 返回: 停止錄音時(shí)還沒(méi)有錄完的字節(jié)數(shù) 說(shuō)明: 某一通道錄音沒(méi)有結(jié)束時(shí)可以用此函數(shù)強(qiáng)制停止錄音。 (3) long TV_ StartPlay(int, char far *
25、 , int) 功能:某一通道開(kāi)始放音 參數(shù):1.通道號(hào) 2.放音緩沖區(qū)指針 3.放音字節(jié)數(shù) 返回:上次放音時(shí)沒(méi)有完成的字節(jié)數(shù) (4) long TV_ StopPlay (int) 功能: 強(qiáng)制停止某一通道的放音 參數(shù): 通道號(hào) 返回: 停止放音時(shí)還沒(méi)有放完的字節(jié)數(shù) 說(shuō)明: 某一通道放音沒(méi)有結(jié)束時(shí)可以用此函數(shù)強(qiáng)制停止放音 2.2.3電話語(yǔ)音卡接受和發(fā)送雙音頻碼的功能 雙音多頻信號(hào)(DTMF)是由組(fb)和高頻組(fa)兩組頻率信號(hào)
26、構(gòu)成,每個(gè)數(shù)字信號(hào)由低頻組和高頻組的任意一個(gè)疊加而成。雙音多頻信號(hào)(DTMF),電話系統(tǒng)中電話機(jī)與交換機(jī)之間的一種用戶信令,通常用于發(fā)送被叫號(hào)碼。雙音多頻的撥號(hào)鍵盤(pán)是44的矩陣,每一行代表一個(gè)低頻,每一列代表一個(gè)高頻。每按一個(gè)鍵就發(fā)送一個(gè)高頻和低頻的正弦信號(hào)組合,比如1相當(dāng)于697和1209赫茲(Hz)。交換機(jī)可以解碼這些頻率組合并確定所對(duì)應(yīng)的按鍵。根據(jù)CCITT的建議,DTMF的編譯碼定義如表1所示, 表2-1 電話撥號(hào)數(shù)字對(duì)應(yīng)的高低頻率組 數(shù)字鍵盤(pán) 高頻組/ Hz 1209 1336 1477 1633 低頻組/ Hz 697 1 2 3 A 77
27、0 4 5 6 B 852 7 8 9 C 941 * 0 # D 1、 DTMF信號(hào)的應(yīng)用 DTMF 信號(hào)即雙音多頻信號(hào),用于電話語(yǔ)音系統(tǒng)來(lái)代替號(hào)盤(pán)脈沖信號(hào)。如圖2-2 所示。 主 叫 用 戶 電 話 語(yǔ) 音 卡 上 位 機(jī) 圖2—2 DTMF撥號(hào)系統(tǒng)圖 主叫用戶摘機(jī)按鍵撥號(hào)后,電話號(hào)碼所對(duì)應(yīng)的DTMF信號(hào)通過(guò)電話線傳到電話語(yǔ)音卡中的DTMF接受電路,電話語(yǔ)音卡識(shí)別被叫電話號(hào)碼后,傳到上位機(jī)播放提示語(yǔ)音。DTMF信號(hào)還用于自動(dòng)控制系統(tǒng),如果把DTMF的發(fā)送電路用于主控系統(tǒng),接受電路用于被控系統(tǒng),就可以方便地組成有線或無(wú)線通信
28、系統(tǒng),如圖2所示,其通道數(shù)視需要而定,16通道以內(nèi)每通道只需編一位號(hào)碼即可,若需要更多通道,則可象電話號(hào)碼編號(hào)一樣編為兩位或兩位以上的號(hào)碼。 2、DTMF碼函數(shù) (1) int TV_ DtmfAbsent(int) 功能:獲得某一通道檢測(cè)到的某個(gè)按鍵按下的時(shí)間長(zhǎng)短 參數(shù):通道號(hào) 返回: >0,表示某個(gè)按鍵正在被按 (2) int TV_ GetDTMFChar (int); 功能: 獲取某一通道接收到的一個(gè)DTMF碼 參數(shù): 通道號(hào) 返回:接收到的 DTMF碼 說(shuō)明:如果返回-1,則表示沒(méi)有接收到DTMF碼 (3) int TV_ ReceiveCalling
29、ID(int, char far * ) 功能:取出主叫號(hào) 參數(shù):1. 通道號(hào) 2.存放主叫號(hào)碼的緩沖區(qū) 返回:接收的碼 2.3電話語(yǔ)音卡的模塊應(yīng)用 電話語(yǔ)音卡的模塊應(yīng)用包括外線、內(nèi)向、搭線、聲控、錄放音等部分。 1.外線:相當(dāng)于一部電話機(jī),對(duì)此“電話機(jī)”的操作由電腦來(lái)控制,對(duì)其進(jìn)行的操作可對(duì)比對(duì)普通電話機(jī)的操作。 2.內(nèi)線:一般作為坐席使用,語(yǔ)音卡對(duì)于內(nèi)線的功能類似于交換機(jī),這部“交換機(jī)”的操作由電腦來(lái)控制,對(duì)于內(nèi)線的操作,可對(duì)比交換機(jī)的操作。 3.搭線:監(jiān)聽(tīng),錄音。搭接在電話線路上,可以根據(jù)線上電壓的變化來(lái)判
30、斷被監(jiān)聽(tīng)方電話的摘掛機(jī),一般據(jù)此啟動(dòng)錄音程序,以及其他相關(guān)操作。 4.聲控:監(jiān)聽(tīng),錄音。與搭線應(yīng)用相似,不同點(diǎn)在于它根據(jù)線上聲音是否滿足其門限來(lái)判斷摘掛機(jī),從而進(jìn)行錄音及其他操作。 5.錄放音:接放音線(一頭是RJ11,也就是電話口那個(gè)水晶頭;一頭是音源輸入/輸出口,也就是插耳機(jī)或邁克的口),錄音模塊可以接邁克錄音,放音模塊可以接音箱放音。 第三章 電話語(yǔ)音查詢與控制系統(tǒng)的硬件部分 3.1電話語(yǔ)音卡與上位機(jī)的通信 在該系統(tǒng)中電話語(yǔ)音卡是電信網(wǎng)與上位機(jī)(PC機(jī))通信橋梁,它與電信網(wǎng)的連接是通過(guò)串口線引出接線盒(也就
31、是37轉(zhuǎn)25線),該接線盒能接16個(gè)RJ11接口,用來(lái)插水晶頭。與上位機(jī)連接直接把電話語(yǔ)音卡的數(shù)據(jù)插槽插到PC機(jī)的PCI插槽中,所以下面主要介紹上位機(jī)的PCI插槽。 3.1.1 PCI插槽簡(jiǎn)介 PCI插槽是一種由英特爾(Intel)公司1991年推出的用于定義局部總線的標(biāo)準(zhǔn)。此標(biāo)準(zhǔn)允許在計(jì)算機(jī)內(nèi)安裝多達(dá)10個(gè)遵從PCI標(biāo)準(zhǔn)的擴(kuò)展卡。最早提出的PCI總線工作在33MHz頻率之下,傳輸帶寬達(dá)到133MB/s(33MHz 32bit/s),基本上滿足了當(dāng)時(shí)處理器的發(fā)展需要。隨著對(duì)更高性能的要求,1993年又提出了64bit的PCI總線,后來(lái)又提出把PCI 總線的頻率提升到66MHz。下面圖中白
32、色的為PCI插槽。 圖3—1 PCI插槽實(shí)物圖 3.1.2 PCI插槽引腳 圖3—2 PCI插槽引腳圖 PCI信號(hào)定義說(shuō)明: 1.AD[31:0](PCIADDRESS/DATABUS)地址與數(shù)據(jù)總線訊號(hào),在FRAME#啟動(dòng)后地址才有效,在PCLK第一個(gè)CLOCK動(dòng)作初始化時(shí),FRAME#動(dòng)作后,輸出為地址與數(shù)據(jù),寫(xiě)入周期,輸入為數(shù)據(jù),讀取周期TRDY#與IRDY#會(huì)動(dòng)作,高阻抗時(shí),為數(shù)據(jù)轉(zhuǎn)換周期或RESET#動(dòng) 2.C/BE[3:0]#(PCICOMMAND/BYTEENA
33、BLES) FRAME#啟動(dòng)后,CLOCK第一個(gè)CLOCK,周期為PCI命令,再下一個(gè)周期為允許命令,命令在FRAME#后有效,數(shù)據(jù)在RDY#與IRDY#后有效 3.DEVSEL#(PCIDEVSELSELECT)確定外部外圍連結(jié)之響應(yīng)訊號(hào),高阻抗時(shí),為停止周期或RESET#動(dòng)作時(shí) 4.FRAME#(PCICYCLEFRAME)PCI總線起始訊號(hào) 5.IRDY#(INITIATORREADY)數(shù)據(jù)讀取寫(xiě)入訊號(hào) 6.LOCK#(PCIBUSLOCK)總線鎖住訊號(hào) 7.PAR(PCIBUSPARITY)地址與位傳送之同位檢錯(cuò)訊號(hào) 8.PCLK(PC
34、ICLOCK)PCI時(shí)脈訊號(hào) 9.REQ[4:0]#(PCIBUSREQUEST)PCI總線需求訊號(hào) 10.RESET#(RESET)系統(tǒng)重置訊號(hào) 11.SERR#(SYSTEMERROR)系統(tǒng)錯(cuò)誤偵測(cè)訊號(hào)可產(chǎn)生NMI不可屏蔽中斷 12.STOP#(PCIBUSSTOP)PCI總線放棄或重試數(shù)據(jù)傳送之訊號(hào) 13.TRDY#(TARGETREADY)PCI總線數(shù)據(jù)讀取傳送訊號(hào) 3.2 PIC16F54單片機(jī) PIC16F54是一種低成本、高性能、8位、全靜態(tài)和基于閃存的CMOS單片機(jī)。它采用的RISE構(gòu)架僅有33條簡(jiǎn)單指令。它的性能大大高于同等價(jià)位
35、的其他產(chǎn)品。PIC16F54裝備的特殊功能降低了系統(tǒng)成本和所需功耗。上電復(fù)位(POR)和器件復(fù)位定時(shí)器(DRT)使其不再需要外部復(fù)位電路。有四種振蕩器配置可供選擇,包括節(jié)省功耗的LP(低功耗)振蕩器和節(jié)省成本的RC振蕩器。節(jié)省功耗的休眠模式、看門狗定時(shí)器和代碼保護(hù)功能會(huì)增加系統(tǒng)的成本和功能,但會(huì)增加系統(tǒng)的可靠性。 圖3—3 PIC16F54引腳圖 3.2.1 PIC16F54單片機(jī)的主要特性 集成CMOS靜態(tài)設(shè)計(jì)方案 8位數(shù)據(jù)總線 ROM大?。?K字 內(nèi)部RAM大小:80字節(jié) 工作電壓:2.3V~6.3V
36、 工作頻率:0~20MHz 上電復(fù)位 四種可選震蕩器: RF------低成本RC振蕩器 LP------低功耗低速晶振器 XT------標(biāo)準(zhǔn)晶振/諧振器 HF------高速晶振/諧振器 數(shù)據(jù)保存時(shí)間>40年 12個(gè)I/O口引腳 3.2.2 PIC16F54單片機(jī)的引腳說(shuō)明 表3-1 PIC16F54引腳排列說(shuō)明 名稱 功能 輸 入類 型 輸出類 型 說(shuō) 明 RA0-RA3 RB0-RB5 RA0-RA3RB0-RB5 TTL CMOS 雙向I/O引腳
37、 RB6/ICSPCLK RB6 TTL CMOS 雙向I/O引腳 ICSPCLK ST — 串行編程時(shí)鐘 RB7/ICSPDAT RB7 TTL CMOS 雙向I/O引腳 ICSPDAT ST CMOS 串行編程I/O T0CKI T0CKI ST — Timer0 時(shí)鐘輸入。必須連到 VSS 或 VDD,不使用時(shí)可以降低電 流消耗。 / Vpp ST — 低電平有效器件復(fù)位./Vpp引腳上的電壓不能超過(guò) Vpp,以避免意外進(jìn)入編程模式。 VPP HV — 編程電壓輸入 OSC1/CLKIN OSC1 XT
38、AL — 振蕩器晶振輸入 CLKIN ST — 外部時(shí)鐘源輸入 OSC2/CLKOUT OSC2 — XTAL 振蕩器晶振輸出。在晶振模式連接到晶體或諧振器。 CLKOUT — CMOS 在 RC模式,OSC2引腳可以輸出CLKOUT,其頻率為OSC1的 1/4。 VDD VDD 電源 — 邏輯電路和 I/O 引腳的正向電源 VSS VSS 電源 — 邏輯電路和 I/O 引腳的接地參考點(diǎn) 圖注: I=輸入 I/O=輸入/輸出 CMOS=CMOS 輸出O=輸出 -=未用 XTAL=晶體輸入/輸出 ST=施密特觸發(fā)器
39、輸入 TTL=TTL輸入 HV=高電壓 3.2.3 PIC16F54單片機(jī)的外圍電路 1、上電復(fù)位 (POR) 外部上電復(fù)位電路如線圖(對(duì)于VDD 緩慢上電的情況): 圖3—4 PIC16F54外部上電復(fù)位電路圖 ① 僅當(dāng)V上電速率緩慢時(shí),才需要外部上電復(fù)位電路。當(dāng)V掉電時(shí),二極管D 幫助電容迅速放電; ② 當(dāng)引腳由于靜電放電或電超載被擊穿時(shí),阻值為100到1 k的R1 將限制電流從外部電容 C流入引腳。 2、 PIC16F54單片機(jī)的晶體電路 單片機(jī)是一種時(shí)序電路,必須供給脈沖信號(hào)才能正常工作,在單
40、片機(jī)內(nèi)部已集成了振蕩器,使用晶體振蕩器,接17、18腳。 OSC1:振蕩器晶振輸入。 OSC2:振蕩器晶振輸出。 在晶振模式連接到晶體或諧振器。 圖3—5 PIC16F54晶振電路圖 V=3.0V~5.0V 表3-2晶體振蕩器外部電容選擇 晶振頻率 C1 C2 HF 20MHz 5pF~10pF 10pF~20pF 10MHz 10pF~50pF 20pF~100pF 4MHz 10pF~50pF 20pF~100pF XT 10MHz 10pF~30pF 10pF~50pF
41、4MHz 10pF~50pF 20pF~100pF 1MHz 10pF~30pF 20pF~50pF LF 1MHz 3pF~5pF 3pF~5pF 455KHz 10pF~30pF 20pF~50pF 32KHz 10pF~20pF 15pF~30pF 3.2.4 利用RS232實(shí)現(xiàn)上位機(jī)與下位機(jī)的通信 1、RS-232簡(jiǎn)介 RS-232標(biāo)準(zhǔn)是美國(guó)EIA(電子工業(yè)聯(lián)合會(huì))與BELL等公司一起開(kāi)發(fā)的1969年公布的通信協(xié)議。目前在PC機(jī)上的COM接口,9芯D型插座如下圖所示圖3-6。 圖3—6 RS232 (
42、DB9)引腳 RS232 (DB9)引腳定義: 1腳 :DCD ,載波檢測(cè)。主要用于Modem通知計(jì)算機(jī)其處于在線狀態(tài),即Modem檢測(cè)到撥號(hào)音, 處于在線狀態(tài)。 2腳:RXD,此引腳用于接收外部設(shè)備送來(lái)的數(shù)據(jù);在你使用Modem時(shí),你會(huì)發(fā)現(xiàn)RXD指示燈在閃爍,說(shuō)明RXD引腳上有數(shù)據(jù) 進(jìn)入。 3腳:TXD,此引腳將計(jì)算機(jī)的數(shù)據(jù)發(fā)送給外部設(shè)備;在你使用Modem時(shí),你會(huì)發(fā)現(xiàn)TXD指示燈在閃爍,說(shuō)明計(jì)算機(jī)正在通過(guò)TXD引腳發(fā)送數(shù)據(jù)。 4腳:DTR,數(shù)據(jù)終端就緒;當(dāng)此引腳高電平時(shí),通知Modem可以進(jìn)行數(shù)據(jù)傳輸,計(jì)算機(jī)已經(jīng)準(zhǔn)備好。 5腳:GND,信號(hào)地;此位不
43、做過(guò)多解釋。 6腳:DSR,數(shù)據(jù)設(shè)備就緒;此引腳高電平時(shí),通知計(jì)算機(jī)Modem已經(jīng)準(zhǔn)備好,可以進(jìn)行數(shù)據(jù)通訊了。 7腳:RTS,請(qǐng)求發(fā)送;此腳由計(jì)算機(jī)來(lái)控制,用以通知Modem馬上傳送數(shù)據(jù)至計(jì)算機(jī);否則,Modem將收到的數(shù)據(jù)暫時(shí)放入緩沖區(qū)中。 8腳:CTS, 清除發(fā)送;此腳由Modem控制,用以通知計(jì)算機(jī)將欲傳的數(shù)據(jù)送至Modem。 9腳:RI , Modem通知計(jì)算機(jī)有呼叫進(jìn)來(lái),是否接聽(tīng)呼叫由計(jì)算機(jī)決定 在 TXD和RXD上:RS-232對(duì)邏輯電平的規(guī)定是很特別,規(guī)定如下: 邏輯1(MARK)=-3~-15V 邏輯0(SPACE) =+3~+
44、15
2、 用RS-232實(shí)現(xiàn)上位機(jī)(PC機(jī))與下位機(jī)(單片機(jī))的通信
由上可知RS-232是用正負(fù)電壓來(lái)表示邏輯狀態(tài),單片機(jī)串行口采用正邏輯TTL電平,這樣單片機(jī)和PC機(jī)的COM1或者COM2就不能直接連接。為了能夠同計(jì)算機(jī)接口或終端的TTL器件連接,必須在RS-232與TTL電路之間進(jìn)行電平與邏輯關(guān)系的轉(zhuǎn)換。目前較為廣泛地使用集成電路轉(zhuǎn)換器件,如MC1488、SN75150芯片可完成TTL電平到EIA電平轉(zhuǎn)換,MC1489、SN75154芯片可實(shí)現(xiàn)EIA電平到TTL電平轉(zhuǎn)換,而MAX232芯片可完成TTL 45、路及負(fù)電源電路),只需要外接5個(gè)容量為0.1uF~1uF的小電容即可完成兩路RS-232與TTL電平之間轉(zhuǎn)換。MAX232引腳圖如圖3-8所示:
圖3—7 MAX232引腳圖
通過(guò)MAX232來(lái)完成電路連接,PC機(jī)串行口經(jīng)MAX232電平轉(zhuǎn)換后與PIC16F54串行口相連,電路圖如圖所示;
圖3—8 上、下位機(jī)連接圖
3.2.5下位機(jī)的受控器
在該系統(tǒng)中下位機(jī)是用來(lái)控制執(zhí)行機(jī)構(gòu)的運(yùn)行,由于單片機(jī)輸出的是微弱的 電信號(hào),而執(zhí)行機(jī)構(gòu)是強(qiáng)電物,所以讓下位機(jī)控制執(zhí)行機(jī)構(gòu)運(yùn)行要得用可控硅來(lái)控制執(zhí)行機(jī)構(gòu)的開(kāi)關(guān)。本系 46、統(tǒng)使用光電耦合器來(lái)控制執(zhí)行機(jī)構(gòu)的運(yùn)行。
1、光電耦合器的概述
光電耦合器是一種以光為耦合媒介傳輸電信號(hào)的電-光-電轉(zhuǎn)換隔離器件。它由發(fā)光源和受光器兩部分組成 ,彼此間用透明絕緣體隔離。在光電耦合器的輸入端加電信號(hào)使發(fā)光源發(fā)光 ,光的強(qiáng)度取決于激勵(lì)電流的大小。此光照射到受光器上后 ,因光電效應(yīng)產(chǎn)生光電流 ,由受光器輸出端輸出。這樣就實(shí)現(xiàn)了電-光-電轉(zhuǎn)換。
圖3—9光敏二極管型光電耦合器
2、 下位機(jī)與光電耦合器的連接
圖3—10 PIC16F54與光電偶合器的連接圖
光電耦合器和下位機(jī)的PB4引腳連接,當(dāng) 47、PB4來(lái)一個(gè)高電平時(shí)光電耦合器的發(fā)光源導(dǎo)通,從而發(fā)光源發(fā)光。由于下位機(jī)輸出的是5V電壓,而光電耦合器的發(fā)光源最高電壓為2V,所以中間加一個(gè)阻抗降低二極管收到的電壓。此光照射到受光器上后 ,因光電效應(yīng)產(chǎn)生光電流 ,由受光器輸出端輸出。光電耦合器的另一端接的是執(zhí)行機(jī)構(gòu),執(zhí)行機(jī)構(gòu)可以是熱水器、空調(diào)等。
3.3本章小結(jié)
這一章所講的內(nèi)容主要是電話語(yǔ)音卡與上位機(jī)的通信,PIC16F54單片機(jī)及其它兩端的通信過(guò)程。首先介紹了電話語(yǔ)音卡與上位機(jī)(PC機(jī))之間的通信,在電話語(yǔ)音系統(tǒng)中電話語(yǔ)音卡是核心部分,因?yàn)闆](méi)有電話語(yǔ)音卡就不能實(shí)現(xiàn)自動(dòng)應(yīng)答功能,從而就實(shí)現(xiàn)不了電話語(yǔ)音系統(tǒng)。其次介紹了控制部分的核心器件下位 48、機(jī)(PIC16F54單片機(jī))以及它與上位機(jī)通信過(guò)程和它控制執(zhí)行機(jī)構(gòu)的過(guò)程。
由于上位機(jī)的用的電壓表示方式與下位機(jī)的電壓表示方式不一樣,從而必須使用它們之電平轉(zhuǎn)換器,由于MAX232芯片能在單片機(jī)與PC機(jī)之間雙向轉(zhuǎn)換,所以該系統(tǒng)使用了MAX232電平轉(zhuǎn)換器。在該系統(tǒng)中下位機(jī)控制執(zhí)行機(jī)構(gòu)的運(yùn)行,而由于單片機(jī)輸出的是微弱的電信號(hào),而執(zhí)行機(jī)構(gòu)是強(qiáng)電物,所以讓下位機(jī)控制執(zhí)行機(jī)構(gòu)運(yùn)行要得用可控硅來(lái)控制執(zhí)行機(jī)構(gòu)的開(kāi)關(guān),又引入了光電耦合器。在本章中解決了整個(gè)系統(tǒng)的通信過(guò)程。
第四章 系統(tǒng)軟件部分
4.1系統(tǒng)流程圖
1、主程序流程圖
49、
圖4—1主程序流程圖
2、子程序流程圖
圖4—2 子程序路程圖
4.2 VC++中基于MFC的多線程應(yīng)用
多線程是現(xiàn)代操作系統(tǒng)中出現(xiàn)的概念。隨著面向?qū)ο缶幊趟枷牒鸵恍┟嫦驅(qū)ο蟾呒?jí)語(yǔ)言的廣泛采用,編寫(xiě)多任務(wù)的應(yīng)用程序已經(jīng)是一件很普通的工具。用進(jìn)程和線程的觀點(diǎn)來(lái)研究軟件的設(shè)計(jì)是當(dāng)今普通采用的方法。進(jìn)程和線程概念的出現(xiàn),對(duì)提高軟件的并行性有著重要的意義。現(xiàn)在的應(yīng)用軟件越來(lái)越注重多線程任務(wù)的處 50、理。因此了解多線程多任務(wù)對(duì)每個(gè)程序員都是需要了解的。
4.2.1多任務(wù)、多進(jìn)程和多線程
當(dāng)前流行的Windows操作系統(tǒng),其重要特征之一是引入了多進(jìn)程和多線程機(jī)制,支持多任務(wù)調(diào)度和處理,由此提供了多任務(wù)空間。所謂多任務(wù)通常包括兩大類:多進(jìn)程和多線程。進(jìn)程是指在系統(tǒng)中正在運(yùn)行的預(yù)告應(yīng)用程序;線程是進(jìn)程之內(nèi)獨(dú)立執(zhí)行的一個(gè)單元,是系統(tǒng)分配處理器時(shí)間資源的基本單元。一個(gè)進(jìn)程至少包括一個(gè)線程,通常將該線程稱為主線程。一個(gè)進(jìn)程從主線程的執(zhí)行開(kāi)始進(jìn)而創(chuàng)建一個(gè)戶多個(gè)附加線程,通常將該線程稱為主線程。一個(gè)進(jìn)程從主線程的執(zhí)行開(kāi)始進(jìn)而創(chuàng)建一個(gè)或多個(gè)附加線程,每個(gè)線程完成一個(gè)特定的任務(wù),多個(gè)線程并行地運(yùn) 51、行在同一個(gè)進(jìn)程中,最終完成多個(gè)任務(wù)。這就是所謂基于多線程的多任務(wù)。
1、MFC多線程分類
在 MFC中 ,線程分為兩種:用戶接口線程(User Interface Thread)和工作者線程( WorkerThread) 。前者常用來(lái)獨(dú)立地處理用戶輸入和響應(yīng)用戶事件。后者常用于任務(wù)處理不要求用戶輸入的后臺(tái)任務(wù) ,執(zhí)行這些后臺(tái)任務(wù)并不會(huì)耽擱用戶對(duì)應(yīng)用程序的使用 ,即用戶操作無(wú)需等待后臺(tái)任務(wù)的完成。用戶接口線程常用于接收用戶的輸入 ,處理相應(yīng)的事件和消息。
2、多線程的優(yōu)先級(jí)
在 Windows95 和 WindowsNT操作系統(tǒng)中 ,任務(wù)是有優(yōu)先級(jí)的 ,共有 32 級(jí) ,從 0 到 52、31 ,系統(tǒng)按照不同的優(yōu)先級(jí)調(diào)度線程的運(yùn)行。其中 ,0~15 級(jí)是普通優(yōu)先級(jí) ,線程的優(yōu)先級(jí)可以動(dòng)態(tài)變化。高優(yōu)先級(jí)線程優(yōu)先運(yùn)行 ,只有高優(yōu)先級(jí)線程不運(yùn)行時(shí) ,才調(diào)度低優(yōu)先級(jí)線程運(yùn)行 ,優(yōu)先級(jí)相同的線程按照時(shí)間片輪流運(yùn)行。16~30 級(jí)是實(shí)時(shí)優(yōu)先級(jí) ,實(shí)時(shí)優(yōu)先級(jí)與普通優(yōu)先級(jí)的最大區(qū)別在于 ,相同優(yōu)先級(jí)進(jìn)程的運(yùn)行不按照時(shí)間片輪轉(zhuǎn) ,而是先運(yùn)行的線程就先控制 CPU ,如果它不主動(dòng)放棄控制 ,同級(jí)或低優(yōu)先級(jí)的線程就無(wú)法運(yùn)行。
4.2.2 多線程同步
在有若干個(gè)線程并行運(yùn)行的環(huán)境里 ,線程之間經(jīng)常要同時(shí)訪問(wèn)一些共享資源 ,不同線程之間的同步是至關(guān)重要的。
目前流行的 Windows操作系統(tǒng) , 53、提供了幾種同步對(duì)象 ,包括臨界區(qū)、互斥量、信號(hào)量和事件等。這些同步對(duì)象能夠讓各個(gè)線程協(xié)調(diào)工作 ,實(shí)現(xiàn)同步 ,使程序運(yùn)行起來(lái)更安全。下面簡(jiǎn)要介紹這幾個(gè)同步對(duì)象。
1、臨界區(qū)
臨界區(qū)是保證在某一個(gè)時(shí)間只有一個(gè)線程可以訪問(wèn)數(shù)據(jù)的方法。使用它的過(guò)程中 ,需要給各個(gè)線程提供一個(gè)共享的臨界區(qū)對(duì)象 ,無(wú)論哪個(gè)線程占有臨界區(qū)對(duì)象 ,都可以訪問(wèn)受到保護(hù)的數(shù)據(jù) ,這時(shí)候其它的線程需要等待 ,直到該線程釋放臨界區(qū)對(duì)象為止 ,臨界區(qū)被釋放后 ,另外的線程可以強(qiáng)占這個(gè)臨界區(qū) ,以便訪問(wèn)共享的數(shù)據(jù)。注意 ,臨界區(qū)只可由單個(gè)進(jìn)程的線程使用。
2 、互斥量
互斥量與臨界區(qū)很相似 ,但是使用時(shí)相對(duì)復(fù)雜一些 ,它不僅可以 54、在同一應(yīng)用程序的線程間實(shí)現(xiàn)同步 ,還可以在不同的進(jìn)程間實(shí)現(xiàn)同步 ,從而實(shí)現(xiàn)資源的安全共享?;コ饬吭试S在任意時(shí)刻有且僅有一個(gè)線程或進(jìn)程訪問(wèn)某資源?;コ饬勘仨毺幱趦煞N狀態(tài)之一:有信號(hào)的和無(wú)信號(hào)的。當(dāng)互斥量處于有信號(hào)狀態(tài)時(shí) ,第一個(gè)等待該互斥量的線程將被喚醒 ,并重新將該互斥量置為無(wú)信號(hào)狀態(tài) ,以免多個(gè)線程被同時(shí)喚醒。在多個(gè)線程同時(shí)等待同一個(gè)互斥量對(duì)象的情況下 ,當(dāng)互斥量處于有信號(hào)狀態(tài)時(shí) ,總是優(yōu)先級(jí)最高的那個(gè)線程先被喚醒 ,優(yōu)先級(jí)低的線程被迫繼續(xù)等待。
3、信號(hào)量
信號(hào)量對(duì)象允許多個(gè)線程訪問(wèn)某個(gè)共享資源 ,采用一計(jì)數(shù)器來(lái)實(shí)現(xiàn)信號(hào)量。每當(dāng)有一個(gè)或多個(gè)資源變成可用的 ,可用的資源計(jì)數(shù)就減 1。信號(hào) 55、量能自動(dòng)地進(jìn)行測(cè)試和設(shè)置操作。當(dāng)從一個(gè)信號(hào)量請(qǐng)求資源時(shí) ,操作系統(tǒng)負(fù)責(zé)檢查該資源是否可用 ,如果可用 ,就將其計(jì)數(shù)器減 1 ,并允許線程訪問(wèn)該資源。當(dāng)計(jì)數(shù)為 0 時(shí) ,任何試圖從該信號(hào)量請(qǐng)求資源的線程都被迫等待 ,等待計(jì)數(shù)重新變成大于 0 ,這時(shí)線程才被允許訪問(wèn)信號(hào)量對(duì)象控制的資源。信號(hào)量與互斥量或臨界區(qū)是有區(qū)別的 ,通過(guò)信號(hào)量 ,可以同時(shí)有若干線程得到由一個(gè)信號(hào)量對(duì)象控制的資源的訪問(wèn)權(quán) ,而互斥量或臨界區(qū)在任意時(shí)刻只能有一個(gè)線程訪問(wèn)所控制資源。
4、事件
事件同步對(duì)象與前面的同步對(duì)象有很大的不同?;コ饬亢托盘?hào)量通常用來(lái)控制對(duì)數(shù)據(jù)或資源的訪問(wèn) ,而事件是用來(lái)發(fā)信號(hào)以通知其他的線程某一操作已 56、經(jīng)開(kāi)始或完成。有兩種不同類型的事件對(duì)象:人工重置事件和自動(dòng)重置事件。人工重置事件用于一次向多個(gè)線程同時(shí)發(fā)信號(hào)以表示某一操作已經(jīng)開(kāi)始或完成 ,而自動(dòng)重置事件用于向單個(gè)線程表明某一操作已開(kāi)始或完成。
4.3 ORACLE數(shù)據(jù)庫(kù)簡(jiǎn)介
Oracle 是以高級(jí)結(jié)構(gòu)化查詢語(yǔ)言(SQL)為基礎(chǔ)的大型關(guān)系數(shù)據(jù)庫(kù),通俗地講它是用方便邏輯管理的語(yǔ)言操縱大量有規(guī)律數(shù)據(jù)的集合。是目前最流行的客戶/服務(wù)器(CLIENT/SERVER)體系結(jié)構(gòu)的數(shù)據(jù)庫(kù)之一。
4.3.1 ORACLE數(shù)據(jù)庫(kù)特點(diǎn)
1、Oracle 7.X以來(lái)引入了共享SQL和多線索服務(wù)器體系結(jié)構(gòu)。這減少了Oracle的資源占用,并增強(qiáng)了Ora 57、cle的能力,使之在低檔軟硬件平臺(tái)上用較少的資源就可以支持更多的用戶,而在高檔平臺(tái)上可以支持成百上千個(gè)用戶。
2、提供了基于角色(ROLE)分工的安全保密管理。在數(shù)據(jù)庫(kù)管理功能、完整性檢查、安全性、一致性方面都有良好的表現(xiàn)。
3、支持大量多媒體數(shù)據(jù),如二進(jìn)制圖形、聲音、動(dòng)畫(huà)以及多維數(shù)據(jù)結(jié)構(gòu)等。
4、提供了與第三代高級(jí)語(yǔ)言的接口軟件,能在C,C++等主語(yǔ)言中嵌入SQL語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操縱。
4.3.2 ORACLE數(shù)據(jù)庫(kù)的基本指令
SQL語(yǔ)言是一種標(biāo)準(zhǔn)的語(yǔ)言,數(shù)據(jù)庫(kù)基本功能是增、刪、改、查。下面介紹Oracle數(shù)據(jù)庫(kù)基本指令:
CREATE:使用 58、該語(yǔ)句可以創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)對(duì)象;
INSERT:使用該語(yǔ)句可以在表中插入數(shù)據(jù);
SELECT:使用該語(yǔ)句可以從數(shù)據(jù)庫(kù)中檢查信息;
DELET、TRUNCATE、DROP:使用這些語(yǔ)句可以刪除數(shù)據(jù)庫(kù)對(duì)象;
UPDATE:使用該語(yǔ)句可以更新數(shù)據(jù)庫(kù)對(duì)象。
下面舉簡(jiǎn)單的例子說(shuō)明這些語(yǔ)句的使用方法:
CREATE TABLE tbl_1(
name varchar(12),
age number(3);
);
INSERT into values(Zhangsan , 20);
INSERT into values (Lisi , 22);
59、 (1)SELECT name ,age
from tbl_1;
name age
----------------------------
Zhangsan 20
Lisi 22
(2)SELECT name ,age
from tbl_1;
where age=20 ;
name age
-------------------------
Zhangsan 20
(3) SELECT age
fro 60、m tbl_1;
age
----------------------------
20
22
(4) SELECT *
from tbl_1;
name age
--------------------------
Zhangsan 20
Lisi 22
DELET from tbl_1;
TRUNCATE from tbl_1;
DROP TABLE tbl_1;
commit ;
SELECT 61、 name age+2
from tbl_1;
name age+2
--------------------------
Zhangsan 22
Lisi 24
結(jié) 論
本文將電話技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和語(yǔ)音技術(shù)結(jié)合起來(lái),構(gòu)建了一個(gè)自動(dòng)語(yǔ)音服務(wù)系統(tǒng)。它是一個(gè)綜合性的提供自動(dòng)語(yǔ)音服務(wù)的人機(jī)對(duì)話系統(tǒng),將分散的信息資源整合起來(lái),并通過(guò)一個(gè)統(tǒng)一的號(hào)碼向社會(huì)提供服務(wù)。用戶可以通過(guò)普通的固定電話或手機(jī)等移動(dòng)設(shè)備撥打特服號(hào)碼,系統(tǒng)會(huì)自動(dòng)接受產(chǎn)生應(yīng)答, 62、具有方便、快捷、高效等諸多有點(diǎn)。 本系統(tǒng)的設(shè)計(jì)采用Visual C++可視化面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言進(jìn)行軟件的程序設(shè)計(jì)完成電話語(yǔ)音系統(tǒng)判斷和查詢功能。
根據(jù)本系統(tǒng)的特點(diǎn),我們可以進(jìn)一步擴(kuò)展出一些功能:添加具有可以撥發(fā)DTMF碼用于監(jiān)測(cè)下位機(jī),使用DTMF碼接通并轉(zhuǎn)入信息到系統(tǒng)中,這樣使其能夠具有對(duì)那些產(chǎn)生小數(shù)據(jù)量的設(shè)備進(jìn)行遠(yuǎn)程監(jiān)測(cè)的能力;當(dāng)上位機(jī)處理到偏離要求的參數(shù)時(shí),通過(guò)語(yǔ)音卡向電信網(wǎng)撥發(fā)系統(tǒng)管理員的電話或手機(jī)號(hào)碼,從而形成自動(dòng)遠(yuǎn)程警報(bào)的功能;系統(tǒng)能夠定時(shí)遠(yuǎn)程提醒值班人員此時(shí)該進(jìn)行哪項(xiàng)工作,因此它能夠有效地管理監(jiān)控中心某些工作進(jìn)度。
本文在設(shè)計(jì)時(shí)由于時(shí)間倉(cāng)促,并且由于設(shè)計(jì)者能力有限,難免有 63、一些漏洞,希望各位老師指出錯(cuò)誤,我將虛心地接受并加以改進(jìn)。
參考文獻(xiàn)
[1] Laboratory for Natural Language Engineering, Department of Computer Science, University of Durham Science Site, Stockton Road, DH1 3LE Durham, UK Received: 14 May 1996 Accepted: 20 May 1997.
[2] Bearer-Independent Call Control . BT 64、 Technology Journal. Springer Netherlands. ISSN 1358-3948 (Print) 1573-1995 (Online). Volume 19, Number 2 / 2001
[3] Level Translators MAX Series Introduction.
. 2000 .Maxim Integrated Products.
[4] 王有緒,許杰,李拉成.PIC系列單片機(jī)接口技術(shù)應(yīng)用系統(tǒng)設(shè)計(jì)[M]. 北京航空航天大學(xué)出版社 . 2001
[5] 劉瑞新 . Visual C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程[M]. 機(jī)械工業(yè)出版社.2 65、002.
[6] 丁錦滔.PIC單片機(jī)速成教程 [M]. 電子制作雜志社 . 2000.
[7] 鄭莉,董淵,張瑞豐 . C++語(yǔ)言程序設(shè)計(jì)[M]. 清華大學(xué)出版社[M].2003.
[8] 裴旻. 一種電話語(yǔ)音查詢與控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).學(xué)位論文.2002 .38-41.
[9] http://
[10] 劉文海.Oracle 9i 簡(jiǎn)明教程劉文海[M]. 上海交通大學(xué)出版社[M]. 2003.
[11] 高龍.電話語(yǔ)音卡 1K . 2008-06.
[12] 楊建平.CTI技術(shù)及其應(yīng)用.微型機(jī)與應(yīng)用,200,19(18):4-7.
[13] 李強(qiáng),賈云霞. Visual C++6.0編程實(shí)踐[M]。北京:中國(guó)水利水電出版社.2004
附 錄
主程序清單
#include
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 六級(jí)上冊(cè)科學(xué)ppt課件-誰(shuí)選擇了它們-教科版
- 護(hù)理核心制度培訓(xùn)一_圖文課件
- 部編《池子與河流》課件
- SWOT分析法(非常全面)課件
- 主題班會(huì)我的成長(zhǎng)目標(biāo)課件
- 城市交通擁堵及治理總結(jié)課件
- 輸血相關(guān)性急性肺損傷課件
- 議論文的謀篇布局與論點(diǎn)的提出ppt課件
- 六級(jí)上冊(cè)科學(xué)ppt課件-地球的近鄰——月球-冀人版
- 疾病預(yù)防、冬季保暖-課件
- 中考英語(yǔ)語(yǔ)法復(fù)習(xí)之狀語(yǔ)從句ppt課件集4
- 《百分?jǐn)?shù)的意義和讀寫(xiě)》參考ppt課件
- 主題班會(huì)堅(jiān)持就是勝利課件
- 第二章--用人單位對(duì)大學(xué)生的要求概況ppt課件
- 教科版六年級(jí)科學(xué)上冊(cè)第三單元檢測(cè)卷(含答案)課件