GSM/GPS車載系統(tǒng)中的LCD中文顯示的編程方法
目前,在許多行業(yè)(如公安、公交和銀行等)中,GPS車輛調度系統(tǒng)已經相當普及,GPS車輛調度系統(tǒng)的相關研究也成為業(yè)界的一大熱門課題。本文LCD中文顯示的一種編碼方法是筆者在設計GPS車載終端通信系統(tǒng)時使用的方法。
1 問題的提出
一個GPS車輛終端在硬件上主要包括以下幾部分:
GPS接收模塊,用于接收GPS衛(wèi)星發(fā)回的GPS定位信號。
GSM通信模塊,用于實現(xiàn)終端模塊與監(jiān)控中心的無線通信。
中央控制單元,對信號接收、短消息通信及人機交互等工作進行控制。
鍵盤、顯示單元,用于人機交互,顯示監(jiān)控中心的命令。
在GPS車輛終端系統(tǒng)的開發(fā)過程中,出于系統(tǒng)功能和產品成本的綜合考慮,大多數(shù)設計者都會選取一塊廉價、低端的LCD液晶顯示器。由于GSM短消息編碼方式與普通LCD顯示器不兼容,許多GPS車載終端不支持中文信息的顯示,這是設計中的一個技術難點。
GSM短消息通常是以PDU模式收/發(fā)的,在這種模式下模塊收到的是一串Unicode碼字符。unicode碼即統(tǒng)一碼。是一種在計算機上使用的字符編碼方式。它為不同語言的每個字符設定了統(tǒng)一且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換和處理的要求。例如,當監(jiān)控中心向GPS車輛終端發(fā)送“速回中心”這樣一條調度信息時,終端將收到Unicode字符串“0698 E698 1E18 06FE”。
但目前大多數(shù)LCD顯示器并不支持這種編碼,要在終端上顯示這條信息,必須將其轉換為LCD支持的GB碼,即字符串“CBD9 BBD8 D6D0 DOC4”。
要進行這樣一種轉換,在通常情況下有兩種方法:
?、僬页鲞@兩種編碼方式的運算關系,通過公式進行轉換;
?、诜謩e建立Unicode和GB兩張碼表,通過查表的方式進行轉換。但由于Unicode和GB是兩種相互獨立的編碼方式,它們之間沒有任何聯(lián)系,運算關系更是無從談起,因此第一種方法是行不通的。而對于第二種方法,從理論上講是完全可行的,且在PC機上通過高級語言的函數(shù)調用即可實現(xiàn);但對內存極為有限的單片機來說,要建立如此龐大的兩張碼表顯然是不可想象的。即使舔加了存儲器,具備了足夠的存儲空間,碼表的錄入和對應也同樣是一項繁瑣的工作。因此,一種切實可行的,能夠實現(xiàn)中文顯示的設計方案就顯得尤為重要。
2 解決方案的設計
為了解決上述難題,筆者特設計了一種在GSM模塊的TEXT模式下,基于調度中心發(fā)送GB碼字符串的編碼方法。
GSM短消息的TEXT模式(文本模式)與PDU模式相同,也是一種使用AT命令傳輸數(shù)據(jù)的接口協(xié)議。不同的是,在信息傳輸過程中網絡傳輸?shù)氖怯⑽幕驍?shù)字等ASCII內碼,因此該模式適合于非智能終端、終端仿真器和一些基于V.25ter自動呼叫/自動應答的應用軟件。例如,發(fā)送字符A到模塊,并通過AT命令讀SIM卡內容到單片機內存,通過偉福仿真器的DTAE窗可觀測到如圖1所示的ASCII碼。
將內存中ASCII碼翻譯后可得如下信息:
由于所有GB碼皆由大寫英文字母和數(shù)字組成,兩者又都是ASCII內碼,因此可將調度信息的GB碼通過ASCII內碼字符的形式向車載終端發(fā)送。例如,仍是“速回中心”這條短消息,查GB-2312表可得這4個漢字的GB碼為“CBD9 BBD8D6D0 DOC4”。將此條字符串發(fā)送到車載終端,終端接收后的信息如圖2所示。
圖2中70H~7FH內存單元存放了該條信息。由于此時接收到的只是一串英文和數(shù)字的字符,要在LCD上顯示,還須將其還原為GB碼(即兩個字符轉換為相應的一個2位16進制數(shù),并存入一個內存單元)。將上述字符串轉換、合并,存儲在:BOH開始的內存單元中的數(shù)據(jù)如圖3所示。
圖3中BOH~BSH內存單元中存放了“速回中心”這條短消息的GB碼。軟件實現(xiàn)流程圖如圖4所示。
還原為GB碼程序實現(xiàn)如下:
經上述過程后,顯示緩沖區(qū)中便存放了“速回中心”這4個字的GB碼。將這些GB碼經程序送入LCD顯示器內存DDRAM中后,即可進行顯示。
結語
本文利用GB碼的一些組成特點,提出并實現(xiàn)了一種發(fā)送GB碼字符串的編碼方式。這種方法成功地解決了GSM短消息編碼方式與普通LCD顯示器不兼容的問題,去除了許多GPS車載終端不支持信息的弊端,有很強的實用性。
評論