無紡布廠家15838056980目錄內(nèi)容目錄內(nèi)容 20. 修改記錄 31. 短信概念 42. 短信分類 52.1. TEXT短信 52.2. PDU短信 53. 短信應(yīng)用 63.1. 發(fā)送短信 63.1.1. TEXT短信方式 63.1.2. PDU短信方式 63.2. 編寫短信 73.2.1. TEXT短信方式 73.2.2. PDU短信方式 73.3. 轉(zhuǎn)發(fā)短信 83.4. 讀取短信 93.4.1. TEXT短信方式 93.4.2. PDU短信方式 93.5. 刪除短信 103.5.1. TEXT短信方式 103.5.2. PDU短信方式 114. PDU串無紡布廠家15838056980分類及結(jié)構(gòu) 124.1. SUBMIT-PDU 124.1.1. 結(jié)構(gòu) 124.1.2. 說明 124.1.3. 舉例分析 154.2. DELIVER-PDU 164.2.1. 結(jié)構(gòu) 174.2.2. 說明 174.2.3. 舉例分析 195. 短信工作過程 225.1. 設(shè)備之間的交互過程 225.2. 平臺的消息處理過程 235.2.1. 發(fā)送短信 235.2.2. 接收短信 230. 修改記錄版本日期作者修改內(nèi)容記錄1.02012-08-10Vicent.Gao初始版本,講述了短信的基本操作,及PDU串的結(jié)構(gòu)2.02012-08-17Vicent.Gao加入新的一章:第5章 “短信工作過程”1. 短信概念短消息,即SMS,英文全稱short message service,是一種使用手機發(fā)送和接收有限長度文本信息的通訊服務(wù);更加詳細(xì)的介紹,請查看鏈接: 短信分類在用戶使用的角度看,短信共分為2類,分別是TEXT短信、PDU短信。在寫短信、發(fā)送短信時,可以選擇使用TEXT短信方式,也可以選擇使用PDU短信方式;在讀取短信時,可以選擇使用TEXT短信方式,無紡布廠家15838056980也可以使用PDU短信方式;編寫的短信、接收的短信,實際是以PDU短信方式存儲在ME或SM中;在發(fā)送短信時,實際是以PDU短信方式發(fā)往SCA,再由SCA轉(zhuǎn)發(fā)至對方手機;2.1 TEXT短信以可讀的方式,編寫、發(fā)送、讀取短信。在編寫短信、發(fā)送短信時,需要內(nèi)部轉(zhuǎn)換成PDU模式,才能進(jìn)行存儲、發(fā)送。如:AT+CMGR=1+CMGR: "REC UNREAD","+25","","2012/08/10 10:56:08+32"OK2.2 PDU短信根據(jù)指定的PDU格式,填充必要的域,如<SCA>, <FO>,<DCS>等,不需要內(nèi)部進(jìn)行轉(zhuǎn)換,可以直接進(jìn)行存儲或發(fā)送。也可以使用PDU短信方式,讀取編寫和接收的短信。如:AT+CMGR=1+CMGR: 1,,F0040D323FAB0986C46ABD96EB81COK3. 短信應(yīng)用客戶在使用短信功能時,可以完成發(fā)送短信、編寫短信、轉(zhuǎn)發(fā)短信、讀取短信、刪除短信的操作。3.1 發(fā)送短信3.1.1 TEXT短信方式AT+CMGF=1 //設(shè)置使用TEXT短信方式OKAT+CSCS="GSM" //設(shè)置編輯短信時,使用的字符集OKAT+CMGS="" //使用CMGS發(fā)送短信給自身,此處需要填寫DA,即目標(biāo)地址>//按<CTRL+Z>開始發(fā)送短信+CMGS: 28 //短信已發(fā)送,MR=28,其中MR為Messge Reference,用來唯一標(biāo)識一條短信OK //短信發(fā)送成功+CMTI: "SM",1 //接收到的短信,存儲在SM中,索引號為1的位置上參考的QCOM Script,無紡布廠家15838056980無紡布廠家15838056980請見壓縮包路徑:QCOM_Script\CMGS\CMGS_TEXT.ini3.1.2 PDU短信方式AT+CMGF=0 //設(shè)置使用PDU短信方式OKAT+CMGS=24 //使用CMGS發(fā)送短信給自身,此處需要填寫TPDU串的長度,即PDU串中除去SCA域之后的數(shù)據(jù)長度,以Byte為單位> 01505FD323FA0AB0986C46ABD96EB81C //按<CTRL+Z>開始發(fā)送短信+CMGS: 29 //短信已發(fā)送,MR=29,其中MR為Messge Reference,用來唯一標(biāo)識一條短信OK //短信發(fā)送成功+CMTI: "SM",2 //接收到的短信,存儲在SM中,索引號為2的位置上參考的QCOM Script,請見壓縮包路徑:QCOM_Script\CMGS\CMGS_PDU.ini3.2 編寫短信3.2.1 TEXT短信方式AT+CMGF=1 //設(shè)置使用TEXT短信方式OKAT+CSCS="GSM" //設(shè)置編輯短信時,使用的字符集OKAT+CMGW //使用CMGW編寫短信,沒有指明DA,即目標(biāo)地址,也可以在命令中指明>//按<CTRL+Z>開始存儲短信+CMGW: 5 //編寫的短信,存儲在索引號為5的位置上OK //編寫短信成功參考的QCOM Script,請見壓縮包路徑:QCOM_Script\CMGW\CMGW_TEXT.ini3.2.2 PDU短信方式AT+CMGF=0 //設(shè)置使用PDU短信方式OKAT+CMGW=17 //使用CMGW編寫短信,此處需要填寫TPDU串的長度,即PDU串中除去SCA域之后的數(shù)據(jù)長度,以Byte為單位> 0011FFAB0986C46ABD96EB81C //按<CTRL+Z>開始存儲短信+CMGW: 7 //編寫的短信,存儲在索引號為7的位置上OK //編寫短信成功參考的QCOM Script,請見壓縮包路徑:QCOM_Script\CMGW\CMGW_PDU.ini3.3 轉(zhuǎn)發(fā)短信需要無紡布廠家15838056980指明短信存儲時使用的索引號,才能完成轉(zhuǎn)發(fā)操作。由于短信在存儲時,都是以PDU短信方式來進(jìn)行存儲的,所以此命令與使用的短信方式(TEXT或PDU)無關(guān)。AT+CMGF=0 //設(shè)置使用TEXT短信方式OKAT+CSCS="GSM" //設(shè)置編輯短信時,使用的字符集OKAT+CMSS=7,"" //使用CMSS轉(zhuǎn)發(fā)短信給自身,此無紡布廠家15838056980短信存儲在索引號為7的位置上,此處指明了DA,即目標(biāo)地址+CMSS: 30 //短信已發(fā)送,MR=29,其中MR為Messge Reference,用來唯一標(biāo)識一條短信OK //短信發(fā)送成功+CMTI: "SM",9 //接收到的短信,存儲在SM中,索引號為9的位置上AT+CMGF=1 //設(shè)置使用PDU短信方式OKAT+CSCS="GSM" //設(shè)置編輯短信時,使用的字符集OKAT+CMSS=7,"" //使用CMSS轉(zhuǎn)發(fā)短信給自身,此短信存儲在索引號為7的位置上,此處指明了DA,即目標(biāo)地址+CMSS: 31 //短信已發(fā)送,MR=29,其中MR為Messge Reference,用來唯一標(biāo)識一條短信OK //短信發(fā)送成功+CMTI: "SM",10 //接收到的短信,存儲在SM中,索引號為10的位置上注:在TEXT短信方式、PDU短信方式下,轉(zhuǎn)發(fā)同一條短信,都可以成功發(fā)送,則說明CMSS轉(zhuǎn)發(fā)短信與具體采用的短信方式(使用CMGF命令設(shè)置)無關(guān)。參考的QCOM Script,請見壓縮包路徑:QCOM_Script\CMSS\CMSS.ini3.4 讀取短信使用CMGD讀取單條短信,使用CMGL讀取某一類別的短信。3.4.1 TEXT短信方式AT+CMGF=1 //設(shè)置使用TEXT短信方式OKAT+CMGR=1 //使用CMGR命令,讀取索引號1位置上的短信+CMGR: "REC UNREAD","+25","","2012/08/10 10:56:08+32" //在TEXT短信方式下,列出的短信內(nèi)容OKAT+CMGL=? //使用CMGL讀取指定類別的短信,在TEXT短信方式下,查詢CMGL命令的用法+CMGL: ("REC UNREAD","REC READ","STO UNSENT","STO SENT","ALL") //在TEXT短信方式下,使用String方式來指明要讀取短信的類別OKAT+CMGL="STO UNSENT" //顯示所有未發(fā)送的短信+CMGL: 3,"STO UNSENT","","", //第1條未發(fā)送短信,存儲在索引號3位置上+CMGL: 4,"STO UNSENT","","", //第2條未發(fā)送短信,存儲在索引號4位置上+CMGL: 5,"STO UNSENT","","", //第3條未發(fā)送短信,存儲在索引號5位置上+CMGL: 6,"STO UNSENT","","", //第4條未發(fā)送短信,存儲在索引號6位置上OK參考的QCOM Script,請見壓縮包路徑:QCOM_Script\CMGR+CMGL\CMGR+CMGL_TEXT.ini3.4.2 PDU短信方式AT+CMGF=0 //設(shè)置使用PDU短信方式OKAT+CMGR=1 //使用CMGR命令,讀取索引號1位置上的短信+CMGR: 1,,F0040D323FAB0986C46ABD96EB81C //在PDU短信方式下,列出的短信內(nèi)容OKAT+CMGL=? //使用CMGL讀取指定類別的短信,在PDU短信方式下,查詢CMGL命令的用法+CMGL: (0-4) //在PDU短信方式下,使用Integer方式來指明要讀取短信的類別OKAT+CMGL=2 //顯示所有未發(fā)送的短信+CMGL: 3,2,,17 //第1條未發(fā)送短信,存儲在索引號3位置上0011FFAB0986C46ABD96EB81C+CMGL: 4,2,,23 //第2條未發(fā)送短信,存儲在索引號4位置上0011FF0B3FAB0986C46ABD96EB81C+CMGL: 5,2,,17 //第3條未發(fā)送短信,存儲在索引號5位置上0011FFAB0986C46ABD96EB81C+CMGL: 6,2,,17 //第4條未發(fā)送短信,存儲在索引號6位置上0011FFAB0986C46ABD96EB81COK參考的QCOM Script,請見壓縮包路徑:QCOM_Script\CMGR+CMGL\CMGR+CMGL_PDU.ini3.5 刪除短信在刪除短信時,建議使用CMGD刪除單條命令,使用QMGDA刪除指定類別的短信。當(dāng)然,使用CMGD命令的<delflag>參數(shù),也可以刪除指定類別的短信。3.5.1 TEXT短信方式AT+CMGF=1 //設(shè)置使用TEXT短信方式OKAT+CMGD=1 //使用CMGD刪除索引號1位置上的短信OKAT+QMGDA=? //使用QMGDA刪除某一類別的短信,在TEXT短信方式下,查詢QMGDA命令的用法+QMGDA:("DEL READ","DEL UNREAD","DEL SENT","DEL UNSENT","DEL INBOX","DEL ALL") //在TEXT短信方式下,使用String方式來指明要刪除短信的類別OKAT+QMGDA="DEL READ" //刪除所有已讀短信OK參考的QCOM Script,請見壓縮包路徑:QCOM_Script\CMGD+QMGDA\CMGD+QMGDA_TEXT.ini3.5.2 PDU短信方式AT+CMGF=0 //設(shè)置使用PDU短信方式OKAT+CMGD=1 //使用CMGD刪除索引號1位置上的短信OKAT+QMGDA=? //使用QMGDA刪除某一類別的短信,在PDU短信方式下,查詢QMGDA命令的用法+QMGDA:(1-6) //在PDU短信方式下,使用Integer方式來指明要刪除短信的類別OKAT+QMGDA=1 //刪除所有已讀短信OK參考的QCOM Script,請見壓縮包路徑:QCOM_Script\CMGD+QMGDA\CMGD+QMGDA_PDU.ini4. PDU串分類及結(jié)構(gòu)在使用PDU短信方式,進(jìn)行短信的發(fā)送、編寫、讀取時,對于PDU串結(jié)構(gòu)的了解是很有必要的。PDU串共有2類,分別是SUBMIT-PDU,DELIVER-PDU,各有不同的結(jié)構(gòu)。4.1 SUBMIT-PDUSUBMIT-PDU,是發(fā)送短信時采用的PDU串。SUBMIT-PDUSCATPDUDALenTypeAddrFOMRLenTypeAddrPIDDCSVPUDLUDP1P2P3P4P5P6P7P8P9P10P11P12P1310~10~~~1401 ~ 122~124.1.1 結(jié)構(gòu)注:表中的第1行為 表頭部分,說明表所要表達(dá)的內(nèi)容;表中的第2行為 PDU串結(jié)構(gòu)中,包含有2大部分;表中的第3行為 PDU串結(jié)構(gòu)中,TPDU部分中再劃分的結(jié)構(gòu);表中的第4行為 PDU串結(jié)構(gòu)中,細(xì)分的每個部分;表中的第5行為 對PDU串結(jié)構(gòu)中,細(xì)分的每個部分,進(jìn)行重新編碼,方便后續(xù)的描述;表中的第6行為 PDU串結(jié)構(gòu)中,細(xì)分的每個部分,編碼時占用的字節(jié)數(shù)范圍;表中的第7行為 PDU串結(jié)構(gòu)中,包含的地址區(qū)域,編碼時占用的字節(jié)數(shù)范圍;4.1.2 說明P1P1區(qū)域?qū)儆赟CA無紡布廠家15838056980無紡布廠家15838056980域的一部分,固定占有1個字節(jié),表示SCA域的長度,實際上表示的是P2區(qū)域和P3區(qū)域共同占有的字節(jié)數(shù)。當(dāng)P1=0x00時,表示SCA域不存在,此時平臺會從CSCA命令中,讀取需要的短信服務(wù)中心號碼。P2P2區(qū)域?qū)儆赟CA域的一部分,當(dāng)P1=0x00時,P2區(qū)域?qū)⒉淮嬖冢划?dāng)P1!=0x00時,P2 區(qū)域存在,并固定占有1字節(jié)大小;P2區(qū)域,無紡布廠家15838056980用于表示短信服務(wù)中心號碼的類型,可能取得值有:0x91(國際型),0x81(未知類型),0xA1(國內(nèi)型)。P3P3區(qū)域?qū)儆赟CA域的一部分,當(dāng)P1=0x00時,P3區(qū)域?qū)⒉淮嬖冢划?dāng)P1!=0x00時,P3 區(qū)域存在,其占有的字節(jié)數(shù)為:P1 – 1。P3區(qū)域,用于存儲短信服務(wù)中心的號碼,此號碼采用BCD編碼。P4P4區(qū)域固定占有1個字節(jié),為TPDU域的第1個字節(jié),即First Octet。P4區(qū)域用于設(shè)置PDU串的類型,及其他重要參數(shù)。其結(jié)構(gòu)如下表:SUBMIT-PDU FO (First Octet)RPUDHISRRVPFVPFRDMTIMTI說明如下:MTI 2bit消息類型00收01發(fā)RD 1bit重復(fù)信元丟棄0通知服務(wù)中心碰到同源同目的地同樣的MR短消息序號的短消息接受1拋棄此時將在短消息提交報告中返回一個適當(dāng)?shù)腇CS值VPF 2bit有效期限格式00 VP不存在10 VP區(qū)存在用一個字節(jié)表示是相對值01 保留11 存在半個字節(jié)表示絕對值SRR 1bit狀態(tài)報告要求.UDHI 1bit用戶數(shù)據(jù)頭標(biāo)示0用戶數(shù)據(jù)沒有頭信息1有一般為0RP 1bit是否有回復(fù)路徑的標(biāo)示1有0沒有一般為0[Vicent.Gao]:無紡布廠家15838056980后續(xù)會對此段內(nèi)容,針對平臺中的代碼,進(jìn)行更加詳細(xì)的描述。P5P5區(qū)域固定占有1個字節(jié),為Message Reference,用于唯一標(biāo)識一條短信。P6P6區(qū)域?qū)儆贒A域的一部分,固定占有1個字節(jié),表示DA域的長度,實際上表示的是P8區(qū)域含有的BCD碼字符的個數(shù)。P7P7區(qū)域?qū)儆贒A域的一部分,固定占有1個字節(jié),表示目標(biāo)地址的類型,可能取得值有:0x91(國際型),0x81(未知類型),0xA1(國內(nèi)型)。P8P8區(qū)域?qū)儆贒A域的一部分,當(dāng)P6=0x00時,P8區(qū)域?qū)⒉淮嬖冢划?dāng)P6!=0x00時,P8區(qū)域存在,其占有的字節(jié)數(shù)為:P6 / 2。P8區(qū)域用于存儲目的地址號碼。P9P9區(qū)域固定占有1個字節(jié),為Protocol Identifier,用于標(biāo)識一條短信的種類,為文本短信,還是為其他的短信,如Voice Telephone, E-Mail SMS,一般設(shè)置為0x00即可。P10P10區(qū)域固定占有1個字節(jié),為Data Coding Scheme,表示短信內(nèi)容采用的編碼,及短信的類別(Message Class)。其結(jié)構(gòu)如下表:DCS (Data Coding Scheme)--Bit5Bit4Bit3Bit2Bit1Bit0說明如下:Bit7 Bit6一般設(shè)置為00Bit5文本是否壓縮,0表示未壓縮,1表示采用GSM標(biāo)準(zhǔn)壓縮。Bit4是否指定短消息類別,0表示沒有指定,1表示已指定。Bit3 Bit2指定短信內(nèi)容采用的編碼,00無紡布廠家15838056980表示默認(rèn)字母表,01表示8bit數(shù)據(jù),10表示UCS編碼,11表示保留。Bit1 Bit0指定短消息類別,00表示Class 0,01表示Class 1,10表示Class 2,11表示Class 3。其中:Class 0,直接顯示到用戶終端;Class 1,短消息存儲在SIM卡上;Class 2,短消息必須存儲在SIM卡上禁止直接傳輸?shù)浇K端;Class 3,短消息存貯在用戶設(shè)備上;平臺解碼方法:smsal_decode_dcsP11P11區(qū)域,固定占有1個字節(jié),即Validiy Period,用于表示短信服務(wù)中心在收到短信后,最長可以暫存的時間,過了有效時間之后,如果這條短信仍然沒有被短信服務(wù)中心轉(zhuǎn)發(fā)出去,那么將會被短信服務(wù)中心丟棄。有效時間,分為2種格式,相對格式和絕對格式,一般都采用相對格式。相對格式的有效時間計算方法如表:VP計算方法00 – 8F(VP+1)*5 分鐘 從 5 分鐘間隔到 12 個小時90 – A712 小時 + (VP – 143)*30 分鐘A8 – C4(VP – 166) * 1 天C5 – FF(VP – 192) * 1 周P12P12區(qū)域,固定占有1個字節(jié),即User Data Length,表示用戶數(shù)據(jù)長度。當(dāng)短信內(nèi)容采用GSM-7bit編碼時,其表示P13區(qū)域含有的有效字符的個數(shù);當(dāng)短信內(nèi)容采用其他編碼時,如UCS2,其表示P13區(qū)域含有的字節(jié)數(shù);P13當(dāng)P12=0x00時,P13無紡布廠家15838056980區(qū)域不存在;當(dāng)P12!=0x00時,P13區(qū)域存在,用于存儲用戶實際發(fā)送的短信內(nèi)容。P13區(qū)域最大只有140字節(jié)的空間可供利用,當(dāng)短信內(nèi)容采用GSM-7bit編碼時,其最大可以存儲140 + 140 / 7 = 160個字符;當(dāng)短信內(nèi)容采用UCS2編碼時,其最大可以存儲140 / 2 = 70個字符,如漢字字符。4.1.3 舉例分析SUBMIT-PDU串如下:01505FD323FA0AB0986C46ABD96EB81C拆分如下:08 91 5F0 11 00 0D 91 3F5 00 00 0A 0A B0986C46ABD96EB81C08 91 5F0 11 00 0D 91 3F5 00 00 AA 0A B0986C46ABD96EB81C如表:P1/SCA LenP2/SCA TypeP3/SCA AddrP4/FOP5/MR01505F01100P6/DA LenP7/DA TypeP8/DA AddrP9/PIDP10/DCS0D323F50000P11/VPP12/UDLP13/UD0A0AB0986C46ABD96EB81C分析結(jié)果:P1內(nèi)容:08解析:SCA域長度為8個字節(jié),即P2區(qū)域和P3區(qū)域總共的區(qū)域有8個字節(jié),其中P2區(qū)域固定占用1個字節(jié),P3區(qū)域占用7個字節(jié)。P2內(nèi)容:91解析:短信服務(wù)中心號碼為國際型。P3內(nèi)容:5F0解析:短信服務(wù)中心號碼為:00P4內(nèi)容:11解析:此PDU類型為SUBMIT-PDU,采用相對有效期格式。P5內(nèi)容:00解析:Messge Reference,即短消息發(fā)送參考號,采用默認(rèn)值00。P6內(nèi)容:0D解析:DA域長度為0D/02=7個字節(jié),含有0D=14個BCD碼字符,即P8區(qū)域占有7個字節(jié),含有14個BCD碼字符。P7內(nèi)容:91解析:目的地址號碼類型為國際型。P8內(nèi)容:3F5解析:目的地址號碼為:25P9內(nèi)容:00解析:Protocol Identifier,采用默認(rèn)值00,即普通文本短消息。P10內(nèi)容:00解析:Data Coding Scheme,采用默認(rèn)值00,即GSM-7bit編碼,Class 1類型。P11內(nèi)容:0A解析:無紡布廠家15838056980短消息在短信服務(wù)中心存儲的有效時間為:(0A + 1) * 5 = 55分鐘。P12內(nèi)容:0A解析:由于采用GSM-7bit編碼,所以此處表示P13區(qū)域內(nèi)含有10個字符。P13內(nèi)容:B0986C46ABD96EB81C解析:通過對GSM-7bit編碼內(nèi)容進(jìn)行解碼,得知短信內(nèi)容為:4.2 DELIVER-PDUDELIVER-PDU,是接收到的短信采用的PDU串。4.2.1 結(jié)構(gòu)DELIVER-PDUSCATPDUOALenTypeAddrFOLenTypeAddrPIDDCSSCSTUDLUDP1P2P3P4P5P6P7P8P9P10P11P12116~~~1408~ 128~12注:表中的第1行為 表頭部分,說明表所要表達(dá)的內(nèi)容;表中的第2行為 PDU串結(jié)構(gòu)中,包含有2大部分;表中的第3行為 PDU串結(jié)構(gòu)中,TPDU部分中再劃分的結(jié)構(gòu);表中的第4行為 PDU串結(jié)構(gòu)中,細(xì)分的每個部分;表中的第5行為 對PDU串結(jié)構(gòu)中,細(xì)分的每個部分,進(jìn)行重新編碼,方便后續(xù)的描述;表中的第6行為 PDU串結(jié)構(gòu)中,細(xì)分的每個部分,編碼時占用的字節(jié)數(shù)范圍;表中的第7行為 PDU串結(jié)構(gòu)中,包含的地址區(qū)域,編碼時占用的字節(jié)數(shù)范圍;4.2.2 說明P1P1區(qū)域?qū)儆赟CA域的一部分,固定占有1個字節(jié),表示SCA域的長度,實際上表示的是P2區(qū)域和P3區(qū)域共同占有的字節(jié)數(shù)。P2P2區(qū)域?qū)儆赟CA域的一部分,固定占有1個字節(jié),用于表示短信服務(wù)中心號碼的類型,可能取得值有:0x91(國際型),0x81(未知類型),0xA1(國內(nèi)型)。P3P3區(qū)域?qū)儆赟CA域的一部分,其占有的字節(jié)數(shù)為:P1 – 1,用于存儲短信服務(wù)中心的號碼,此號碼采用BCD編碼。P4P4區(qū)域固定占有1個字節(jié),為TPDU域的第1個字節(jié),即First Octet。P4區(qū)域用于設(shè)置PDU串的類型,及其他重要參數(shù)。其結(jié)構(gòu)如下表:DELIVER-PDU FO (First Octet)RPUDHISRI--MMSMTIMTI說明如下:MTI 2bit消息類型00收01發(fā)MMS 1bit短消息服務(wù)中心是否有更多短消息等待移動臺1有0無默認(rèn)為1SRI 1bit狀態(tài)報告標(biāo)示0不需要狀態(tài)返回到移動設(shè)備1需要默認(rèn)為0UDHI 1bit用戶數(shù)據(jù)頭標(biāo)示0用戶數(shù)據(jù)沒有頭信息1有一般為0RP 1bit是否有回復(fù)路徑的標(biāo)示1有0沒有一般為0[Vicent.Gao]:后續(xù)會對此段內(nèi)容,針對平臺中的代碼,進(jìn)行更加詳細(xì)的描述。P5P5區(qū)域?qū)儆贠A域的一部分,固定占有1個字節(jié),表示DA域的長度,實際上表示的是P7區(qū)域含有的BCD碼字符的個數(shù)。P6P6區(qū)域?qū)儆贒A域的一部分,固定占有1個字節(jié),表示目標(biāo)地址的類型,可能取得值有:0x91(國際型),0x81(未知類型),0xA1(國內(nèi)型)。P7P7區(qū)域?qū)儆贒A域的一部分,其占有的字節(jié)數(shù)為:P5 / 2,用于存儲發(fā)送方的號碼。P8P8區(qū)域固定占有1個字節(jié),為Protocol Identifier,用于標(biāo)識一條短信的種類,為文本短信,還是為其他的短信,如Voice Telephone, E-Mail SMS,一般都為0x00,即普通文本短信。P9P9區(qū)域固定占有1個字節(jié),為Data Coding Scheme,表示短信內(nèi)容采用的編碼,及短信的類別(Message Class)。其結(jié)構(gòu)如下表:DCS (Data Coding Scheme)--Bit5Bit4Bit3Bit2Bit1Bit0說明如下:Bit7 Bit6一般設(shè)置為00Bit5文本是否壓縮,0表示未壓縮,1表示采用GSM標(biāo)準(zhǔn)壓縮。Bit4是否指定短消息類別,0表示沒有指定,1表示已指定。Bit3 Bit2指定短信內(nèi)容采用的編碼,00表示默認(rèn)字母表,01表示8bit數(shù)據(jù),10表示UCS編碼,11表示保留。Bit1 Bit0指定短消息類別,00表示Class 0,01表示Class 1,10表示Class 2,11表示Class 3。其中:Class 0,直接顯示到用戶終端;Class 1,短消息存儲在SIM卡上;Class 2,短消息必須存儲在SIM卡上禁止直接傳輸?shù)浇K端;Class 3,短消息存貯在用戶設(shè)備上;平臺解碼方法:smsal_decode_dcsP10P10區(qū)域固定占有7個字節(jié),即Serive Center Time Stamp,用于存儲SCA轉(zhuǎn)發(fā)該條短信的時間戳。其結(jié)構(gòu)如下表:SCTS年月日時無紡布廠家15838056980分秒時區(qū)說明如下:假設(shè)P10區(qū)域為:023,再拆分成:21 80 01 01 65 80 23,則表示SCTS為:12年 08月 10日 10時 56分 08秒 32時區(qū)P11P11區(qū)域,固定占有1個字節(jié),即User Data Length,表示用戶數(shù)據(jù)長度。當(dāng)短信內(nèi)容采用GSM-7bit編碼時,其表示P12區(qū)域含有的有效字符的個數(shù);當(dāng)短信內(nèi)容采用其他編碼時,如UCS2,其表示P12區(qū)域含有的字節(jié)數(shù);P12當(dāng)P11=0x00時,P12區(qū)域不存在;當(dāng)P11!=0x00時,P12區(qū)域存在,用于存儲用戶實際發(fā)送的短信內(nèi)容。P12區(qū)域最大只有140字節(jié)的空間可供利用,當(dāng)短信內(nèi)容采用GSM-7bit編碼時,其最大可以存儲140 + 140 / 7 = 160個字符;當(dāng)短信內(nèi)容采用UCS2編碼時,其最大可以存儲140 / 2 = 70個字符,如漢字字符。4.2.3 舉例分析DELIVER-PDU串如下:01505F0040D323FAB0986C46ABD96EB81C拆分如下:08 91 5F0 04 0D 91 3F5 00 00 023 0A B0986C46ABD96EB81C如表:P1/SCA LenP2/SCA TypeP3/SCA AddrP4/FOP5/OA Len01505F0040DP6/OA TypeP7/OA AddrP8/PIDP9/DCSP10/SCTS323F50000023P11/UDLP12/UD0AB0986C46ABD96EB81C分析結(jié)果:P1內(nèi)容:08解析:SCA域長度為8個字節(jié),即P2區(qū)域和P3區(qū)域總共的區(qū)域有8個字節(jié),其中P2區(qū)域固定占用1個字節(jié),P3區(qū)域占用7個字節(jié)。P2內(nèi)容:91解析:短信服務(wù)中心號碼為國際型。P3內(nèi)容:5F0解析:短信服務(wù)中心號碼為:00P4內(nèi)容:04解析:此PDU類型為DELIVER-PDU。P5內(nèi)容:0D解析:OA域長度為0D/02=7個字節(jié),含有0D=14個BCD碼字符,即P7區(qū)域占有7個字節(jié),含有14個BCD碼字符。P6內(nèi)容:91解析:發(fā)送方號碼類型為國際型。P7內(nèi)容:3F5解析:發(fā)送方號碼為:25P8內(nèi)容:00解析:Protocol Identifier,采用默認(rèn)值00,即普通文本短消息。P9內(nèi)容:00解析:Data Coding Scheme,采用默認(rèn)值00,即GSM-7bit編碼,Class 1類型。P10內(nèi)容:023解析:短消息服務(wù)中心在轉(zhuǎn)發(fā)此條短信的時間戳為:2012年08月10日10時56分08秒。P11內(nèi)容:0A解析:由于采用GSM-7bit編碼,所以此處表示P12區(qū)域內(nèi)含有10個字符。P12內(nèi)容:B0986C46ABD96EB81C解析:通過對GSM-7bit編碼內(nèi)容進(jìn)行解碼,得知短信內(nèi)容為:5. 短信工作過程5.1 設(shè)備之間的交互過程5.2 平臺的消息處理過程5.2.1 發(fā)送短信5.2.2 接收短信

添加微信好友, 獲取更多信息
復(fù)制微信號

