第一章 緒論 *
1.1 動機 *
1.2 原理 *
1.3 報告架構: *
第二章CDPD—Cellular Digital Packet Data簡介 *
(蜂巢式數位封包資料) *
第三章 GPS(GLOBAL POSITION SYSTEM) *
3.1 GPS發展背景 *
3.2 GPS基本原理 *
3.3 NAVSTAR *
3.4 SPS和PPS *
3.5 GPS的未來發展 *
3.6 DGPS (DifferentialGPS) *
3.7 GPS的應用範圍 *
第四章 汽車告警系統 *
4.1 GPS的實作: *
4.2 CDPD的實作: *
4.3 控制單元的實作: *
4.4 中控中心 *
第五章 整合 *
第六章 總結與討論 *
6.1 實作前所遭遇的問題 *
6.2 各元件設計時所遇到的困難 *
6.3 整合時所遇到的困難 *
6.4 專題的感想及未來發展 *
附錄一 *
附錄二 *
參考資料: *
隨著社會治安的惡化,汽車失竊率越來越高,有鑑於此,若是能有一套可靠的汽車保全系統,再加上專業的保全中心24小時監控,如此可隨時隨地掌握車輛的動態,一旦警報系統啟動之後,將可立刻追蹤,使得竊賊無所遁形。如此一來,將對竊賊形成嚇阻作用,竊賊將不再如此猖狂。況且這只是無線網路應用上的一小步,為了將來能有足夠的經驗,研究更先進的技術,所以我們決定先從結合衛星科技的汽車保全系統開始做起,將來再繼續研究更深一層的領域。
本專題的主要原理就是透過C語言撰寫汽車上的中控系統(其為DOS界面),然後透過GPS(Gloabal Position System)(請參照第三章)接收衛星訊號之後,得到目前汽車的所在座標(經緯度),將之存入記憶體之中。接著中控系統在正常模式下,每隔30分鐘會把記憶體中的資料透過智捷公司的Z-card300產品(CDPD的設備),傳送到基地台,再透過基地台傳送到控制中心去。
為何要每隔30分鐘才傳送一次呢?因為傳送時,是透過Z-card 300傳送,所採用的技術是CDPD(請參照第二章),其計費方式是採資料量來計算。所以若是每收到一筆座標就立刻傳送到控制中心的話,會造成每筆座標都得加上一個用來區別使用者的標頭,因而多出大量的資料量。這對使用者而言,實在是太昂貴了!所以我們採每30分鐘送出一次資料,等到資料量累積到一定程度時,才加上一次標題,如此可避免每筆座標都加標頭的浪費。
以上所述為正常模式,若為告警模式時(警報器啟動了!),則不考慮花費問題,而以時效性為主。每當收到一筆座標資料後,立刻將資料回報到控制中心(保全公司),控制中心可透過接收的座標,在地圖上標出汽車的位置,對車輛進行監控,一旦經車主証實車輛失竊,便可立刻通知保全人員前往處理。雖然架構設計成一發現車輛失竊就立刻斷電、熄火,但惟恐造成交通意外,所以原則上還是決定設計成由控制中心來追蹤車輛的位置,再通知保全人員處理為主。
控制中心方面(WIN95界面),是用VB來實行。我們使用了一個資料庫,儲存客戶的車輛位置,並將客戶的資料建檔儲存,一旦客戶忘記汽車停哪,或車輛發生狀況,皆可立刻通知客戶,並立刻予以適當的處理。
由以上的說明,您大概可以進一步的體會我們專題的外觀,更瞭解我們的專題在做什麼,還有我們是如何去完成這個汽車保全系統的設計。而在我們設計的過程之中,由於經驗不足及這方面的資訊仍很新的緣故,我們幾乎可以說是從大大小小的錯誤中去記取教訓、透過無線器材的實地操作,一點一滴地學習成長,終於讓我們的專題有了點小小的成就,也學到了很多有關無線網路方面的資訊。我們將所獲得的寶貴經驗整理下來,希望未來對這方面有興趣的人,可以從這份報告中得到所需要的知識,免去一些不必要的嘗試。
本報告的內容大致分為三部份共七個章節。第一部分(第二章、第三章)簡介GPS和CDPD的原理。第二部份(第四章)分析了GPS、CDPD、中控系統、及控制中心各個部份的需求及設計方法。第三部份(第五章、第六章)則是整合,及總結和討論。最後,附錄一列出了學習過程時,所寫作過的程式碼供做參考,並附上實際圖形界面。附錄二則補充了一些相關知識,及報告內容中的一些註解,最後則列出了參考資料的出處,願能對讀者有所幫助,對我們的專題有更深一層的了解。
第二章CDPD—Cellular Digital Packet Data簡介
無線數據網路(Wireless Data Network)是90年代通信的熱門話題,早期的無線數據網路如ARDIS及RAM,由於架設成本較高且數據傳輸速度較低,其營業成長並不如行動電話服務快速。近年來,行動電話系統更增加數據能力以期進入數據通信市場,如GSM{附2}的數據服務GPRS(General Packet Radio Service)。GSM基本上是circuit-switched{附2}的。一部具有特殊modem的行動電腦便可以利用GSM電話來連線,這跟使用一般有線電話的方式一樣。不過這個方法並非毫無問題。例如,使用者常常會被移交(handoff)給不同的基地台,有時候即使是靜止的使用者也一樣(基地台若為了平衡負載也會轉移使用者)。每次移交會遺失300msec的資料。另外一點,無線電話的費用很高,連線費用會快速累積,因為它是依照分鐘來計算,而不是依照傳送的byte數來算。
解決上述這些問題的一種方式是Cellular Digital Packet Data(蜂巢式數位封包數據系統),此一技術於1990年由IBM提出,它是建立在類比式大哥大系統(AMPS){附2}上的packet-switched(分封交換)數位datagram服務,它跟AMPS完全相容。基本上,任何閒置的頻道都可以暫時被抓住,然後以19.2kbps的總速率來傳送dataframe,是一個Internet Ready的開放系統。因為CDPD需要不小的overhead,所以它的淨資料速率(net data rate)只有接近9600bps。
CDPD技術引進AMPS系統的原因在於FCC(Federal Communication Commission)規定AMPS的電話通電率須高達98%(亦即Blocking Probability須小於2%)。欲達到此要求,大部份的無線線路(Radio Channels)在某些時段是無人使用的,就經濟觀點,無人使用的無線線路應可加以利用來傳送數據資料,因此有設立CDPD加值網路之動機。對很多使用者來說,能夠利用既有的蜂巢式電話系統來做到非連線導向、無線的(wireless)datagram系統,並且用它來傳送packet,這點是很吸引人的。因此CDPD的使用者正快速的增長。此一技術目前已廣泛應用在美國、加拿大、中南美洲及大陸的等十幾個國家,在台灣是以交通部開放的專用頻道上建置此系統。
CDPD系統包含三種station:行動主機(mobile host)、基地台(base station)、界面基地台(base inter facestation),在CDPD的專門術語中,它們分別稱為:行動終端系統(mobile end system)、行動資料庫系統(mobile database system)、行動資料中間系統(mobile data intermediate system)。這些station可以跟靜止的主機(stationary host)以及標準的router互動,後兩者是在任何WAN上都可以見到的那種。Mobile host就是使用者的可攜式電腦。Base station是跟mobile host溝通的發射器。Base interface station則作為一個界面,讓某個CDPD提供者的區域範圍中的所有base station都能夠透過標準的(固定的)router來進行更遙遠的傳輸(經由Internet或其它WAN)。
下圖即為CDPD架構:
figure1.一個CDPD系統的例子
CDPD定義了三種界面。E-interface(在CDPD提供者的外部(external))把一塊CDPD區域(area)連結到一個固定的(fixed)網路。這個界面必須妥善定義,讓CDPD可以連結到各式的網路上。I-interface(在CDPD提供者的內部(internal))把兩塊CDPD基地台的區域連結起來。這界面必須標準化,如此使用者才能漫游在不同的區域之間。第三種界面則是位於基地台與mobile host之間的A-interface(air interface(空氣界面))。透過air interface傳送的資料會經過RC4{2}資料加/解密技術的壓縮、加密(encryption)及錯誤更正。經過壓縮、加密後,構成全長420-bit的區塊。每個區塊又分割為七個60-bit的microblock(微區塊),這七個microblock傳送時是前後連續的輸送。每個microblock都有一個6-bit flagword,可用來指出通道的狀況。
這些microblock是以全雙工模式,在一個19.2-kbps下鏈(downlink)通道(從基地台送出)以及另一個19.2-kbps上鏈(uplink)通道上傳送。上鏈與下鏈的通道都是分時段的(slotted),每個slot是一個60-bit的microblock。
每個CDPD cell只有一對上鏈/下鏈的通道可以傳送資料。下鏈的通道很容易管理,因為在每個cell中只有一個發送端:基地台。在下鏈通道上傳送的frame都是屬於廣播的性質,由各個mobile host自行挑出要送給自己的frame,或者要送給所有mobile host的frame。
比較複雜的部分是上鏈通道,所有想要進行傳送的mobile host都需要為它而競爭。當一部mobile host有frame要傳送時,它會先觀察下鏈通道所送出來的microblock上的flag-bit,看目前的上鏈slot是忙錄的還是閒置的。若它是忙錄的,這個mobile host將不會等待下一個time slot,而會跳過隨機數目的slot,然後再次嘗試。若上鏈通道又是忙錄的,它就等待更長的一段隨機時間,然後重複這過程。在統計上,每多失敗一次,平均等待時間就增加一倍。當mobile host終於發現通道閒置下來時,便開始傳送它的microblock。
這演算法就叫做DSMA(Digital Sense Multiple Access,數位感測多重存取),它的重點是防止各個mobile host在上鏈通道一閒置下來時,就全部擠到上鏈通道上。儘管有了DSMA,還是可能會跟其它的mobile host發生碰撞,因為可能有兩個以上的mobile host挑中同一個time slot開始傳送。為了讓mobile host察覺出是否發生了碰撞,在每個microblock中有一個flagbit可以告訴mobile host,先前在上鏈通道上傳送的microblock是否正確地收到。不過基地台無法在一個microblock結束後就馬上做出判斷,所以發送端無法馬上知道傳輸是否成功,如果還有其它的microblock未傳完,它就往下繼續送,這樣就不需要再重新取得通道。若發送端在接下來才發現先前的傳輸失敗,它就停止傳送。否則的話,發送端就繼續傳送,一直到它送出的區塊個數到達某個上限,或者是基地台在下鏈設定某個flagbit,表明它已經從這個發送端收到夠多的microblock,暫時不想再收到它的microblock。
CDPD的另一個特性就是資料傳輸的使用者被當成二等公民。當有一個新的語音通話(voice call)被指派到CDPD正在使用的通道時,基地台會在下鏈通道上送出一個特別的訊號關閉那個通道。若基地台已經知道新的CDPD通道的號碼,就直接宣告它。否則的話,各個mobile host就必須從一組預先指定好的可用通道中找出一個通道來使用。以此方式,CDPD便可以獲取一個cell中任何的閒置容量,而不會妨礙到主使用者—語音(voice)。
從前面的說明中我們可以了解,CDPD是在語音系統正式營運後才加入其中的,CDPD的設計不能改變既有的語音系統。因此,在替語音通話選擇通道時,演算法並不知道CDPD的存在。這就是為什麼CDPD通道有時候突然被霸佔(preempt)的緣故。一旦用戶失去與CDPD之接觸後,需再與基地台連繫以建立通信管道。此現象稱為Emergency Hop或Forced Hop,CDPD用戶在Emergency Hop的過程中可能會失去部分資料,這些資料必須重新再傳送,造成額外的花費。
另一個CDPD要解決的問題是所謂的"「線路強佔」問題(Channel Sealing或Channel Staling)AMPS基地臺在選擇一無線線路前會先測試其品質之優劣,若線路品質不能達到一定標準則不使用。然而AMPS無法區分品質不佳是由於雜訊干擾或是因為CDPD的佔用。對於CDPD在使用的線路,AMPS可能長期不會選用此線路,因而造成CDPD強佔線路的現象。為避免強佔現象,CDPD要求數據用戶每隔10秒鐘由一線路跳到另一線路,此方式稱為Planned Hop或Timed Hop。
CDPD的應用極為廣泛,試舉數例說明:
美國許多消費者習慣以信用卡付費,但有些服務業(如計程車)無法驗證信用卡,而造成不便。若計程車上的刷卡機能經由CDPD網路接到銀行驗證信用,則此問題可輕易解決。
CDPD可傳送資料來調度移動率高的工作人員,CDPD亦可及時(RealTime)傳送資料至火車的電腦來做行程調度。
CDPD可以廣播數位資料(如股票行情,電子新聞,氣象及交通預告)給特定的顧客群。
家庭的水電錶讀值可以無線電方式經由CDPD網路自動傳送至水電公司,而不需由抄錶員挨戶讀錶.。
若一CDPD手機被偷,則CDPD系統可送信號要求該手機回報其所在位置。警方可使用此資料追蹤竊盜。
除了以上這些功能外,CDPD還有其它許許多多的功能,真可說是不勝枚舉,且它是利用通話頻道的空閒時間來傳遞資料,所以是一種很值得推廣的技巧,未來的潛力無窮。
1960-1970年之間,美國和蘇聯開始研究利用軍事衛星來做導航用途,大部份的系統都僅為空軍或海軍的個別需求。到了1974年,軍方終於將過去所有的努力做成整合系統,也就是我們現在所熟知的NAVSTAR系統,至於蘇聯所開發的系統稱為GLONASS也即將開始做商業運轉。從1980年代後期開始,所有NAVSTAR系統的商業運轉均歸美國運輸部底下的美國海岸防衛隊負責,現在GPS已經和以地面基地台為架構的無線電導航系統結合,成為美國國家導航資訊服務的一環。
基本的假設是,發射衛星的人可以一直追蹤衛星的位置,然後衛星可以把這些資料直接傳給你。衛星可以不斷的傳送軌道運行資料及所載原子鐘產生的精確時間資料,GPS接收器上有一個專門接收無線電訊號的接收器,同時也有自己的時鐘,當接收器收到一個衛星傳來的訊號時,它可以經由內部微處理機換算成所在的位置資料,也就是說可以知道這個衛星離我們多遠以及它的方向在那裡,但是這個位置有可能是地球表面一個大圓弧上的某一點。
當有兩個衛星訊號時,接收器算出來的位置只是兩個球狀訊號交會形成的一個圓形範圍,而這個圓形範圍到達地球表面時會有兩個交會點,因此仍只能得到粗劣的位置。第三個衛星訊號會在三個球狀訊號中產生兩個交會點,其中一個交點會到達地球表面,另外一點則在太空中衛星的另一側,當然GPS會假定你不可能在太空那一點上。
當GPS連續收到5到6顆衛星訊號以上時,就可以得到更精確的定位資料,每一個衛星都會產生一個不同的球狀訊號,接收器會自動算出所有球狀訊號共同的交會點在那裡,由於每個衛星發射出來的訊號都不大一樣,有時候還會失去訊號,因此以其平均值來提高精確度。
收到三個以上的衛星訊號就可以知道我們身處何處,我們可以從衛星送出來的時間訊號測得衛星是否仍在持續發送訊號,所以GPS衛星接收器至少必須要能計算出位於三度空間上的垂直位置。
由三個部份組成,第一個部份是太空,由24個定位衛星在六個軌道上運轉,它們以20,200公里的高度以及12小時繞行地球一圈的速度繞著圓形軌道運轉,這樣才可以確保每一個衛星會在每天的同一時間通過地球表面的同一點,其結果是地球表面的任一角落的上空隨時都有5-8個定位衛星通過。基於商業上的考慮,大部份的GPS衛星接收器都被儘可能設計成能夠追蹤最多顆數的衛星,但實際上只要能追蹤四顆衛星就能達到定位的效果。
其次是由五個監視中心(Hawaii,Kwajalein,Ascension Island,Diego Garcia
及Colorado Springs)和三個地面天線(Kwajalein,Ascension Island及Diego Garcia)以及位於科羅拉多州的Falcon空軍基地的主控制站所組成的控制部份,監視中心只是被動的監視追蹤衛星並累計範圍資料,並將這些範圍資料傳送到科羅拉多州的主控制站,在此地更新修正導航資料後,再由地面天線傳送到每一個衛星上。
最後一個部份即是由GPS衛星接收器和使用者組成的部份。在國外,包含歐、美、日均大量使用於測量航管車輛導航系統以及交通工具之間控與管理,且全世界GPS相關產品,陸續開發出來的技術正慢慢影響及改變我們的生活,如美國通用公司已在1995年將GPS列為他們LSS車系標準配備,德國賓士和BMW頂級車也多配備有GPS接收器,日本更是賣出60萬套GPS車輛導航系統,許多國際著名的快遞公司,如DHL`UPS都用GPS來作為他們車隊與貨物管理…相關應用不勝列舉。
GPS提供兩種明顯不同的導航定位系統;標準定位系統(StandardPositioning System-SPS)是給一般人使用的商業系統,不收費,正常情況下水平方向精確度約為30公尺。這種SPS須經過選擇性效益(Selective Availability-SA)處理程序,從衛星送下來的訊號會將衛星位置資料或時間重新處理,亦即加進隋機變動參數以加大誤差。由於GPS衛星接收器是以平均值來計算定位資料,因此其精確度不會高於SA的誤差量,目前SA-SPS的正常定位精確度水平為100公尺,垂直為156公尺,時間為十億分之340秒。
第二種系統稱之為精密定位系統(Precision Positioning System-PPS);採用鎖碼訊號,其定位精確度為水平為20公尺,垂直為27.7公尺,時間為十億分之200秒。PPS不僅擁有更高的精確度,同時由於是鎖碼系統的關係,它不會加入SA亂碼。PPS被嚴格限制只能提供給軍隊和美國聯邦政府的接收器使用,一般人或團體若要使用,必須提出申請,美國政府會依個案來處理。因為PPS訊號經過鎖碼,因此只有附解碼器的接收器能接收,為了防止敵國或其它團體破解密碼並使用在武器上,此訊號受到多重偽裝訊號保護,以確保它的安全性。
GPS的未來可能會比較容易預測,由於有一些議題已經在美國國會裡討論,其中一個提案是廢除SA干擾碼,有幾個法案已經由美國國會通過,強制要求軍方關閉SA干擾碼。雖然這些法案已由美國總統柯林頓簽屬同意,但不幸的是仍有一些條文上的漏洞,因此在未來幾年,SA干擾碼恐怕還依舊存在。
另外一方面,民眾使用PPS接收器的障礙可能已比以前更較容易掃除,由於共產鐵幕已大部份被破除,美國已不再有蘇聯這個頭號敵人,因此精密定位訊號被敵人盜用的風險已大為減小,因此國政府已同意非軍事用途的PPS系統開放請使用,但是仍須依個案審核。
此系統利用地面的無線電基地台對特定的區域播送誤差修正訊號,這些基地台均經過細密的測量,在美國其訊號提供給海岸防衛隊及一些商業團體使用。這些基地台不斷傳送該區域的衛星誤差值給具備差分解調能力的GPS接收器,以得到精確的定位訊號。有一種非常精確的DGPS地理測量系統,基本上這種系統是由兩個或三個測量參考站及幾個移動式的接收器所組成,它們要花很長的時間搜集定位數據以得到很小範圍的相關資料,參考站的數據可以用來修正移動接收器的定位數據,這種設備有些非常的昂貴,高級的測量設備其精密度可以達到1公分。
根據實際的測試結果,基本的DGPS系統即使是SPS-GPS而且是在SA干擾的情況下,其精確度也在三公尺以下。如果你用的是這種設備,那麼即使是在高速公路行駛,系統也會顯示你是行駛在內車道或外車道上(當然我們必須假設此高速公路有DGPS訊號的廣播服務)。順便一提,美國計劃從1999年開始利用通訊衛星播送DGPS訊號,但其服務範圍只限於北美地區,也就是說即使一般大眾僅能SPS標準定位系統,屆時也能擁有相當精密的定位服務。
GPS的用途十分廣泛,舉凡需要做地面定位的工作,均可利用GPS來達成。
例如﹕森林區、山坡地違規開發查報工作。使用GPS可順利導航至可疑之變異點,並直接查詢調閱地籍圖等相關資料以利研判。
2. 導航定位:車輛、航空、航海
例如﹕汽車衛星導航系統,於美國日本已相當風行,臺灣仍在萌芽階段。在可預見的未來,所有的飛行器將使用GPS做導航的標準設備,在飛機起降的時候,無須依賴機場地面的導航設備。
3.大地測量、一般測量:
傳統的三角測量事一件十分辛苦的事,特別是在地面三角測量點缺乏,地標不明顯的時候,測量工作格外困難。GPS定位則無須仰仗地面控制點,只要在沒有遮蔽的情況下,幾乎不受地形地物的限制,所以使用GPS作為測量的工具,大大改善了傳統測量的不便。精確度需求越高的測量工作,需要越高精度的GPS,當然也就越昂貴。
4.製圖:
電子地圖之製作及粗略地形圖之製作。地圖的數化有很多種﹕將已存在的紙面地圖用數位版數化、或使用掃描器掃描至電腦中﹐再進行螢幕數化或自動數化。我們可使用GPS在車輛行進的時候﹐每隔一段時間將道路點(WAYPOINT)記錄下來﹐如此便完成粗略的地圖數化工作。
5.任務派遣:貨運、救護、消防、警政
這類應用方向,是將GPS配合無線電傳輸,可將各車輛所在位置動態傳回派遣中心,以利調度工作。當然,如果運用在大眾運輸工具,可利於一般大眾於候車時了解班車抵達的狀況,如﹕目前車行進到哪裡了﹖車速如何﹖(塞車狀況)預計何時可抵達﹖等相關訊息。
6.登山定位、山難協尋:
GPS可準確的定位、定向,在開闊的地方使用GPS定位,配合地形圖可以非常準確的了解目前所在位置,而不會因人為判斷錯誤而迷路。我們也可將GPS配合無線電傳輸,將登山人員所在位置傳送至山難協尋中心,以利救難搜尋工作。
7.精確定時:
由於GPS定位需要非常精確的時間,每顆GPS衛星上都有精密的原子鐘,所以GPS接收機可以接收到精確的時間資訊。
8.軍事:
GPS發展目的,一開始就是考慮軍事的用途,所以舉凡戰機、戰艦、戰車、飛彈、相關軍事人員及攻擊目標物的精確定位,均仰賴GPS完成。
為防止非美軍使用者得到太精確的定位資料,以至妨礙到美國的國家安全,所以在供給民間使用的訊號上,另外加入所謂的S/A(SelectiveAvailability){2}效應干擾訊號,使得民用的GPS接收機在定位時,只能維持95%的接收狀況讓精確度在直徑100公尺內,另外5%的接收狀況可能在直徑300公尺內。事實上,這樣的精確度已滿足大部份民間定位作業的需求。但如果某些定位作業需要更高的精確度,也可以利用差分定位法(Differential GPS,DGPS)達到2~10公尺內的定位精度。
整個系統是由兩臺CDPD無線網路傳輸設備、一臺GPS衛星接收器、一臺防盜器、以及兩臺PC所組成。一臺PC是用來模擬中控中心端,一臺則是用來模擬車輛上的控制單元。將來以基地台為主的左半部都將裝在車輛上,所以體積當然不能太大,因此將來我們會請廠商幫我們將程式燒成晶片,製成一個小盒子,不管將來是想透過CDPD或GSM傳資料,只要將CDPD或大哥大接上該個小盒子,便可立刻使用了。因此整個專題是以整合的原則為出發點,將來更會與GIS(地理資訊系統)相結合。
4.1 GPS的方面:
我們所使用的GPS設備是Garmin GPSII Plus,必須要先把baud rate給設成4800bps才能使用。GPS每秒鐘皆會傳回一筆座標資料給RS-232界面,資料內容為:
$GPRMC,081027,A, 2458.085,N,12111.263,E ,000.0,140.5,041198,003.3,W*6E$GPRMB,A,,,,,,,,,,,,V*71
$GPGGA,081027,2458.085,N,12111.263,E,1,00,1.6,154.1,M,16.4,M,,*48$GPGSA,A,3,01,,06,14,,22,25,29,30,,,,3.0,1.6,2.6*3F$GPGSV,3,1,09,01,55,123,39,03,08,191,00,06,31,069,37,14,20,303,40*77$GPGSV,3,2,09,21,10,177,00,22,50,246,36,25,53,006,36,29,73,119,37*72$GPGSV,3,3,09,30,14,041,30,,,,,,,,,,,,*40$PGRME,25.7,M,37.5,M,45.5,M*1B$GPGLL,2458.085,N,12111.263,E,081028,A*2A$PGRMZ,502,f,3*1C$PGRMM,WGS 84*06$GPBOD,,T,,M,,*47$GPRTE,1,1,c,0*07
每筆資料中,我們所要的部份實際上只有上面加了底線的部份,2458.085,N,12111.263,E,代表北緯24度58.085分,東經121度11.263分,所以如何從這堆密密麻麻的資料中挑出我們所要的部份便成了一個問題,還好這問題並不難,程式碼在{附錄1}。
我們的設計原理是:
寫一個監聽程式不斷的監聽comport,一旦偵測到comport的inbuffer(用來暫時存放接收到的資料的緩衝區)有資料之後,便立刻將inbuffer中的東西存到記憶體中的一個buffer存取,接著再對該buffer中的資料進行過濾得到我們所需要的座標資料。為何要先把資料抓到記憶體中呢?一是因為我們不能對inbuffer直接進行比對的動作,這在TC裡面會說語法錯誤,這是個不被允許的動作。我們只能單純的將資料讀出而已,它是個唯讀的記憶體。二則是因為inbuffer中的資料,每隔一段時間若無讀出,則會自動清除,以便下一筆資料能讀入,不至於發生block住的情形。所以若是我們不趕快取出來的話,很可能會造成資料流失。
當我們將資料放到記憶體中的buffer之後,便可對其內部資料進行比對,挑出我們所要的座標資料,接著再將座標資料送到控制單元,由控制單元對其做適當處理(即架構圖的B部份)。GPS會每隔一秒鐘,不間斷的接收下筆資料進來,所以每次將資料存入記憶體中,加上資料比對的時間絕不能夠超過一秒,否則可能會造成所要的資料尚未取出,而新的資料卻已經將舊的資料覆蓋過去,造成永遠抓不到座標或兩筆資料之間,間隔時間不同的窘況。
為了避免發生這種情形,我們本想採用每隔一段等長時間,才將資料讀進記憶體中,進行比對。當時我們之所以會想到這種方法,乃是著眼於實驗時,座標幾乎都沒什麼變,所以想說每一段時間間隔裡,取一筆資料當代表就行了!!至於之前沒取的資料,就直接放棄不取,相當於是把GPS當做每隔我們所選擇的時間間隔才送一次。但是這樣會有個缺點,那就是萬一使用者是用高速在移動中的話,稍微隔個幾秒沒收到座標,就會造成距離已經離的好遠了。要是用這種方法來實行汽車告警系統的話,一旦發現車失竊後,開始想要追蹤車輛的動向時,便會發現車子早就被開到老遠了。所以用這種方法並不符合時效性的原則。
那到底什麼方法是最好的方法呢?經過觀察,我們發現每一筆GPS所傳回來的資料中,我們所需的座標資料都是位在第一列,且每一筆資料大小幾乎不是523就是524 byte,所以當我們使用第一種方法設計,資料在記憶體中進行比對時,幾乎不用花多少時間,一開始就可以抓到座標資料了。所以當GPS在讀入下筆座標資料之前,所需的資料早就抓到了,因此根本不用擔心資料會被覆蓋了。
我們所使用的產品是智捷無線通訊公司的Z-card 300,其
基本設定為:
19200 bps, 8 data bits, NO parity check and 1 stop bit.
Z-card 300使用的是UDP protocol,上網時不需增加任何的驅動程式。其基本指令集有:
AT!I? # 讀取Z-300的IP Address
ATS14 # 檢查Z-300現在UDP 或 SLIP mode
168 或 152 # 168: UDP on and SLIP off;
# 152: UDP off and SLIP on
AT!A1 # 設定此Z-300自動去掃瞄附近的基地台以便連上
ATS75 # 讀取現Z-300連上的基地台編號
500 # 現Z-300連上的基地台編號為500
AT!R? # 讀取正連線中的訊號強弱值
# -113 - -100 : 訊號很差,無法上網
# -99 - -90 : 訊號不好,可能無法連上網
# -89 - -50 : 應可上網
ATS57 # 讀取連線狀態:沒有連上基地台時
# display 0,2,4,…,128… 的偶數值
連上時
# display 129,133,… 大於等於129的奇數值
AT&W # 把上述設定值存入Z-300 EEPROM,
# 若離開”終端機”,下次使用Z-300時不必
# 再設一次各S REGISTER值
ATD192.168.1.4/7 # 連上將接收資料的IP Address(Destination IP)
# 接收資料的Destination IP = 192.168.1.4
# PORT = 7 設為7表示,
#會把USER輸入資料ECHO傳回使用者本身,
#也就使用者打什麼就傳回什麼
# 如連接上會出現”CONNECT”
+++ # 想離開ON-LINE (DATA)mode,
# 回到OFF-LINE(COMMAND)mode時,輸入”+++”
# 輸入”+++”時要注意前後間隔時間(約一秒)
# 否則視為USER DATA(單純想傳送3個"+")
ATO # 從OFF-LINE mode回到ON-LINE mode,想重新傳資料
Microsoft Windows Common 5.0(SP2)
Microsoft Windows Common–2 5.0
範例:
Private Sub Form_Load ()
' 儲存輸入字串的暫存區
Dim Instring As String
' 使用 COM1.
MSComm1.CommPort = 1
' 連線速度 19200 baud、無同位檢查、資料位元 8、停止位元 1
MSComm1.Settings = "19200,N,8,1"
' 告訴控制項當使用 Input 時,讀取整個暫存區
MSComm1.InputLen = 0
' 開啟連接埠
MSComm1.PortOpen = True
' 將 attention 指令送到數據機
MSComm1.Output = "AT" + Chr$(13)
' 等待資料傳回到連接埠
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 2
' 從連接埠讀取 "OK" 回應資料
Instring = MSComm1.Input
' 關閉連接埠
MSComm1.PortOpen = False
End Sub
如:
Private Sub MsComm_OnComm ()
Select Case MSComm1.CommEvent
Case comEvReceive ‘ 有資料傳入
Case comEvSend ‘ 傳輸暫存區有資料待傳
Case comEvEof ' 輸入資料流中發現 EOF字元
End Select
End Sub
用這種事件驅動方式的好處是,不會佔去CPU大部份的時間,造成整個程式block住。我們就是採用這種方式來實作的,一旦Z-300從外部接收到資料,便會引發MsComm_OnComm事件,來做相對應的處理。使用這種方式之前,必須先把MsComm的Rthreshold或Sthreshold屬性設為1,如此才會對comEvReceive和 comEvSend事件的進行偵測。
4. 連線過程,先送”AT”命令給終端機,若其出現”OK”,則表示ready狀態,此時我們可先下”ATD192.168.143.16/1025”指令連到IP為192.168.143.16的這台CDPD上(實驗室所購買的兩台CDPD之一),port選擇1025的原因是基地台的設定只提供1025這個port做為傳輸資料用。之後,若連上的話會出現CONNECT訊息。接著須再到被連結的那台CDPD(192.168.143.16)下達”ATO”指令,如此才真正的建立連線,可開始傳送資料。傳送資料時,有時會一台能收不能送,有時則是傳送的速度很慢,斷斷續續的經過好久,才會有下筆資料進來。後來向該公司工程師詢問之後,跟著工程師在校內到處測量之後,才知道是因為本校地形所引起,大部份的訊號都被地形給阻擋了,只有在高處(如9舍5樓)才有辦法接收。於是我們的解決方法就是將com1的2、3pin腳用一根鐵絲連起來,因為第2腳是用來送出資料的,而第3腳則是用來接收資料,所以當我們將2、3腳連起來之後,便可在自己電腦上同時執行Client及Server端程式進行模擬測試,後來我們又買了一條RS-232的線,直接將兩台電腦的comport連結起來,原理上和透過終端機連線是一樣的,而且又可省下使用CDPD傳送時所需的費用,何樂不為?
為了將CDPD、GPS、警報器的功能結合,勢必要有個控制單元來對三者的功能進行整合。控制單元必須同時對這三個port進行監控,在和GPS的溝通方面,請參考{附錄一}的第一個GPS部份,透過該程式,每經一秒鐘當GPS有座標資料進來時,便先將其抓到記憶體中的buffer比對,過濾出座標之後,將其存在記憶體的buffer中。將來程式是要燒到一個小晶片中,整合成一個小盒子,所以所寫的程式當然不可能會太複雜。因此我們是使用TC所寫。
上圖即為資料結構:
正常狀態下,當控制單元收到了座標位置之後,便會開始把資料塞到上圖存放座標資料的buffer之中,我們的方法是用一個count計算目前已經塞了多少筆座標進去,當count等於1799時,也就是三十分鐘的時候,這時控制單元便會把座標資料連同6 byte的USER_ID(車牌號碼)、14 byte的日期/時間、連同表示目前車輛狀態的3 byte警告信號及表示有幾筆座標資料的COUNT及1 byte結束符號(‘#’),透過CDPD傳送到中控中心,再由中控中心做相對應的處理。
若為告警模式的話,控制單元會先把buffer中的所有座標資料送到中控中心去,所以第一筆資料為不定長度。之後,當GPS每收到一筆資料後,控制單元便會立刻將其送往中控中心去,以做為即時追蹤之用,隨時可得知車輛的最新位置。告警狀態時的資料型態跟正常模式時皆一樣,除了座標的筆數不同而已。這時因為車子已經有狀態了,所以也就不在乎是否有金錢花費的多少了。
由於中控中心隨時隨地都要監控車輛動態,所以對於CDPD一開始就要下達”ATO”連線模式,如此當使用者有資料要送到中控中心時,才能順利連上。當中控中心一收到車輛所傳來的座標資料時,會先和客戶資料庫中的客戶UID進行比對,若不為其客戶,則不予以處理。若為客戶,則取出該名客戶的姓名、聯絡電話、地址等欄位的資料,將其顯示在畫面上。
當資料從用戶端傳送過來時,中控中心的CDPD會將資料接收,同時引發comport的On_Comm事件,將資料存入資料庫中。接著便會呼叫處理程式對使用者傳送過來的資料中的狀態欄位進行判斷,若為正常狀態,則只是單純的將座標存入座標資料庫之中,以備查詢。若為告警狀態,中控中心可點選告警的使用者,對其送出確認訊息,當使用者收到確認訊息,若為誤觸,便可透過遙控器將警報狀態解除,恢復成正常模式。當中控中心端得知該名使用者的狀態恢復成正常模式之後,便會將該筆警報解除。若不為誤觸,則中控中心等待一段時間後,發現警報尚未解除,便會送出斷電斷油的命令給該名使用者,讓車輛停止行進。在處理告警狀態的期間,畫面上會不斷的將該名使用者的座標資料,通通都給顯示在畫面右下角的資料庫上,以記錄從告警狀態開始,該名使用者的車輛曾經到過哪些地方。同時左下角的部份會反映出目前所正在進行的處理,如:正在向客戶確認中或已通知某相關單位前往處理等……
警報模式總共有八種:
AID警報表示客戶需醫療援助
BRK警報表示車窗玻璃破裂
DOR警報表示車門開啟
MOV警報表示車輛移動中
PAK警報表示行李箱開啟
POW警報表示備用電源啟動
SOS警報表示客戶發出求救訊號
HLP警報表示需要道路救援
一旦警報被觸發時,中控中心會根據則狀態欄位進行相對應的處理。若為AID警報,中控中心將根據客戶資料庫所記載的過去就診記錄、及緊急聯絡人等欄位,通知救護人員將客戶送往最恰當的醫院,及緊急聯絡人前往處理。若為BRK、DOR、MOV、PAK、POW等警報的話,表示車輛可能遭到不法的侵入,這時中控中心便會通知保全人員前往處理。若為HLP警報的話,則表示客戶需要道路救援,中控中心便會通知拖吊單位前往處理。至於SOS警報的話,則表示客戶可能有生命危險,這時便會通知警方前往處理。
由於座標資料有其時效性,所以當每隔一段時間後,舊的座標資料其意義便不再那麼重要,因此我們可將資料庫中的舊資料備份壓縮,如此可簡省硬碟空間,同時查詢時的速度也會較快。當使用者需要查詢過去記錄時,可根據時間找出所需的該筆資料。
中控中心除了保全的功能之外,當然也可以加入其它更人性化的功能,例如當使用者忘記自己的車子停哪時,一樣也可以透過此系統,得到車輛的最後位置。或者當交通狀況擁擠時,中控中心也可指示使用者一條最近的路線,將來更可以透過中控中心傳送即時訊息給使用者,例如:股票行情等……只是由於專題的時間有限,以後若有機會的話會設法附加這些功能。
看完了前四章的內容之後,相信您對於各單元的設計原理一定有了基本的認識了,接下來就向您介紹如何將各部份整合在一起。整個過程及訊息的傳遞大致就像上圖所示:
首先,當GPS接收到資料之後,便會立刻將資料送到控制單元去。當控制單元一邊接收資料的同時,一邊會去監看警報器的狀態。若為正常模式,控制單元會將GPS的資料送到記憶體中的buffer去。每當30分鐘,時間到了之後,控制單元便會開始把資料加上USER_ID、日期、時間、還有目前的警示狀態合在一起,整個轉成字串,送到CDPD的out buffer去,之後就由CDPD負責將資料傳送到中控中心去。若為告警模式,則因為要即時追蹤車輛位置,所以當第一筆資料把buffer中的所有座標位置通通都給送到中控中心之後,此後當控制單元每收到一筆GPS的座標資料,便會立刻將其送到中控中心去。
中控中心收到了客戶所傳來的座標資料之後,會立刻將其存入座標資料庫中去。接著便會判斷狀態欄位,如為正常狀態則不做任何處理。若為告警狀態,則會先送出確認訊息給使用者,若為誤觸,使用者可透過遙控器將警報狀態解除;若不為誤觸,則中控中心等待一段時間之後,發現使用者未回應,便會依照不同的警報狀態做不同的處理,如:斷油、斷電等……
另外,我們還有個同學是負責處理資料庫的查詢部份,一旦車輛不幸失竊,如CDPD無法連上基地台而無法掌握車輛位置時,則可從資料庫中找出最接近目前時間的資料,可以有個大概的範圍去搜尋。同時,該同學還有做了一套計費系統,當每個月要結算使用者所傳遞的資料量及應付金額、或者查詢某位使用者目前已經傳送了多少資料量、又或者想查詢使用量的走勢圖時,皆可以透過該套系統進行相關的查詢。
以上就是整個汽車防盜系統各元件的大致功能,以及之間的訊息傳遞過程,整個專題就是依據這個架構一步一步的測試,一步一步的完成,總算形成了一個基本的汽車保全系統。
汽車保全系統乍聽之下,似乎並不是什麼大學問,但還是有其問題存在,尤其是在事前的規劃上,更是應該考慮仔細,免得做了一堆白工。當初一開始決定要做汽車保全系統時,我們也覺得很容易,但是隨著越來越深入,越來越多的問題就浮出台面。現在就把我們所遭遇的問題與經驗整理如下,希望能幫助將來研究這方面的人,省去許多不必要的錯誤嘗試。
3.在CDPD方面,由於校內地形的關係,造成訊號無法接收或斷斷續續,我們的解決方法是將com port的2、3腳用鐵絲綁在一起,如此當資料從第2腳送出去之後,便會從第3腳立刻收進來,如此可在同一台電腦上同時進行接收及模擬的測試。後來更買一條特製的RS-232的線(其內部2、3 pin相對調)將兩台電腦的Com port連結起來,如此更像是真的透過CDPD傳輸,且傳輸速度較快,又可省去使用基地台時,所需花費的昂貴費用。
1. CDPD我們是採用透過RS-232來傳送資料,但是一個packet的實際大小卻無法得知。由於中控中心可能會同時有多名使用者傳送packet,所以若是每筆資料一個封包裝不下的話,就會造成第二個封包無(head),萬一這時有別的使用者的封包早一步傳入的話,會造成程式誤判,把第二個封包的資料當做其他使用者的資料。解決方法是改用UDP的方法來寫,同時在每個packet之前加上辨識用的標頭,這樣子當中控中心收到資料之後,才可以辨別是哪位使用者所送出的資料。
2. 透過CDPD連線時,若是同時有多位使用者連線到中控中心,則當中控中心要送回應訊息給使用者時,會不知道訊息將回應給哪位使用者。所以中控中心方面可能需要一個跳線裝置。
這是問題最多的一個步驟,因為發展這套系統時,並沒有好好分清楚各人的工作範圍,所以常常會造成工作重覆。當某位成員寫好程式之後,也順便把另外一名成員的部份程式也寫好了!造成有兩種版本,不知道應該採取誰的為準,同時彼此程式之間也不能溝通,這也就是缺乏團隊觀念,各自為政所造成的結果。後來,大家學乖了,寫作程式之前都會先確定各人所屬工作,不再產生這種重疊情形。
自從修了這個專題之後, 吳曉光教授為了讓我們對網路方面的東西有基本的認識,所以只要是相關知識都會要我們試著去學看看。從UNIX上的TCP/IP、UDP網路程式,WIN95和UNIX之間的網路程式,以及WIN95和WIN95之間的網路程式等……都有要我們試著寫過,這對網路程式基礎薄弱的我們,確實是有點吃力,可是卻也真的是學到很多東西。了解到說,某程式是屬於OSI中的哪一層組織呀?以及應該寫在哪一層會比較好等等……。
一開始每人的心態都是覺得好累呀!為什麼我要學這麼多方面呢?一直到大家開始寫無線網路程式時才發現,原來老師這麼做是費了一番苦心的。藉由之前的磨鍊,使得我們對於無線網路的程式撰寫有了一定的實力,同時由於各方面的東西,包括屬於多媒體的一些網路電話及即時影像設備等,也都曾經有接觸過,這使得將來想更深入研究無線網路如何與多媒體結合時,可利用在有線網路上所得到的經驗為基礎,進行更深入的研究。這讓我們的專題研究不會隨著專題的課程結束之後也跟著結束,在這方面仍然有許多的領域是可以發展,值得我們去探索的,充滿了無窮的發展潛力。由衷感謝 吳曉光教授的一番苦心,指引了我們一條明路,讓我們找到了自己的方向。
未來,除了提供一些水平應用的附加功能外,將更進一步研究如何透過CDPD上網,甚至更進一步的研究如何支援多媒體等。在這些方面仍有許多值得研究的課題,我們會朝著這方面去努力的,不會因為專題結束就讓我們的研究精神也跟著消失了。這次的專題課程中,從分析、設計、寫程式、測試的過程,相信會是我們求學生涯中相當寶貴的一次真實經驗。以下就列出專題過程中所練習過的程式,做為讀者參考之用。
中控中心程式碼VB所寫
Dim Buf As String
Dim in_c, in_d
Dim north As Single
Dim east As Single
Dim i As Integer
Dim packet As my_packet
‘處理接收資料的函式
Sub deal_with()
Buf = ""
in_c = MSComm1.Input
k = MSComm1.InBufferCount
While (MSComm1.InBufferCount = 0)
Wend
While (MSComm1.InBufferCount > 0)
in_d = MSComm1.Input
Wend
Buf = StrConv(in_c, vbUnicode)
Buf = Buf + StrConv(in_d, vbUnicode)
'處理demo畫面
Data1.Recordset.AddNew
Data1.Recordset("車號") = Left(Buf, 6)
'Data1.Recordset("狀態") = CInt(Mid(Buf, 7, 1))
Data1.Recordset("座標X") = CSng(Mid(Buf, 22, 8))
Data1.Recordset("座標Y") = CSng(Right(Buf, 8))
Data1.Recordset.Update
'處理告警資料庫畫面
Data2.Recordset.AddNew
Data2.Recordset("車牌號碼") = Left(Buf, 6)
Data2.Recordset("狀態") = CInt(Mid(Buf, 7, 1))
Data2.Recordset("日期") = Mid(Buf, 8, 4) + "/" + Mid(Buf, 12, 2) + "/" + Mid(Buf, 14, 2)
mytime = Mid(Buf, 16, 2) + ":" + Mid(Buf, 18, 2) + ":" + Mid(Buf, 20, 2)
Data2.Recordset("時間") = Format(mytime, "hh:mm:ss")
Data2.Recordset("座標X") = CSng(Mid(Buf, 22, 8))
Data2.Recordset("座標Y") = CSng(Right(Buf, 8))
Data2.Recordset.Update
Select Case Mid(Buf, 7, 1)
Case 0
safe.Visible = True
danger.Visible = False
Text1.ForeColor = &HFF00&
Text1.Text = "SAFE"
Case 1
safe.Visible = False
danger.Visible = True
Text1.ForeColor = &HFF&
Text1.Text = "DANGER"
Case 2
safe.Visible = False
danger.Visible = True
Text1.ForeColor = &HFF&
Text1.Text = "DANGER"
Case 3
safe.Visible = False
danger.Visible = True
Text1.ForeColor = &HFF&
Text1.Text = "DANGER"
Case 4
safe.Visible = False
danger.Visible = True
Text1.ForeColor = &HFF&
Text1.Text = "DANGER"
Case 5
safe.Visible = False
danger.Visible = True
Text1.ForeColor = &HFF&
Text1.Text = "DANGER"
Case 6
safe.Visible = True
danger.Visible = False
Text1.ForeColor = &HFF00&
Text1.Text = "SAFE"
Case 7
safe.Visible = True
danger.Visible = False
Text1.ForeColor = &HFF00&
Text1.Text = "SAFE"
Case 8
safe.Visible = True
danger.Visible = False
Text1.ForeColor = &HFF00&
Text1.Text = "SAFE"
End Select
End Sub
‘顯示客戶資料庫
Private Sub access_Click()
Load frmPerson
frmPerson.Show
End Sub
Private Sub Form_Load()
frmSplash.Show
logo.Enabled = True
Data1.DatabaseName = App.Path + "/" + "car.mdb"
Data1.Refresh
Data2.DatabaseName = App.Path + "/" + "car.mdb"
Data2.Refresh
End Sub
‘視窗最大化時,調整資料庫顯示大小
Private Sub Form_Resize()
DBGrid1.Width = ScaleWidth - property.Width
DBGrid1.Height = ScaleHeight
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
‘logo畫面
Private Sub logo_Timer()
Unload frmSplash
alarm.Visible = True
Form1.Show
logo.Enabled = False
End Sub
‘接收資料後所觸發的事件
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
Call deal_with
End Select
End Sub
‘秀出座標資料庫
Private Sub pos_Click()
Load position
position.Show
End Sub
‘跳出屬性設定視窗
Private Sub property_Click()
Load frmProperties
frmProperties.Show
End Sub
1.AMPS(Advanced Mobile Phone System) : 先進行動電話系統AMPS系統使用832個全雙工通道,每一個通道包含一對單向的通道。從824到849MHz有832個單向的發送通道,從869到894有832個接收通道。每個通道的頻寬皆為30kHz,也就是說,AMPS利用分頻多工將通道分開。
2.GSM-Global System for Mobile Communications(行動通訊全球系統):
第一代的蜂巢式電話是類比的,GSM則是採數位的方式。數位式的優點是1.聲音、資料、與傳真可以整合在單一的系統中。2.因為發現了更好的語音壓縮演算法,所以每個頻道所需的頻寬更少。3.它可以使用錯誤更正碼來增進傳輸的品質。最後,數位訊號可以加密,以確保安全性。
GSM的每個cell最多可以有200個全雙工通道。每個包含一個downlink(下鏈)的頻率(從基地台(base station)到各個行動台(mobile station),以及一個uplink(上鏈)的頻率(從各個行動台到基地台)。每個頻帶(frequency band)的寬度是200kHz。GSM是利用time division multiplexing(分時多工)將頻道共用。
3.Circuit Switching:線路交換
當你或你的電腦打一通電話,交換的設備就會在電話系統中找尋一條路徑(可能經過銅線、光纖、無線電波等…)從你的電話連到對方的電話建立一條連線。這種技術叫做線路交換。
4.Circuit switching 和 packet switching的比較
線路交換與分封交換在很多方面有所不同,主要的差異在於線路交換預先保留所需的頻寬,分封交換是根據需要來提出要求或釋放。在線路交換的方式裡,所有配置了而沒用到的頻寬都是浪費;而在分封交換方式中,線路從不被讀佔。這些沒用到的頻寬可被其它來源、其它目的的封包利用。然而就因沒有電路是讀佔的,可能會因一段突來、蜂擁而至的封包浪潮,造成部份封包的遺失。
使用封包交換,路由器可直接提供相當程度的改正錯誤功能。但封包送到目的地時,可能整個順序需重排。還有一個差別就是費率的計算,分封交換依據資料量計費,線路交換則依照時間。
5.RS-232-C:
RS-232-C是RS-232標準的第三個修正版本,這個版本是由電子工業協會(Electronic Industries Association,一個由電子製造商所組成的貿易組織)所制訂,常以EIA RS-232-C的名稱被引用。
機械性的規格為25支腳的接頭,上排為編號1到13的腳(由左至右)的腳,下排是編號14到25(也是由左至右)的腳。容許的最大資料傳輸率為20kbps,纜線最長15公尺。
功能性的規格(各腳的意義)
通常一定會用到9支腳,剩下常忽略。當終端機或電腦打開電源之後,它發出”資料終端就緒”(Data Terminal Ready,第20支腳的通知)。當數據機電源打開之後,它發出”資料設定就緒”(Data Setal Ready,第6支腳的通知)。當數據機偵測到電話線上的載波時,它會發出”載波偵測”(Carrier Detect,第8支腳) ,”送訊要求”(Request to send,第4支腳)顯示終端機企圖傳送資料。”清除待傳”(clear to send)”(第5支腳)表示數據機已經準備接收資料。資料是用”傳送”線(Transmit,第2支腳)傳送出去,並在”接收”線上(Receive,第3支腳)被接收。
兩部電腦常有透過RS-232-C互相連接的機會,因為傳輸線兩端都不是數據機,因此存在介面的問題。可以在兩部電腦間連街虛擬數據機(null modem)來解決這個問題,它的作法是將一部機器的傳送線與另一部機器的接收線連接,同時把一些其它的接腳作類似的交叉。虛擬數據機的外型就像一條短電纜。
1.Andrew S. Tanenbaum Computer Networks (Third Edition),李信宏 Turbo C 週邊應用系列 串列通訊篇
2.王國榮著 VB5與資料庫程式設計
3.林俊杰 Visual C++ 5
4.江高舉 陳俊源 活用Visual Basic 5
5.ROBERT LAFORE
6.OBJECT-ORIENTED PROGRSMMING IN C++
7.相關網址:
宏技電訊 http://www.honngi.com.tw/tech/GPS原理.htm
大通訊遞網 http://wiznet.com.tw/introduce.htm
林一平先生國立交通大學資訊工程系教授 http://liny.csie.nctu.edu.tw/cdpd.html