作者:趙太飛 趙珂 路錦正 王建勤
摘要:系統采用Winbond的W78E58P單片機為控制中心,處理DIMF信號和FSK信號的接收發送、信息顯示和存儲,并依據CTSI協議與服務器通信。
著重論述鏈路層的控制技術,包括數據控制和電話控制兩個方面。該方案具有良好的靈活性、可升級性等特點。
要害詞:雙音多頻(DTMF)頻移鍵控(FSK)CTSI鏈路層 數據包
隨著中文短消息的逐步為大家熟知,短消息的使用越來越多,使用量越來越大,應用范圍也越來越廣。中文短消息正以其特有的快捷和方便,影響人們日常生活的許多方面。但你不沒有想過有一天用家里的固定電話來發送中文短消息呢?這樣的愿望很快就要實現。中國電信已在北京、上海、廣州等城市推出此項業務,相關標準也已經出臺,中興、貝爾等國內大型通信公司推出了支持中文短消息傳遞的服務器,固網短信已經開始進入百姓生活,短消息電話在今后的一段時間將會有更大的市場。
本文提及的短消息電話是在能接收來電顯示的普通電話基礎上實現的。本系統主要由DMTF信號接收發送電路、FSK信號接收發送電路、存儲器電路、顯示LCD電路和微控制器電路組成。通過電話線與支持固定網短消息業務的服務器連接,實現短消息的傳輸。本文著重從數據鏈路層探討有關數據通信的控制技術。
1 系統構成
1.1系統的硬件組成
短消息電話是指具有短消息發送和接收功能的電話。短消息服務器和短消息電話之間采用半雙工通訊方式,通過FSK(頻移鍵控)信號和DTMF(雙音多頻)信號進行數據傳輸,采用交互操作方式。短消息電話除了具有普通電話的通話功能外,還有中文顯示、信息存儲、DTMF信號、FSK信號發送接收等功能。短消息電話的功能框圖如圖1所示。
各模塊的功能如下:CMX605、CMX602模塊與電話機電路提供了DTMF和FSK信號的物理通道,實現DTMF和FSK信號的發送和接收及電話的通信功能;W78E58P單片機為控制中心,協調和控制各模塊正常工作;SST28SF02存儲器用來存儲程序代碼、用戶輸入的信息以及短消息中心傳送的消息;62256為系統正常運動提供內存;LCD顯示器和鍵盤掃描電路實現人機交互,提供友好操作界面;為了調試方便,增加了與PC串口的接口電路,使得編寫的編程可直接到目標機的RAM中運行;此外,PS2接口電路使得用戶可以利用PC機鍵盤進行中英文輸入。
1.2系統的信號流程
短消息系統主要是在話音頻率內傳送數據消息,下行信號(短消息中心到短消息終端)采用半雙工頻移鍵控FSK信號調制方式;上行信號(短消息終端到短消息中心)采用DTMF信號模式或FSK信號調制方式。上行信號采用的方式由當地服務器決定,而DTMF信號模式又分為編碼方式和非編碼方式,由具體的短消息協議確定。
短消息電話接收短消息建立在來電顯示號碼是短消息中心號碼的基礎上;發送短消息是在用戶設定了短消息中心號碼之后,所發送的信息發送到所設定的短消息中心。通信過程如下:首先建立物理鏈接通路,然后與交換機建立普通話音通道,接著通過中心號碼與短消息中心建立信息通道,短消息中心和短消息終端就可以通過消息包進行交互式通信。
短消息電話與服務器的信息交互都由服務器發送CTSI命令開始,即終端通過解釋、執行CTSI命令并回送返回值的方式進行交互。終端不主動發送內容給服務器,即使終端的主動服務申請,也是通過服務器發出服務訪問命令后遞交的。
2 數據鏈路層
2.1數據鏈路層的功能
數據鏈路層提供可靠的數據傳送,主要是將有噪聲的物理信道變成無傳輸差錯的通信通道,提供數據成幀、差錯控制和流量控制等。短消息電話中的鏈路層在電話通信方面,要實現對電話語音通路的控制、電話的來電顯示和通話等功能;在數據控制方面,完成數據包的組包和解包,控制終端和短消息中心交互時序,對數據包進行糾錯并對出錯數據包進行重發處理;在電話機控制方面,解析應用層的命令,實現對物理層的控制以及對數據包的自動接收和存儲功能。
2.2數據鏈路層的協議
短消息電話中數據鏈路層采用的差錯控制類似于停止等待協議,并采用重發機制保障終端和服務器在偶然的故障后仍有機會保持連接。數據鏈路層完成了規定次數的重發后仍然出錯時,服務器則斷開與終端的連接。
數據鏈路層的上行FSK數據包和下行FSK數據包格式如圖2所示,一個鏈路層FSK數據包包括六部分:同步引導串,由82bit交替的“01”加8bit“1”構成,具體參見CTSI協議,對于短消息電話(終端)本身來說只要讀到至少50bit交替出現的“01”以及同步結束字符后,即可以認為同步建立;消息類型,指明信息內容的類型,根據協議規定分為一般類型和非凡類型,終端根據不同的類型進行相應的處理;消息長度,指消息特征號的字節數(=1)加消息層信息內容的字節數;信息特征號,目前僅使用十六進制01一種消息特片號,其余保留以利于拓展新的電信業務;消息層信息內容,由消息層負責解析,包含一條CTSI操作命令,最大長度不大于254字節;校驗和,用于數據傳送過程中的糾錯,取值為該數據包中除同步引導串值外的所有字節的和,按256取模,再取補后得到的值。
由于終端還可以DTMF形式上送數據,因此DTMF數據包又分為:編碼格式的DTMF上行命令響應信息包、非編碼格式的DTMF上行命令響應信息包和非編碼格式的DTMF上行信息包。上行DTMF命令響應消息包(編碼方式)是終端對SMC的FSK數據的響應信息包;上行DTMF命令響應信息包(非編碼方式)也是終端對SMC的FSK數據的響應信息包,主要采用了非編碼方式,此種返回信息包目前只用于信息下載指令中,用于描述指令的解釋執行情況,具體內容詳見協議;上行DMTF上行信息包(非編碼方式)是終端對SMC的指令響應,具體的信令如表1所示。
表1 數據鏈路層上行DTMF上行信令包的格式
2.3數據鏈路層的電話功能
短消息電話的鏈路層要實現電話功能,因此基本的電話功能都由鏈路層和物理處理,主要分為:來電顯示功能、短消息數據包的接收、連接到服務器、基本的電話通話功能和按鍵撥號功能。同時要配合電話不同功能的界面顯示。
來電顯示功能和短消息數據包的接收都是對FSK數據包的解析,兩者的不同之處在于具體的數據格式:來電顯示數據是在第一聲和第二聲振鈴之間傳過來的FSK數據,而短消息數據包是在建立了短消息通信通道后在線路上傳輸的FSK數據包。這里主要針對符合Bell202標準的FSK來電顯示信號進行闡述。FSK來電顯示信號數據包有兩種格式:單制式信息包括日期、時間、電話號碼、姓名。在第一聲與第二聲振鈴之間將數據包解析,并將日期、時間、電話號碼等信息在LCD上顯示,實現來電顯示功能。
連接到服務器,由軟件控制電話機摘機、撥號到服務器,服務器機響應撥號,建立物理通道的連接。當服務器摘機并發出回應信號CAS音,在規定時間內終端回應DTMF的“A”信號,與服務器建立數據通路,進行數據包交互通信。然后解析服務器的數據,執行服務器下行的指令,與用戶進行交互。
基本的電話通話功能和按鍵撥號功能是一部電話必須具備的功能,主要由電路硬件完成。鏈路層主要控制液晶顯示與之相配合的操作界面。當用電話撥號時,屏幕弱出電話撥號界面,有按鍵按下時控制發送和相應的DTMF音,同時在屏幕上顯示按下的按鍵值。在電話處于通話狀態時,屏幕顯示相應的界面,提示用戶通話時間及撥入或撥出電話的號碼等信息。
3 數據鏈路層中的控制技術
3.1數據鏈路層的數據控制技術
數據鏈路層的數據分為上行和下行數據,本系統中將其分開處理,上行數據在主函數中循環調用處理,而下行數據在中斷中處理。
上行數據包處理流程圖如圖3所法。對數據的處理是在主函數中,因此可有適當的等待和延遲,但必須在協議規定的時間內完成對數據包的處理,它對時間的要求不如中斷對時間要求那么苛刻。因為上傳數據包的過程是終端主動上載數據信息,鏈路層對數據包的多少十分清楚,而且在服務器接收到數據包后,肯定應答數據說明數據包傳輸是否正確,而服務器應答數據包是下行數據在中斷中處理。因此,在上傳一個數據包后可以等待服務器的應答信號,以確定是否要重發當前數據包。整個處理過程主要應當處理好與中斷服務程序的配合,以及用戶界面的操作,控制相對比較簡單。
下行數據包處理流程如圖4所示,處理過程比較復雜。由于服務器隨時都有呼叫終端的可能性,使得下行數據傳輸具有隨機性。因此這種情況最適于在中斷中進行處理。中斷處理又有其自身的特點,如中斷函數不能進行參數傳遞并且沒有返回值;中斷函數中調用其他函數時,被調用函數所使用的寄存器組必須與中斷函數相同等。這就決定了中斷函數中的處理技術與主函數中的處理技術相比受到了很大的限制。中斷函數首先對鏈路層各個狀態下的超時定時器進行處理,當有定時器超時時,根據協議規定進行相應的超時處理,通常的處理是控制終端掛機;數據包處理過程中,與物理層建立循環隊列緩沖區,每10毫秒中斷時從緩沖區中取數據,假如緩沖區中有數據則連續地取出數據直到隊列中的數據取完,而當循環隊列緩沖區沒有數據時,則直接退出中斷,等待下次中斷再進行取數據處理;按協議規定方式從物理層中取出完整數據包后,通過校驗和對數據包進行校驗,假如數據包傳輸不正確,則向服務器應答“D0”,請求服務器重發,當數據包傳輸正確時,則向服務器應答“D1”,發完應答數據后將終端置于接收數據狀態并啟動重發超時定時器。中斷處理數據過程中,要與主函數進行配合在液晶屏上顯示用戶提示信息。另外在中斷函數中最好不進行液晶以及Flash存儲器的操作,因類輕易導致函數的雙重調用,這是由中斷處理的自身特點決定的。
3.2數據鏈路層的電話功能控制技術
短消息電話中數據鏈路層的控制技術包括對各種電話功能的控制,例如按鍵、摘機、掛機、重撥、免提等電話功能的軟件功能都在鏈路層實現。由于電話功能的控制不是本文的論述重點,在此僅以摘機撥打電話過程為例。在掛機狀態下,當鏈路層檢測到摘機信號時,鏈路層控制液晶顯示撥出電話界面,然后在中斷中檢測按鍵并將按鍵值以DTMF信號發送到交換機,同時界面顯示用戶按下的按鍵值。而話音信號處理主要由物理電路和交換機來完成,當檢測到掛機信號時,鏈路層控制終端進行軟件掛機,對使用時的變量進行初始化,回到掛機狀態,完成了電話的撥號、通話和掛機的過程。其它的電話功能主要根據實際操作中的需要進行相應的處理,包括鏈路層中對FLASH存儲器的操作這些過程,主要注重與其他程序模塊的配合以及符合實際處理的需求。
此方案的短消息電話在實際中證實是可行的,已經在南京、上海、深圳等地與當地的短消息服務器進行調試,調試結果證實工作正常。另外,此方案使用的外圍器件還比較多,假如采用針對短消息電話開發的專用芯片可以大大簡化外圍器件,節約生產成本。整個開發過程采用C語言,將整個工程移植到其他的硬件,只需要替換工程中硬件的驅動程序即可。開發過程中,采用軟硬件開發同步進行,在PC機上搭建軟件仿真環境,軟件開發可以不需要完全依靠硬件開發的進度,大大縮短了開發周期,且有利于多人合作。
進入討論組討論。
|
新聞熱點
疑難解答