新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 家庭滅火系統中的短消息報警模塊設計

        家庭滅火系統中的短消息報警模塊設計

        作者: 時間:2010-03-09 來源:網絡 收藏




        下面詳細說明一下短消息發送流程。當運動檢測程序檢測到有運動目標出現后,便會調用短消息發送模塊。這時,程序先獲取要發送的短消息內容和要發送到的手機號碼,然后設置短消息模式為PDU模式,如果是英文短信則用英文的7-bit編碼方式,如果是中文或者是中、英混合短信,則用中文的UCS2編碼。然后將短消息發送出去。其發送流程代碼如下:

        ∥dst_mb表示短消息要發送到的目標手機號碼
        ∥sms_content是短信的內容
        ∥如果發送成功則返回0,否則返回-1。
        sendsms (char*dst_mb,char*sms_content);
        write_comm(“AT+CMGF=0 ”,10);∥設置短消息為PDU模式
        strcpy(sms->SCA,smsc);∥將短消息中心地址放到結構體sms中
        strcpy(sms->TPA,dst_mb);∥設置目標號碼
        sms->TP_PID=0;∥GSM類型設置為點到點方式
        sms->TP_DCS=0; ∥7-bit編碼
        strcpy(sms->TP_UD,sms_content);
        encode_pdu(src,pdu);∥將源src編碼為pdu
        /*將字節轉換為字符串,如(0xC8,0x32,0x9B,0xFD,0x0E,0x01)轉換成C8329BFDOE01*/bytestostr (src,dst,len);
        /*正常順序的字符串轉換為量量顛倒的字符串,如果長度為奇數,補’F’湊成偶數,如:“8613851872468”-->“683158812764F8”*/invert(src,dst,len);
        encode7bit(src,dst,len);/*pdu模式的7-bit編碼
        encode8bit(src,dst,len);/*pdu模式的8-bit編碼*/
        encodeUCS2(src,dst,len);/*pdu模式的UCS2編碼*/

        這里值得一提的是中文短消息的編碼和解碼。GSM短消息中使用的是UTF-8編碼,而實際的計算機上使用的是GB-2312碼,因而存在一個轉換問題。而由于UTF-8和GB-2312編碼之間不存在一一對應的線性關系,因此,只能采用查表的方式進行轉換。

        事實上,以上的中文發送程序也能發送英文或者中英文混發。只是這樣發送英文時,英文字符象中文字符一樣要用兩個字符表示,所以,它和發送中文一樣,只能發送70個字符。

        2.3 短消息的接收

        通過短信接收進程可定時查詢SIM卡,如果有新的短信,則將新的短信讀入、解碼,然后刪除,這樣可以防止由于SIM卡中的短消息滿,而接收不到新的短消息。短信的接收是短信的發送的逆過程,其數據格式和發送短消息時相同。

        接收短信時,首先判斷是否要接收短消息。當得知需要接收短消息后,可用AT+CNMI=?來判斷是否有新的短消息,如果有,則用AT+CMGL=1來讀取短消息,并對讀取的每條短消息進行解碼。當讀取一條短信后,即可用AT+CMGD=index,來直接刪除,然后再讀取下一條短消息。直到不再需要讀取短消息。其代碼為:


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 怀仁县| 松阳县| 龙岩市| 于都县| 安新县| 乌什县| 通许县| 镇雄县| 鸡东县| 华池县| 绥芬河市| 邳州市| 罗源县| 论坛| 海阳市| 桂林市| 岳普湖县| 寻乌县| 临海市| 新蔡县| 盱眙县| 阿鲁科尔沁旗| 隆尧县| 咸阳市| 民县| 奇台县| 东兰县| 石渠县| 咸宁市| 成安县| 越西县| 阳原县| 黎川县| 涿鹿县| 延津县| 金川县| 漾濞| 鄂尔多斯市| 司法| 香河县| 平定县|