CHƯƠNG II : MODEM SIM900 VÀ SMS/GPRS
2.3 Tập lệnh AT
2.3.1 Giới thiệu về tập lệnh AT
Một tiêu chuẩn đối với phần mềm điều khiển modem do hãng Hayes Microcomputer Products soạn thảo và được đưa ra lần đầu tiên dùng với modem Smartmodems của công ty đó. Gọi là tập lệnh AT (viết tắt) của ATtention vì nhiều lệnh trong đó được bắt đầu bằng chữ AT. Tập lệnh này được các modem loại “tương thích với Hayes” mô phỏng theo một cách rộng rãi và thực tế đã trở thành chuẩn đối với các modem của máy tính cá nhân [2].
Hình 2-7: Vị trí sử dụng tập lệnh AT trong hệ thống
+ Lệnh cơ bản: Bắt đầu bằng chữ viết hoa, sau đó là các ký tự khác, ví dụ ATD, M1, AT+CMGR…
+ Lệnh mở rộng: Bắt đầu bằng ký tự &, sau đó là một chữ viết hoa và các ký tự khác, đây là phần mở rộng của nhóm lệnh cơ bản.
+ Các lệnh về đặc tính: Thường bắt đầu bằng dấu / hoặc %. Các lệnh này thay đổi tùy thuộc vào nhà sản xuất modem.
+ Các lệnh về thanh ghi: Lệnh này giúp thay đổi giá trị thanh ghi. Ví dụ Sr = n, thanh ghi r được gán giá trị n.
Cú pháp lệnh
Cú pháp thông thường của một lệnh AT bắt đầu bằng chữ AT và kết thúc bằng ký hiệu <CR> (phím Enter).
Mã trả về của lệnh AT
Mã trả về của các lệnh AT thường bắt đầu và kết thúc bởi <CR><LF>. Trừ các lệnh AT cơ bản như ATV, ATQ...
Các lưu ý khác:
+ Nếu cú pháp lệnh không đúng thì modem GSM sẽ trả về chuỗi ERROR. + Nếu cú pháp đúng nhưng tham số sai thì sẽ trả về +CME ERROR:<Err> hoặc +CMS ERROR :<SMSErr> phụ thuộc vào các lỗi khác nhau.
+ Nếu lệnh thực hiện thành công thì sẽ trả về chữ OK ở cuối chuỗi kết quả trả về .
Nhóm lệnh AT cơ bản cũng gồm rất nhiều lệnh, do thời gian có hạn, nên em chưa nghiên cứu hết mà chỉ đi sâu vào một số lệnh thường dùng và một số lệnh phục vụ cho luận văn này. Đó là những lệnh chung và những lệnh liên quan đến SMS.
2.3.2 Các lệnh chung
Bảng sau mô tả đáp ứng của các lệnh AT thường dùng:
Bảng 2-3: Các lệnh AT thường dùng Cú pháp lệnh, chức năng Ví dụ đáp ứng Xem nhà sản xuất AT+CGMI WAVECOM MODEM OK
Xem loại modem AT+CGMM 900P OK Xem phiên bản phần mềm, số lần sửa AT+CGMR1 310_G250.51 806216 032199 17:04 OK Xem số imei AT+CGSN 135790248939 OK +CME ERROR:22 Quy định dạng ký tự của việc gửi,
AT+CSCS= “GSM” AT+CSCS= “PCCP437” AT+CSCS= ? OK OK +CSCS:(“GSM”,“PCCP437”,“CUSTOM”, “HEX”) OK Nhận dạng IMSI(International mobile subcriber identify)
AT+CIMI
208200120320598
Note:IMSI gồm 15 số,bắt đầu bằng MCC, hoặc MNC Lấy CCID (Chip/Smart Card
Interface Devices) AT+CCID AT+CCID ? +CCID :”123456789AB111213141” OK Một số thuật ngữ viết tắt: 1) ME (Mobile Equipment). 2) MS (Mobile Station). 3) TA (Terminal Adapter).
4) DCE (Data Communication Equipment) or facsimile DCE(FAX modem, FAX board).
5) TE (Terminal Equipment).
6) DTE (Data Terminal Equipment) or plainly “the application” which is running on an embedded system.
2.3.3 Các lệnh liên quan đến SMS
2.3.3.1 Các tham số liên quan
<da> : Địa chỉ đích. Ví dụ: GSM 03.10 TP-DA. <dcs> : Khung mã dữ liệu.
<dt> : Khuôn dạng thời gian. <fo> : Octet đầu tiên.
<index> : Vị trí lưu tin nhắn trong bộ nhớ.
<length> : Text mode (+CMGF=1) , PDU mode (+CMGF=0) ,độ dài của dữ liệu TP trong các octet.
<mem1> : Bộ nhớ được sử dụng để viết và gửi tin 1. <mem2> : Bộ nhớ được sử dụng để viết và gửi tin 2.
<mid> : Nhận dạng tin quảng bá (CBM : cell broadcast message). <mr> : Tin nhắn tham chiếu.
<oa> : Địa chỉ ban đầu (Originator Address ). <pid> : Nhận dạng giao thức.
<pdu> : Biểu diễn tin nhẵn dưới dạng hexa. <ra> : Địa chỉ nhận.
<scts> : Định dạng thơi gian của trung tâm dịch vụ. <sn> : Số serial của CBM.
<stat> : Trạng thái của tin nhắn trong bộ nhớ. <total1> : Số vị trí tin nhắn ở trong mem1. <total2> : Số vị trí tin nhắn ở trong mem2. <used1> : Tổng số tin nhắn trong mem1. <used2> : Tổng số tin nhắn trong mem2.
<vp> : Thời gian chứng thực (Validity period of short message , giá trị mặc định là 167, đã được giải thích phía trên ).
2.3.3.2 Các lệnh liên quan đến SMS
1. Lệnh chọn dịch vụ tin nhắn +CSMS Cú pháp lệnh: AT+CSMS?
Đáp ứng: +CSMS: <service>,<mt>,<mo>,<bm>
Lệnh này dùng để kiểm tra loại tin nhắn mà modem hỗ trợ. Có 3 loại tin nhắn là:
+ Mobile-originated SMS messages (mo): tin nhắn gửi từ modem, đến SMSC.
+ Mobile-terminated SMS messages (mt): tin nhắn gửi từ SMSC đến modem + Cell broadcast messages (bm): các loại tin nhắn quảng bá
Ví dụ: +CSMS:0,1,1,1
Với giá trị trả về là một thì có nghĩa là modem đó hỗ trợ loại tin nhắn ở vị trí tương ứng.
2. Chọn vị trí lưu tin nhắn +CPMS
Kiểm tra vị trí lưu tin nhắn: AT+CPMS=? Hoặc AT+CPMS? Đáp ứng:
+CPMS: <mem1>, <used1>,<total1>,<mem2>,<used2>,<total2>, <mem3>,<used3>,<total3>
Cú pháp lệnh : AT+CPMS= [<mem1> ,<mem2> ,<mem3>] Lệnh này dùng để:
+ Chọn vùng nhớ lưu tin nhắn cho các quá trình đọc, viết, gửi, nhận, xóa tin nhắn.
+ Xác định số tin nhắn đang có trong bộ nhớ.
+ Xác định số tin nhắn tối đa có thể lưu ở trong bộ nhớ. Ví dụ : AT+CPMS= “ME”, “SM”, “MT”
Trong đó :
ME: Nếu tin nhắn được lưu trong bộ nhớ của modem. SM: Nếu tin nhắn được lưu trong bộ nhớ sim.
MT: Hỗ trợ lưu tin nhắn cả trong sim và modem. 3. Định dạng tin nhắn +CMGF
Kiểm tra định dạng tin nhắn hiện thời: AT+CMGF? Hoặc AT+CMGF=? Đáp ứng: +CMGF [mode] Ví dụ: + CMGF: (0,1) Hỗ trợ cả dạng PDU và dạng TEXT. Cú pháp lệnh: AT+CMGF=[<mode>] Ví dụ: AT+CMGF=1
4. Lưu cấu hình +CSAS
Cú pháp lệnh: AT+CSAS=[<profile>]
Lệnh này dùng để lưu các cấu hình của tin nhắn vào bộ nhớ, lưu các tham số của các lệnh như CMGF, CNMI, CSDH…
5. Hiện thông số tin nhắn ở chế độ Text +CSDH Cú pháp lệnh: AT+CSDH?
Đáp ứng: +CSDH: 0
Lệnh dùng để hiện tham số của tin nhắn ở chế độ text. 6.Đọc tin nhắn +CMGR
Đọc tin nhắn theo vị trí lưu tin trong bộ nhớ . AT+CMGR=<vị trí tin được lưu>
Lệnh này làm thay đổi trạng thái của tin nhắn sau khi đọc. Ví dụ:
+CMGR:"RECREAD","+84988668514",,"07/04/20,10:08:02+32", 145,4,0,0,"+85290000000",145,49,welcome to coltech
Trong đó:
+ Có 4 trạng thái tin nhắn là: REC READ (tin đã được đọc), REC UNREAD(tin chưa được đọc), STO SENT(tin lưu trong bộ nhớ đã được gửi đi), STO UNSENT (tin lưu trong bộ nhớ nhưng chưa được gửi đi )
+ “+84988668514” là số điện thoại đã gửi tin nhắn đến. + ",,"07/04/20,10:08:02+32", Thời gian nhận tin. + 145,4,0,0: Các thông số về loại địa chỉ của SMSC. + 49: Độ dài của tin nhắn.
7. Hiện danh sách tin nhắn +CMGL
Cú pháp lệnh: AT+CMGL= “status”,<mode>
Đápứng: +CMGL:<index>,<stat>,[<alpha>],<length><CR><LF> <pdu><CR><LF>
Trong đó:
Status: là 4 trạng thái của tin nhắn đã nêu ở trên, ngoài ra còn có từ khóa ALL, để hiện tất cả tin nhắn có trong sim.
Mode: PDU hoặc TEXT
Ví dụ: AT+CMGL= “REC UNREAD”
8.Gửi tin nhắn +CMGS
Cú pháp lệnh: AT+CMGS= <da> [,<toda> ] <CR>
Ví dụ: AT+CMGS="+84988668514",145<CR>Day la tin nhan gui tu modem GSM o che do text.<Ctrl+z>
9. Viết tin nhắn vào bộ nhớ CMGW
Cú pháp lệnh: AT+CMGW= <oa/da> [,<tooa/toda> [,<stat> ] ] <CR> enter text <ctrl-Z / ESC>
Ví dụ:
AT+CMGW="+85291234567",145,"STO UNSENT"<CR>tin nhan nay duoc luu trong bo nho.<Ctrl+z>
10.Gửi tin nhắn từ bộ nhớ +CMSS
Cú pháp lệnh: AT+CMSS=<index>[,<da> [,<toda>] ] Lệnh này giúp gửi tin nhắn đã lưu trong bộ nhớ. Ví dụ: AT+CMSS=5,"+85291234567",145
Sau lệnh này, tin nhắn ở vị trí số 5 trong bộ nhớ sẽ được gửi đến số điện thoại +85291234567, đồng thời trạng thái tin nhắn này sẽ được chuyển từ STO UNSENT sang STO SENT.
11.Cấu hình thông số ở chế độ Text +CSMP
Cú pháp lệnh: AT+CSMP=<fo>, <vp>, <pid>,<dcs> Ví dụ: AT+CSMP=17,0,2, 25
12.Xóa tin nhắn +CMGD
Cú pháp lệnh: AT+CMGD=<index>,<flag> Xóa tin nhắn ở vị trí index trong bộ nhớ.
Flag được gán từ 0 đến 4 với ý nghĩa tương ứng là:
+ 0: chỉ xóa tin nhắn ở vị trí index, đây là giá trị được gán mặc định.
+ 1: bỏ qua thông số index, chỉ xóa các tin nhắn có trạng thái là received read (đã được đọc).
+ 2: bỏ qua index, xóa các tin nhắn có trạng thái là received read và stored sent (tin nhắn lưu trữ đã được gửi đi).
+ 3: bỏ qua index,xóa tất các tin nhắn có trạng thái là received read, stored sent và stored unsent.
+ 4 : xóa tất cả các tin nhắn có trong bộ nhớ sim. Ví dụ: AT+CMGD=1,4
Sau lệnh này, toàn bộ tin nhắn sẽ bị xóa. 13.Địa chỉ trung tâm dịch vụ +CSCA
Cú pháp lệnh: AT+CSCA = [<sca>[,<tosca>]] Ví dụ: AT+CSCA= “+8498020030”
+8498020030 là số điện thoại của SMSC. 14. Chọn loại tin nhắn quảng bá +CSCB
Cú pháp lệnh: AT+CSCB= <mode>, [ <mids>, [ <dcss> ] ] Ví dụ: AT+CSCB=0,”15-17,50,86”,””
Giá trị trong ví dụ dùng để chỉ ngôn ngữ mà tin nhắn quảng bá hỗ trợ. 15. Nhận dạng tin nhắn quảng bá +WCBM
Cú pháp lệnh : AT+WCBM= <mids> Ví dụ : AT+WCBM=”10,100,1000,10000” 16. Thay đổi trạng thái tin nhắn +WMSC Cú pháp lệnh : AT+WMSC= <loc>, <status> Ví dụ : AT+WMSC= 1, STO SENT
Status ở đây là trạng thại sau khi thay đổi. 17. Ghi đè tin nhắn +WMGO
Cú pháp lệnh: AT+WMGO= <loc> Ví dụ: AT+WMGO= 1