freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

電話計時計費系統(tǒng)的設計與實現(xiàn)-資料下載頁

2025-08-24 16:24本頁面

【導讀】識不斷增強,人們對各種計費系統(tǒng)的需求越來越多。計費系統(tǒng)按照規(guī)模。的大小,可分為大、中、小型三類。小型的電話計費系統(tǒng)通常是指公共。目前在中國電信市場上,各大電信運營商充分利用現(xiàn)。公話營業(yè)廳采用話費預付押金、電腦自動結(jié)。算等超市型方式進行營業(yè),使運營過程簡單、快捷、準確。并在此基礎上分析了系統(tǒng)開發(fā)過程中。標以及在本項目開發(fā)過程中所用到的術(shù)語。介紹了系統(tǒng)的配置環(huán)境并根據(jù)需求設計。了系統(tǒng)的基本框架。能及模塊間的調(diào)用過程。本系統(tǒng)具有靈活的配置費率的功能,論文中介。最長匹配的算法。介紹了系統(tǒng)的計費流程并給出了線路在用戶撥打電話。過程中的狀態(tài)機模型。在論文的最后介紹了管理中心和各計費端點之間。何貢獻均已在論文中作了明確的說明并表示了謝意。申請學位論文與資料若有不實之處,本人承擔一切相關(guān)責任。研究生在校攻讀學位期間論文工作的知識產(chǎn)權(quán)單位屬北京郵電大學。第二章系統(tǒng)結(jié)構(gòu)。技術(shù)保證系統(tǒng)對計費信號響應的實時性。

  

【正文】 使用延時函數(shù) 如 Sleep, WaitSingleEvent 等延時函數(shù)或信號量函數(shù),這種方法實現(xiàn)簡單,但因 為這些函數(shù)在系統(tǒng)中執(zhí)行的優(yōu)先級很低,因此精確度不高。 北京郵電大學碩士研究生學 位論文 一般時控函數(shù) VC 程序員都會利用 Windows 的 WM TIMER 消息映射來進行簡單的時間控制: 首先調(diào)用函數(shù) SetTimer0 設置定時間隔,如 SetTimer(0, 200,NULL)目口為設置 200毫秒 的時間間隔;然后在應用程序中增加定時響應函數(shù) OnTimer0,并在該函數(shù)中添加 響應的處理語句,用來完成時間到時的操作。 這種定時方法是非常簡單的,而且充分的利用了 Windows 的消息機制,不需要 重新建立線程。但其定時功能如同 SleepOi 函數(shù)的延時功能一樣,精度較低,只可以 用來實現(xiàn)諸如位圖的動 態(tài)顯示等對定時精度要求不高的情況,而在精度要求較高的 條件下,這種方法應避免采用。 在最初的系統(tǒng)設計中采用了這種方法,但在進行系統(tǒng)測試時發(fā)現(xiàn)每進行 10 秒鐘 的計時就會出現(xiàn) 1秒鐘的誤差。因此將這種計時的方法取消,采用下面介紹的方法。 精度時控函數(shù) 在要求誤差不大于 1 毫秒的情況下,可以采用 GetTickCountO 函數(shù),該函數(shù)的 返回值是 DWORD 型,表示以毫秒為單位的計算機啟動后經(jīng)歷的時間間隔。使用下 面的編程語句,可以實現(xiàn) 1秒的精確定時,其誤差小于 1毫秒。 DWORD dwStart,dwStop; //起 始值和終止值 dwStop 2 GetTickCount0; while(TRUE) { dwStart=dwStop; //上一次的終止值變成新的起始值 ..//此處添加相應控制語句 do { dwStop 2 GetTickCount0; )while(dwStop 一 1000dwStart), } 在本系統(tǒng)的設計中,采用了這種設計方法。主進程單獨啟動一個計時的線程,線 程的主函數(shù)如上所示。計時線程每過 1秒鐘會向主線程發(fā)送一個脈沖信號。這種方 法以犧牲 CPU 的效率來換取計時的準確性,因為計時的線程在整個 系統(tǒng)運行過程中 一直在空轉(zhuǎn),會占用部分 CPU 的時間,造成資源浪費。但這種方法精確度較高,在 北京郵電大學碩士研究生學位論文 進行系統(tǒng)測試時沒有出現(xiàn)計時誤差的現(xiàn)象。 高精度時控函數(shù) 對于一般的實時控制,使用 GetTickCount0 函數(shù)就可以滿足精度要求,但要進 一步提高計時精度,就要采用 QueryPerformanceFrequency0 函數(shù)和 QucryPerformanceCounter0 函數(shù)。這兩個函數(shù)是 vc 提供的僅供 Windows 9X 使用的 高精度時間函數(shù),并要求計算機從硬件上支持高精度計時器。 QueryPerformanceFrequency0 函數(shù)和 QueryPerformanceCounter()函數(shù)的原型為: BOOL QueryPerformanceFrequency(LARGE_INTEGER+lpFrequency); BOOL QueryPerformanceCounter(LARGE INTEGER+lpCount); 數(shù)據(jù)類型 LARGE INTEGER 既可以是一個作為 8 字節(jié)長的整型數(shù),也可以是 作為兩個 4字節(jié)長的整型數(shù)的聯(lián)合結(jié)構(gòu),其具體用法根據(jù)編譯器是否支持 64位而定。 在進行計 時之前,應該先調(diào)用 QueryPerformanceFrequency0 函數(shù)獲得機器內(nèi)部計時 器的時鐘頻率。接著,在需要嚴格計時的事件發(fā)生之前和發(fā)生之后分別調(diào)用 QueryPerformanceCounter0 函數(shù),利用兩次獲得的計數(shù)之差和時鐘頻率,就可以計算 出事件經(jīng)歷的精確時間。 因為第三種方法簡單且已經(jīng)滿足了系統(tǒng)的需求所以沒有采用這種方法。 4. 1. 3 硬件驅(qū)動 下面首先介紹一下關(guān)于驅(qū)動的一些基本概念。 一般驅(qū)動程序設計為查詢式驅(qū)動程序和中斷式驅(qū)動控制程序兩種形式。 查詢式驅(qū)動程序簡單,但這種方法使的應用 程序~次只處理一個字節(jié)數(shù)據(jù),許 多時候 CPU 處于等待查詢中,效率低。 中斷式設備驅(qū)動程序在設備提出請求后,專門進行數(shù)據(jù)處理,提高了吞吐量, 在等待設備時不占用 CPU,相對于查詢式來說比較復雜,但效率比較高。 在進行驅(qū)動程序設計時,為更好的了解設備驅(qū)動程序的編寫機制,還應該介紹 一下如內(nèi)存地址, I/ 0地址,內(nèi)存映射,端口映射等概念。 一個 PC 機上的設備可以被定位于兩種獨立的地址空間:內(nèi)存地址和 I/ 0地址。 內(nèi)存映射:將一個硬件設備定位于內(nèi)存空間,稱為內(nèi)存映射。這樣可以像訪問 內(nèi)存一樣訪問外設,采用的命令也是內(nèi) 存訪問指令。 端口映射:將一個硬件設備定位于 I/ 0 地址空間范圍,稱為端口映射,這樣, 北京郵電大學碩士研究生學位論文 設備只能通過 I/ O命令來訪問。 內(nèi)存地址空間和 I/ O地址空間占用的地址范圍不同。 在本系統(tǒng)中根據(jù)采用的硬件設備的特點采用查詢式驅(qū)動程序設計,程序利用匯 編程序直接訪問硬件的 I/ O端口。 本系統(tǒng)采用的計費卡連接 10位地址線, 8位數(shù)據(jù)線,提供讀寫兩種操作。因為 計費卡上提供讀寫兩種鎖存器,所以對同一話路讀寫操作訪問的地址不同。對卡的 操作分為: 讀操作:摘機信號,掛機信號,反極信號,所撥號碼。 控制操作:接通話路,鎖斷話路。 在系統(tǒng)中,單獨啟動一個線程來不斷的讀取硬件設備的信息。當用戶摘掛機或 者撥號時,此線程將信號轉(zhuǎn)化為消息發(fā)送至主進程。 4. 2 狀態(tài)機模型 在整個計費過程中,從用戶繳納押金話路接通到用戶通話結(jié)束話路關(guān)閉,整個 系統(tǒng)要經(jīng)過 6個狀態(tài),分別為鎖斷狀態(tài),掛機狀態(tài),準掛機狀態(tài),摘機狀態(tài),撥號 狀態(tài),通話狀態(tài),狀態(tài)之間的轉(zhuǎn)換如下圖所示: 圖 43狀態(tài)機 系統(tǒng)接收的輸入信號分別為: 來自計時器的脈沖消息: WM TIMEOUT 來自硬件驅(qū)動的用戶摘機消息: WM OFFHOOK 來自硬件驅(qū)動的 用戶掛機消息: WM ONHOOK 2R 北京郵電大學碩士研究生學位論文 來自硬件驅(qū)動的用戶撥號消息: WM DIAL 來自硬件驅(qū)動的話路反極消息: WM CONNECT 來自硬件驅(qū)動的話路鎖斷消息: WM LOCK 來自硬件驅(qū)動的話路接通消息: WM UNLOCK 這些信號都是以 Windows 消息的形式加入主線程的消息隊列中,主線程為每一 個話路保存一個狀態(tài)機,根據(jù)輸入的信號完成狀態(tài)轉(zhuǎn)換并實現(xiàn)計費。 4. 2. 1 鎖斷狀態(tài) 每一個話路在初始狀態(tài)下都處于鎖斷狀態(tài)。計費卡將話路切斷,話機不能連接 到電信局的交換機上 ,用戶不能撥打電話。在鎖斷狀態(tài)下只能接收接通消息 WM 切 qLOcK。接通消息的觸發(fā)方式有兩種: 第一種情況是在營業(yè)員通過系統(tǒng)界面執(zhí)行接通話路的操作以后,系統(tǒng)會向底層 的驅(qū)動發(fā)送一個接通消息,硬件驅(qū)動執(zhí)行接通話路的操作成功后會發(fā)送回一個話路 接通的消息。狀態(tài)機收到此消息后進入掛機狀態(tài)。 第二種情況是用戶掛機以后。如果用戶在摘機或撥號狀態(tài)掛機或者沒有設置話 單鎖斷功能 (即用戶在通話狀態(tài)下掛機時話路立即鎖斷,用戶每次只能打一次電話。 要打下一個電話營業(yè)員必須重新接通話路 )的情況下在通話狀態(tài)下掛機,系統(tǒng)會立 即進入 準掛機狀態(tài)并向底層驅(qū)動發(fā)鎖斷信號,驅(qū)動將話路鎖斷后發(fā)鎖斷信號給主程 序。話路進入鎖斷狀態(tài)并設置計時器,當計時器超時后發(fā)接通信號給驅(qū)動,驅(qū)動接 通話路發(fā)接通信號,主進程收到后將話路置于掛機狀態(tài)。這樣做主要為了防止用戶 盜打電話。因為交換機與計費器存在不同步的問題,一般計費系統(tǒng)都會存在這樣的 漏洞:用戶撥號以后,迅速按下話機的叉簧,計費系統(tǒng)會檢測到掛機信號而認為用 戶已經(jīng)掛機,但當按鍵的時間很短時,掛機信號的脈沖很短,交換機檢測不到這個 掛機信號會繼續(xù)將話路接通。因此在系統(tǒng)中通過軟件強制延長掛機信號脈沖的時長 來防止以上情況的發(fā)生。望 壹富∈ D∈≥ 北京郵電大學碩士研究生學位論文 圖 44鎖斷與掛機狀態(tài) 4. 2. 2 掛機狀態(tài) 系統(tǒng)處于掛機狀態(tài)時的 SDL 圖如上所示。在這種狀態(tài)下當營業(yè)員執(zhí)行鎖斷操作 時或系統(tǒng)向驅(qū)動發(fā)送鎖斷消息后,驅(qū)動將話路鎖斷并向消息隊列發(fā)送鎖斷信號,話 路的狀態(tài)機直接回到鎖斷狀態(tài)。在用戶摘機時,底層硬件驅(qū)動線程會發(fā)送摘機信號, 此時系統(tǒng)進入摘機狀態(tài)。 4. 2. 3 摘機狀態(tài) 如果用戶摘機后沒有撥號而立即掛機,系統(tǒng)應進入到準掛機狀態(tài)。同時向底層 驅(qū)動發(fā)送鎖斷信號。驅(qū)動鎖斷話路成功后發(fā)回鎖斷信號,話路進入鎖 斷狀態(tài)。如果 摘機后用戶開始撥號,則進入撥號狀態(tài),此時如果系統(tǒng)有定時強計功能還應設置定 時器。 4. 2. 4 準掛機狀態(tài) 在摘機,撥號或沒有設置話畢鎖斷功能時的通話狀態(tài)下如果用戶掛機,會進入 此狀態(tài)并向驅(qū)動發(fā)送鎖斷信號。當驅(qū)動將話路鎖斷時,主線程會收到驅(qū)動線程發(fā)回 的鎖斷信號,話路進入鎖斷狀態(tài)并設置 500ms 的定時器,定時器超時后向驅(qū)動發(fā)送 接通信號。此狀態(tài)是一種過渡狀態(tài)。當收到其他信號時此狀態(tài)不做處理。 4. 2. 5 撥號狀態(tài) 圖 45摘機與準掛機狀態(tài) 因為本系統(tǒng)在線路進入通話狀態(tài)時才進行號碼分析,所以在撥號狀態(tài) 僅進行號 碼的存儲。在撥號狀態(tài)下如果收到反極信號會進入通話狀態(tài)。在本系統(tǒng)中有定時強 30 北京郵電大學碩士研究生學位論文 計的功能:在線路進入撥號狀態(tài)時,如果管理員設置了強計的功能,系統(tǒng)會啟動二 個定時器,用戶每撥~個號碼,都會將計時器重新清零,如果用戶長時間沒有撥號, 定時器就會超時,系統(tǒng)向自身發(fā)送一個反極消息使系統(tǒng)自動進入通話狀態(tài)。在收到 反極消息時應進行號碼分析并進行話路的權(quán)限驗證驗證此話路是否具有撥打此種業(yè) 務的權(quán)限。如果驗證失敗,則向驅(qū)動發(fā)送一個鎖斷信號,進入準掛機狀態(tài)并清除存 儲的號碼,否則進入 通話狀態(tài)進行計費。 4. 2. 6 通話狀態(tài) 圖 46撥號狀態(tài) 北京郵電大學碩士研究生學位論文 圖 4. 7 通話狀態(tài) 進入通話狀態(tài)后首先進行費率的計算,并將結(jié)果實時的顯示在界面上。在用戶 掛機后話單入庫并打印話單。 4. 3 計費 在通話狀態(tài)下需要進行費率的計算。通常計費系統(tǒng)會在用戶掛機后,根據(jù)采集 到的數(shù)據(jù)進行話費的計算工作。但在本系統(tǒng)中要求動態(tài)的在界面上顯示用戶話費的 變化情況,因此在計費部分的設計上相對較為復雜。下面介紹一下計費的數(shù)據(jù)結(jié)構(gòu) 及其算法。 4. 3. 1 業(yè)務串表 系統(tǒng)啟動時會讀取數(shù)據(jù)庫并形成一個業(yè)務串數(shù)組, 數(shù)組中的主要元素的定義為 class ServString { public: int IsThisService(cbar+pStr); pdvme: char m... pServiceStrng[]; char m__pServiceName[]; int m_ServiceNum; ) 其中 m_pServiceStrng 口保存此業(yè)務的業(yè)務特征串, m_ServiceNum 保存業(yè)務的編 號。函數(shù) IsThisService(char*pStr)判斷一個號碼是否屬于此業(yè)務,如果屬于此業(yè)務則 返回特征串的長度, 否則返回一個負數(shù)。例如,如果業(yè)務特征串為” OO”的國際長途, 當用戶輸入號碼為” 0012345678”,則函數(shù) IsThisService 返回 2。系統(tǒng)在進入通話狀 態(tài)時首先判斷此號碼的業(yè)務類型:系統(tǒng)順序查找數(shù)組當一個元素返回大于 0 的值時, 記錄下此元素的下標和返回值長度,如果到達數(shù)組的尾部則返回,否則繼續(xù)查找。 當找到下一個元素時,將此元素的特征串長度與當前紀錄的元素的特征串的長度比 較,如果大于當前元素的特征串,則將此元素作為當前元素,否則繼續(xù)查找。直到 找到一個特征串與號碼的首部匹配且長度最長的業(yè)務,作為 此號碼撥打的業(yè)務并返 北京郵電大學碩士研究生學位論文 回業(yè)務編號。 4. 3. 2 權(quán)限表 找到業(yè)務的編號以后還需要進行權(quán)限的驗證。在系統(tǒng)啟動時,建立一個二維的 數(shù)據(jù)表,其中橫向保存話路的編號,縱向保存業(yè)務的編號,當話路支持此業(yè)務時對 應的項為 true,否則為 false。如下表所示,話路 1支持市話業(yè)務,不允許撥打國內(nèi)長 途,話路 2 支持國內(nèi)長途,不支持市話。由上一步得到業(yè)務編號后,根據(jù)業(yè)務編號 和話路編號在表中查找,如果發(fā)現(xiàn)話路不支持此業(yè)務,則向驅(qū)動發(fā)送鎖斷命令將話 路鎖斷: 話路 l 話路 2 市話 true false 國內(nèi)長途 false true 4. 3. 3 計費表 因為系統(tǒng)最多支持 64 路話路。所以系統(tǒng)中定義了一個長度為 64 的數(shù)組。數(shù)組 中的數(shù)據(jù)結(jié)構(gòu)保存兩類信息:數(shù)組對應話路的配置信息和計費信息。配置信息包括 話路號,話間號,話路所對應的電話號碼 (作為主叫號碼 )等,計費信息包括被叫 號碼,業(yè)務,費率信息。費率信息的描述如下: struct ChargStruct { double dbChargNum; //每個計費周期內(nèi)收費的金額 CTime EndTime; //此費率結(jié)束的時間 int TimeSpan; //收 費的周期 int TimeSpanCount;
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1