新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于uBASE-Ⅲ系統的短信通信程序開發

        基于uBASE-Ⅲ系統的短信通信程序開發

        作者: 時間:2013-01-06 來源:網絡 收藏

        引言

        本文引用地址:http://www.104case.com/article/257195.htm

        隨著嵌入式及通信技術的發展,移動手持設備出現在很多應用場合,比如天然氣公司開始采用智能化的方式來管理用戶的用氣情況,如何在服務端和表具終端間進行通信,成為系統的主要考慮因素。本文對系統進行需求分析后,以移動手持設備進行小規模通信為出發點,提出使用短信通信的方式來解決這一問題的方法。這種方式不僅使通信質量能夠得到保證,而且價格合理,易于操作員來管理和維護,是一種行之有效的通信方式。
        1研究背景及系統框架

        短信通信示意圖如圖1所示。PC機表示服務器端運行程序的平臺,是操作員對表具和手持設備操作的環境;表具表示天然氣表具,在里面配置了接收命令的固化程序;手持設備表示本論文研究的平臺,是短信通信程序運行環境的主要部分。三者之間均可進行通信,它們之間已經有完整的命令幀格式,下面討論如何設計并實現這樣的通信子系統,而不研究具體的命令幀格式,假定是在統一的幀格式下完成的。
        現場操作員需要設備有與表具進行通信的功能,能夠測試表具的通信狀況。因此,需要解決的主要有以下幾個問題:圖1短信通信示意圖①選取合適的手持設備,能夠有運行短信通信程序的基本硬件配置(需要配備GPRS模塊)。
        ②選取合適的嵌入式操作系統,保證程序的穩定運行。
        ③如何進行有效的收發短信來完成通信功能,以測試表具的通信狀況。
        ④需要有對文件操作的支持,操作員是需要上傳和保存文件的。
        嵌入式系統的開發既要實現程序的功能性,也要選取特定的硬件平臺,嵌入式系統是為了完成某一項或有限項功能,系統功能可以根據產品的設計要求進行裁剪、調整[1]。并具體闡述了選取硬件設備與完成程序的功能。
        2系統軟硬件環境

        2.1硬件平臺

        NLS-PT850是新大陸公司的一款基于嵌入式處理器的智能手持設備,它的基本硬件配置為ARM7處理器、32位RISC、74MHz頻率以及標準手機鍵盤和掃描儀;內存為8MRAM、2MNORFlash和32MNandFlash(可擴展至128M)。上面搭載uBASE-III嵌入式實時多任務操作系統。嵌入式硬件設備的考慮應該完全滿足目標系統的圖2手持設備硬件結構框圖要求,在功能上很容易滿足,但是在性能上,尤其是在功耗上應最適合系統,而不是越充分越好。
        手持設備硬件結構框圖如圖2所示。
        該手持設備配備了GPS模塊,具有SIM卡接口,存儲容量合適,程序下載方便,因此選取該設備來作為短信通信系統的硬件平臺。
        2.2uBASE-III嵌入式操作系統

        uBASE-III是一個嵌入式實時多任務操作系統,主要有多任務內核模塊、內存管理模塊、文件系統、設備管理模塊、應用程序管理模塊等[2]。uBASE-III之所以在很多嵌入式設備上廣泛使用,有一個很重要的原因是它提供了一個C++類庫“UFCL(ubaseFoundationClassLibrary)”。
        另外,它還提供了大量的API,供程序員調用。這里選取該嵌入式操作系統的原因是它支持文件操作和短信通信。
        文件系統用于文件操作,將程序中的相關數據以二進制文件的形式存放在Flash存儲器中。uBASE-III采用了zfile2.0文件系統,zfile2.0是專為嵌入式系統設計的Flash文件系統,常用的函數有:◆打開一個文件以便讀寫其內容ZFILE*zfopen(constchar*filename,constchar*pmode);◆從當前文件指針位置開始寫入size*count個字節的數據intzfwrite(constvoid*buf,intsize,intcount,ZFILE*stream);◆從當前文件指針位置讀入size*count個字節intzfread(void*buf,intsize,intcount,ZFILE*stream);◆關閉打開的文件intzfclose(ZFILE*stream);uBASE-III系統對文件的支持相比其他環境也有一些不足之處,在嵌入式設備上使用文件操作有很多的限制,比如uBase-III的文件系統僅有單層目錄結構,即不能創建子目錄、文件系統API,不區分文本模式和二進制模式的概念,都當作是二進制模式。
        短信通信是這樣定義的:uBASE-III提供了一套短消息編程接口“SMS_API”,它是通過向連接在主機串行端口上的GSMModem(或籠統地稱為“移動設備(ME)”)發出AT命令來完成短消息的發送、接收,以及對移動設備的其他相關操作的。該編程接口內部使用PDU(Protocol DescriptionUnit)格式與ME交換短消息的內容,也就是說,在AT命令的接口層來看,短消息是使用PDU報文來表示的,PDU報文是由許多字段組成的,不同的字段描述了短消息的不同屬性。該編程接口使用SSmInfo結構體來描述PDU的各個字段,用戶通過設定SSmInfo的不同成員來指定所要發送短消息的各種“屬性”,同樣,用戶也是通過SSmInfo的各個成員來獲取編程接口所讀取到的短消息的詳細信息的[3]。SMS_API提供了如下幾大類操作:◆GSMOpen():打開GSM設備;◆InitSms():根據相應參數初始化設備;◆SendOrWriteSm_1Sm():發送短信,支持中文和英文。
        這些接口函數是在該系統上編寫應用程序的基礎,尤其是該系統中,GSM短信模塊和文件相關操作是主要內容。
        3系統軟件開發

        3.1短信通信程序開發示例

        圖3為短信通信系統主程序流程,系統在登錄后就處于收發短信的狀態中。
        可以將主程序中的短信分為兩部分,前臺為操作員提供短信編輯命令,發送短信主要函數如下:intSendSms(char*strPhoneAddr,unsignedchar*pMessage,int msgBytes){SSmInfosmi={0},*pSmi=&smi;strcpy((char*)smi.Addr_MS,(char*)strPhoneAddr);inti,errcode;for(i=0;i<5;i++){//這里需要端口號、發送方式、SSmInfo對象、短信內容、//有效字節數和編碼方式errcode=SendOrWriteSm_1Sm(g_ComPort,CMD_CMGS,pSmi,(Uint8*)pMessage,msgBytes,BITS_DCS_DEF_ALPHABET);if(errcode==0){return0;}return1;}圖3短信通信系統主程序流程后臺用于接收短信,進行處理后通常會對文件繼續操作。這部分的難點在于如何設置短信通知格式,如何在后臺運行處理短信和寫回文件部分程序,并且要對前臺的用戶作出提示。因此這里用到了uBASE-III提供的多線程技術,讓處理短信的主要函數工作在后臺線程,有短信到來自動會處理“_thread_checkUnreadSm()”函數,列出“未讀短信”,轉到處理部分。這樣就避免了在主程序中對“未讀短信”的輪詢,避免了處理器處于一種資源浪費且效率并不高的模式。函數代碼如下:staticint_thread_checkUnreadSm(void*param){RE_CODEerrcode=0;errcode=ListSm(g_ComPort,MSGSTAT_RECUNREAD,s_SmNotify,NULL,NULL,NULL);returnerrcode;}其中“ListSm()”函數是短信模塊提供的API,供程序員直接調用,可以列出各種格式的短信,具體方式和其他函數可以參考相關文檔。
        3.2文件操作示例

        在操作員對表具進行測試的時候,需要先上傳“操作員數據”(用于存放操作員的用戶名和密碼)、“移動設備參數”,同時在程序運行過程中還會產生“通信命令幀核銷數據”等文件,如何合理組織這些文件的結構和訪問方式是本系統中又一重點內容,因為這些文件中的某些項是互相有關聯的,并不完全獨立。因此最核心的問題就是如何定義文件的結構,結構確定了,程序的操作方式也就確定了。
        拿“通信命令幀核銷數據”舉例,它里面包括了流水號、設備號、操作碼、幀順序號、核銷狀態和命令幀,后面的操作要依賴于其中的所有項,因此采用了定義結構體的方式,將上面的基本項封裝起來,以結構體為基本單位去實現文件的操作。文件采用TXT格式,便于創建和導出。文件操作代碼如下:intDeleteFrameVerifyInfo(intindex){UEnterMutex(g_mtxFrameVerifyOP,TIMEOUT_INFINITE);……//相關處理函數ULeaveMutex(g_mtxFrameVerifyOP);return0;}其中有一點要注意,多線程持有同一文件句柄進行讀寫操作是允許的,文件系統內部代碼會將不同線程的讀寫操作串行化。因此,在對文件進行讀寫操作時,要注意互斥問題。
        結語

        嵌入式操作系統在如今很多工業領域都有廣泛的應用,它的優勢往往在于內核可裁剪,體積小,應用在嵌入式設備上功耗低。本文就從移動手持設備通信引申,以uBASE-III系統和NLS-PT850設備為實例,著重從短信通信方式和文件操作兩個方面來講解短信通信的嵌入式軟件開發的流程和方法。該示例程序在目標設備上可穩定運行,通信狀況良好,可以作為移動手持設備短信通信的一個解決方案。

        c++相關文章:c++教程


        數字通信相關文章:數字通信原理


        通信相關文章:通信原理


        三維掃描儀相關文章:三維掃描儀原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 石首市| 龙泉市| 石柱| 凌海市| 石城县| 垦利县| 新绛县| 拉萨市| 东安县| 裕民县| 丰镇市| 北流市| 游戏| 闸北区| 兴宁市| 仪陇县| 永川市| 车致| 新源县| 图木舒克市| 怀仁县| 阿城市| 沧源| 威宁| 达孜县| 广州市| 东乌珠穆沁旗| 北宁市| 兴和县| 永州市| 滕州市| 界首市| 安国市| 神农架林区| 临澧县| 娱乐| 平陆县| 枣庄市| 朝阳区| 汝城县| 城固县|