仿真Modem的設(shè)計(jì)與應(yīng)用
- 期刊名字:電腦編程技巧與維護(hù)
- 文件大?。?64kb
- 論文作者:馬玉春
- 作者單位:
- 更新時(shí)間:2020-06-12
- 下載次數(shù):次
網(wǎng)絡(luò)與通信NETWORK& COMMUNICATION仿真 Modem的設(shè)計(jì)與應(yīng)用馬五春摘要電話客戶管理軟件的開發(fā)需要來電顯示。本文用Ⅴ isual Busic6.0設(shè)計(jì)了一個(gè)仿真Modem,可以非常方便地輔助電話客戶管理軟件的調(diào)試,并給出了應(yīng)用實(shí)例。關(guān)鍵詞調(diào)制解調(diào)器,AT命令,來電顯示,串行通訊或不加空格,命令中或命令間的空格會(huì)被忽略。若命令行中任引言處出現(xiàn)語法錯(cuò)誤,本行其后的內(nèi)容將祓忽略,并返回ER通訊和計(jì)算機(jī)網(wǎng)絡(luò)的高速發(fā)展,使基于電話與網(wǎng)絡(luò)的物流ROR。絕大多數(shù) Modem都使用 Hayes兼容的AT命令集,但系統(tǒng)越來越普及,如網(wǎng)上購物,電話訂貨。網(wǎng)上購物適合遠(yuǎn)距由于功能和設(shè)計(jì)的不同又稍有不同[1]。AT命令較多,這里只離,時(shí)間要求不高,一般不需要當(dāng)天送達(dá),而且,主要采用郵涉及跟本軟件相關(guān)的。寄的形式;而電話訂貨,特別是訂購?fù)把b純凈水,一般要求盡1. ATTN快送達(dá),而且,客戶群比較固定。該命令用來撥號(hào),“D”表示撥號(hào),“T”表示雙音頻方對(duì)于客戶群固定的電話客戶(以訂購?fù)把b純凈水為例),式,如字符串如果每次訂購都需要手工記錄客戶訂單,顯得比較低效,月度ATDT025-12345678;"+vbcr統(tǒng)計(jì)也比較復(fù)雜繁瑣,容易出錯(cuò)。將訂單告知外勤員工,也存表示用音頻方式撥打電話025-12345678,“;”表示電在通訊費(fèi)用較高,語音信息不清楚的問題。所以,研究開發(fā)基話接通后保持通話狀態(tài),vCr為回車符( Visual basic中內(nèi)部于短信的電話客戶管理軟件,通過座機(jī)的來電顯示,調(diào)出具有定義的常量),是AT命令結(jié)束和有效的標(biāo)志。利用通用多功相同電話號(hào)碼的客戶信息,然后,通過 Internet,利用電子郵s Communication test on Serial Port件轉(zhuǎn)短信通知的形式將訂單發(fā)送到外勤員工的手機(jī)中,充分利Systen Operation Tools Help用有線電話、 Internet和無線手機(jī),是解決這些問題的良好方田As個(gè)份◎令法。但是,該軟件的開發(fā)需要一個(gè)支持來電顯示的 Modem,而Hex: ODOA4F4B0D0A且,還需要不同的電話撥入,來產(chǎn)生不同的來電號(hào)碼。本文通Char: OK過對(duì) Modem的分析,設(shè)計(jì)了仿真Modm來替代實(shí)際的Mode-m,進(jìn)行相關(guān)軟件的開發(fā)和調(diào)試,并可用于教學(xué)系統(tǒng)中,節(jié)iskCon88929844/Tme11010500n81:peTme110135省教學(xué)經(jīng)費(fèi)。ickCount 88965906//T: 11: 01- 41二、Mdem的AT命令Cour88977442/Tme1101:52AT命令使計(jì)算機(jī)或終端與調(diào)制解調(diào)器通訊,用于設(shè)置Sena pot setting COM3: $600n8.1: CloseModem的參數(shù)、發(fā)起或終止呼叫、執(zhí)行 Modem的測(cè)試等操作,是 Hayes公司發(fā)明的。AT是 Attention的字頭,中文含義為“注意”,引起 Modem的注意,下面是命令,所以,AT又Staus: COM3: 9500 n 8稱為命令前綴。所有命令行必須由ASCI字符“AT”開始并由中國煤化工< Enter結(jié)束,AT必須同為大寫或小寫,如“At”或“aTr是不允許的。一串命令可以寫在一行里,為了便于閱讀可以加CNMHG實(shí)際數(shù)據(jù)記錄200510(61電程教巧與能護(hù)網(wǎng)絡(luò)與通信NETWORK& COMMUNICATION能計(jì)算機(jī)監(jiān)控系統(tǒng)測(cè)試軟件進(jìn)行測(cè)試, Modem接受撥叫命令持來電顯示(即支持本命令),二是座機(jī)開通來電顯示。此后,立即將命令原樣返回(現(xiàn)在,有的 Modem不返回原始命外,有的 Modem滿足第一個(gè)條件,但是,只能在某一種操作令),撥通電話平均耗時(shí)5秒左右,如果成功,則返回系統(tǒng)下,才能發(fā)送身份數(shù)據(jù)。例如,在 Windows98系統(tǒng)下支vbCrLf+“OK”+ vbCrLf;否則,返回“ ERROR”,具體結(jié)果持來電顯示,在 Windows XP下,卻沒有來電顯示。圖1所示。用 Modem撥打電話的接線方法如圖2所示,虛線所示為Modem有若干S寄存器,用來設(shè)定其工作方式計(jì)算機(jī)系統(tǒng),電話外線插入 Moderm的Line接口,話機(jī)則與ATsn?”命令用來讀S寄存器n,所有的S寄存器都可以Modem的 Phone接口相連,話機(jī)處于掛機(jī)狀態(tài),當(dāng)聽到用Mo讀?!癆TSn=x”用來將x值寫人指定的S寄存器ndem撥通電話或看到 Modem返回OK后,摘機(jī)工作即可?!癆TS0=15”表示向 Modem的S0寄存器中寫入15,使Modem響鈴15次以后再自動(dòng)摘機(jī)(如果對(duì)遠(yuǎn)程智能設(shè)備進(jìn)行測(cè)試,則一般將該參數(shù)設(shè)為3)。對(duì)于座機(jī)的來電顯示,是在第二次響鈴的時(shí)候,送出電話號(hào)碼。如果該參數(shù)為1,則第一話機(jī)次響鈴即自動(dòng)應(yīng)答,就不可能收到來電顯示信息了。一般情況下,座機(jī)在響鈴13次以后沒有接聽,即自動(dòng)中斷。因而,將值設(shè)為15,既能保證來電顯示數(shù)據(jù)的接收,又不影響電話的功能(即無人接聽時(shí)也自動(dòng)摘機(jī))。耳機(jī)、來電顯示的數(shù)據(jù)格式圖2用Modm撥打電話接線方法通過“AT#CID=1”命令打開DE格式化形式的呼叫者身2. AT#CID份鑒定,正常情況下,當(dāng)有電話撥入時(shí),將產(chǎn)生來電顯示數(shù)AT#CID=0”關(guān)閉呼叫者身份鑒定,這時(shí),當(dāng)有電話呼據(jù),其格式為:人時(shí),通用多功能計(jì)算機(jī)監(jiān)控系統(tǒng)測(cè)試軟件的響應(yīng)如圖3所DATE 0725示,當(dāng) Modem不支持來電顯示或座機(jī)沒有開通來電顯示也會(huì)TME=1549出現(xiàn)這種情況。NMBR=13933587001Communication Test on Serial Port以上數(shù)據(jù)每行的開頭和結(jié)尾都包括 vbCrlf,表示7月25ystem Operation Tools Help日15:49,電話13933587001通過 Modem撥人。第二次響鈴為聲≌分品0令以上完整的數(shù)據(jù),其它每次響鈴,僅產(chǎn)生RING(開頭和結(jié)尾Hex: ODOA52494E470D0A都包括 vbCrLf),如圖4所示,是通過權(quán)威的超級(jí)終端捕獲的三次響鈴數(shù)據(jù)。CharTickCourt89282070∥e1057cTestcoI超級(jí)終回厄文件②)編指①)查看①呼叫)傳送①)幫助TickCount 89286937 / Tme 11: 07: 02TickCount 89286987 / Time 11: 07: 02DATE =0725ick Count 89291905//Tme 11- 07: 07TiekCount89291985//Time 11.07:07TIME-1549Status. COM3: 9E00. B.1: DTR-Disable: RTS.Disable: Open 2006-7-25 11:09NMBR=13933587081圖3 Modem接受電話拔入—無身份鑒定的情況RINGAT#CID=1”打開DTE格式化形式的呼叫者身份鑒定中國煤化工一但是,是否有來電顯示,需要兩個(gè)必要條件,一是 Modem支CNMHG據(jù)格式2006.10物丹數(shù)聽雌網(wǎng)絡(luò)與通信NETWORK&COMMUNICATIONEnd If四、仿真 Modem的實(shí)現(xiàn)End Sub電話客戶訂貨在城市中非常普及,例如,訂購?fù)把b純凈這些代碼將收到的數(shù)據(jù)進(jìn)行累加,當(dāng) timer Comm給定的水。利用仿真 Modem輔助電話客戶管理軟件的調(diào)試,對(duì)于開時(shí)間到,就執(zhí)行定時(shí)器事件,源代碼如下:發(fā)這種類型的軟件非常便利,不需要到電信局開通座機(jī)的來電Private Sub timer Comm Timer()On Error Resume Next顯示,不需要撥打電話,也不需要實(shí)際的 Modem,而且,樣本timer Comm, Enabled false數(shù)據(jù)可以在較小的范圍內(nèi)加以控制。我們需要做的只是按照一定的格式要求和時(shí)間要求,向指定的串口發(fā)送相關(guān)數(shù)據(jù)而已。If bDial= True Thentimer Comm Enabled FalseSImulated lodendIalMSComm1. Output= vbCrLf +'OK+ vbCrLfCuririeuluri PieeeiuesReval Tietimer Comm, Interval 100Da.a Dits: 8imerExit SubPality: NoneEnd ifStcp Bts:If (Mid( strin Buffers, 1, 2)=AT )And Rightminutes(strIn BuffersChr(13)) ThenMSComm1 Output strinBuffersSpeed: 9600If In Str(1, strin Buffers, DT)=0 ThenSampe F OMSComm1 Output vbCrLf +'OK vbCrLfCoM4:8600r8.1Modem out of cervicebDial Tr圖5仿真Mdem的設(shè)計(jì)界面timer Comm. Interval 9000timer Comm Enabled True仿真 Modem的設(shè)計(jì)界面如圖5所示。 Connection Prefer-ence主要用來設(shè)置串口參數(shù), Interval Time用來選擇1-9分If In Str(1, strin Buffers, #CID=1, vbTextc鐘產(chǎn)生一次來電。核選 Sample,將從 Base Code.txt文件中讀取0 Then給定的電話號(hào)碼,以此號(hào)碼為基礎(chǔ),在大于等于該號(hào)碼1-9vAlid False范圍內(nèi)隨機(jī)產(chǎn)生電話號(hào)碼。串行通信控件 MSComm1用來接Status Bar1 Panels("Modem"). Text ="Modem: ouof service收命令數(shù)據(jù),與第一個(gè)定時(shí)器 timer Comm輔助工作MSComm的事件處理代碼為vAlid TruePrivate Sub MSComm OnComm()timer_ Times nterval. Enabled= validDim vIn Buffer As variaStatus Bar1 Panels(" Modem). Text =Modem: inDim strRecChars As StringserviceOn Error Resume NextEnd扦fIf MSComm1 CommEvent comEv Receive ThenEnd IfIf sTart Comm False Then strIn BuffersEnd SubvIn Buffer MSComm1 Inptimer Comm定時(shí)器分析AT命令。因?yàn)槲覀兊姆抡?ModemstrRecChars= Hex Chars ToString( Variant Chars只提供來電顯示功能和比較簡(jiǎn)單的響應(yīng)功能,所以,只分析最基本的語法,即以“AT”開頭,以vCr結(jié)尾的字符串,即認(rèn)strIn Buffers strin Buffers strRecCharsIf bStartComm = False Then為是正確的AT命令,就將收到的AT命令原樣返回。如果是bStart Comm True撥號(hào)命令“DT”,就等待9秒以后發(fā)送OK,表示電話已經(jīng)撥timer Comm. Enabled True通;否則,直接返回OK,表示命令正確。如果命令中包含“AT#CID=1”,則啟動(dòng)來電顯示功能,否則,來電顯示功能If sTart Comm True then無效。timer Comm Enabled Falsetimer Comm Enabled True中國煤化工,發(fā)送響鈴數(shù)據(jù)。經(jīng)過End IfcYH測(cè)試CNMHG0毫秒左右,因而,當(dāng)a地51護(hù)63網(wǎng)絡(luò)與通信NETWORK&COMMUNICATION模擬來電顯示的時(shí)間到,就每隔5700毫秒發(fā)送模擬數(shù)據(jù)。來nCount =1電顯示中的日期和時(shí)間取自計(jì)算機(jī),隨機(jī)電話號(hào)碼取7位,為timer Send interval Enabled True系統(tǒng)啟動(dòng)后經(jīng)過的毫秒數(shù)的最后7位,不足7位前面補(bǔ)8;如End If果核選 Sample,則隨機(jī)選擇以 Base Code.txt為基礎(chǔ)的10個(gè)固End Sub定號(hào)碼,周而復(fù)始。 Base Code的范圍為4位以上,最后兩位變以上子程序編寫完畢后,調(diào)整表單的高度,隱藏串行通信化。如果 Basecode.bt中為“13903361234”,則隨機(jī)電話號(hào)控件和定時(shí)器控件(為了美觀,同時(shí),空間有限)。運(yùn)行時(shí),碼的范圍為:13903561234-1390361243。因?yàn)榈?次響鈴發(fā)點(diǎn)擊紅燈打開仿真 Modem的電源,當(dāng)收到來電顯示命令(AT#送來電數(shù)據(jù),其它響鈴都是發(fā)送RING,所以,我們只模擬4CI=1)后,根據(jù)設(shè)定的時(shí)間,模擬 Modem來電顯示,同時(shí)次響鈴,在程序中,除第2次發(fā)送來電數(shù)據(jù)外,其它3次均發(fā)紅燈變綠,表示正在工作,狀態(tài)欄顯示“ Modem: In ser-送RING,源代碼如下e";點(diǎn)擊綠燈將變紅,表示仿真 Modem的電源已關(guān)閉。Private Sub timer Send Interval_ Timer(6所示為剛打開電源,但是,還沒收到來電顯示命令時(shí)的情Dim str No As StringDim str Tmp As StringOn Error Resume Next五、測(cè)試與應(yīng)用If n Sample= 1 ThenstrTmp ts(nEnd No Int(Rnd TOTAL NO))利用通用多功能計(jì)算機(jī)監(jiān)控系統(tǒng)測(cè)試軟件進(jìn)行測(cè)試,當(dāng)向Len(str Tmp)= 3 Then str Tmp= Mid (str Tmp, 2)strNo strHead_No str Tmp仿真 Modem發(fā)送來電顯示命令后,仿真 Modem能按照設(shè)定的時(shí)間間隔,仿真實(shí)際的 Modem產(chǎn)生來電顯示數(shù)據(jù)。在調(diào)試strNo= Right(Trim(Str( GetTick Count()),7I“基于短信的電話客戶管理軟件”中,仿真 Modem的使用如If Len(sNo)<7 Then strO= String(7-Len圖7所示。仿真 Modem模擬實(shí)際的 Modem產(chǎn)生可在一定范圍(stNo),“8")+ strO內(nèi)控制的來電號(hào)碼數(shù)據(jù),通過RS-232接口給電話客戶軟件提If n Count 2 Then供數(shù)據(jù)。如果是新客戶(第一次來電),則操作員輸人客戶數(shù)MSComm1. Output= Get TwoRing(strNo據(jù);如果是老客戶,則電話客戶軟件根據(jù)電話號(hào)碼自動(dòng)調(diào)出客戶數(shù)據(jù),然后,輸入客戶訂單(桶裝純凈水的數(shù)量等),通過MSComm1 Output strRing-45接口利用 Internet,將訂單發(fā)送到外送員工的手機(jī)郵箱End If中,再通過移動(dòng)通訊公司的無線網(wǎng)關(guān),以郵件通知的形式發(fā)送If Check File(strSound) Then PlaySound strSound, 0,SND ASYNC短信到外勤員工的手機(jī)中。n Count nCount +1六、結(jié)語If nCount >4 Thentimer Send interval Enabled False電話客戶訂貨在城市中非常普及,利用仿真 Modem輔助End If電話客戶管理軟件的調(diào)試,對(duì)于開發(fā)這種類型的軟件非常便End Sub利,因?yàn)椴恍枰诫娦啪珠_通座機(jī)的來電顯示,不需要撥打電最右邊的定時(shí)器 timer Times Interval.行間隔來電功能,話,也不需要實(shí)際的Moem,而且,樣本數(shù)據(jù)可以在較小的范即在選擇的1-9分鐘內(nèi),啟動(dòng)·次來電顯小,其源代碼如圍內(nèi)加以控制。下參考文獻(xiàn)Private Sub timer TimesDim str Tmp As stAT命令集.htDim mInute As Integermanuals/cat htm. 2005.. 13.Dim n Second As Integer馬玉春·通用多功能計(jì)算機(jī)監(jiān)控系統(tǒng)測(cè)試軟件的設(shè)計(jì)str Imp Format(Time, HH: MM: SSsEcond= Val( GetNoString(str Tmp,與開發(fā)[J].電腦編程技巧與維護(hù),20007If n Second 0 And n Count =0 Then2006年7月18日)mInute Vaf( GetNoString(str Tmp,中國煤化工If mInute Mod nOptinterval =0 ThenCNMHG2006.10電腦編程技巧與維
-
C4烯烴制丙烯催化劑 2020-06-12
-
煤基聚乙醇酸技術(shù)進(jìn)展 2020-06-12
-
生物質(zhì)能的應(yīng)用工程 2020-06-12
-
我國甲醇工業(yè)現(xiàn)狀 2020-06-12
-
石油化工設(shè)備腐蝕與防護(hù)參考書十本免費(fèi)下載,絕版珍藏 2020-06-12
-
四噴嘴水煤漿氣化爐工業(yè)應(yīng)用情況簡(jiǎn)介 2020-06-12
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-06-12
-
甲醇制芳烴研究進(jìn)展 2020-06-12
-
精甲醇及MTO級(jí)甲醇精餾工藝技術(shù)進(jìn)展 2020-06-12
