Các công cụ lập trình xử lý dữ liệu bản đồ của MapXtreme tích hợp vào bộ Microsoft Visual Studio 2008.
4.2.4. Giao tiếp GSM Modem bằng tập lệnh AT
Dịch LBS tìm đƣờng đi trong thành phố cài đặt thử nghiệm của đề tài sử dụng giao tiếp giữa máy chủ và khách thông qua dịch vụ tin nhắn. Máy khách là các loại thiết bị liên lạc di động hỗ trợ sẵn khả năng gửi nhận tin nhắn. Máy chủ là máy tính thông thƣờng giao tiếp với mạng GSM thông qua thiết bị đóng vai trò là GSM Modem.
Để thuận tiện cho thử nghiệm, hệ thống sử dụng một điện thoại di động có khả năng kết nối với máy tính đóng vai trò của một GSM Modem. Để lập trình cho điện thoại này thực hiện các hoạt động: gửi, nhận, quản lý các tin nhắn gửi đi và nhận về trong hệ thống, ta có thể sử dụng bộ lệnh điều khiển modem AT.
Giới thiệu chung về tập lệnh AT
AT Commands (viết tắt của Attention Commands) là tập các lệnh đƣợc sử dụng để điều khiển modem. Hầu hết các lệnh trong đó bắt đầu bởi “AT” hay “at” nên nó đƣợc gọi là tập lệnh AT. Với tập lệnh AT chúng ta hoàn toàn có thể điều khiển đƣợc các modem GSM/GPRS và điện thoại di động (có tích hợp GSM Modem). Tập lệnh này do Viện Tiêu Chuẩn Viễn Thông Châu Âu (European Telecommunication Standards Institute - ETSI) đƣa ra.
Các GSM modem hỗ trợ tập lệnh AT chuẩn để giao tiếp với ứng dụng máy tính. Ngoài ra, modem có thể có tập lệnh mở rộng. Nếu ứng dụng máy tính sử dụng tập lệnh AT chuẩn để giao tiếp với modem thì ứng dụng đó không phụ thuộc vào thiết bị.
Các tập lệnh AT cơ bản
Các tập lệnh đưới giới thiệu dưới đây được công bố theo chuẩn máy Nokia.
Bảng 4.1: Tập lệnh AT xử lý tin nhắn (SMS), chế độ văn PDU
Lệnh Mô tả
AT+CMGL Xem danh sách message AT+CMGR Đọc message
Bảng 4.2: Tập lệnh AT điều khiển cuộc gọi
Lệnh Mô tả
ATA Lệnh trả lời ATD Lệnh gọi ATH Lệnh cúp máy
ATL Bật chế độ loa bên trong ATM Chế độ loa ngoài
ATO Go on-line
ATP Set pulse dial as default
ATT Thiết đặt nhạc chuông mặc định AT+CSTA Chọn kiểu địa chỉ
Bảng 4.3: Tập lệnh AT điều khiển Card
Lệnh Mô tả
AT&F Trở về chế độ mặc định AT&V Xem những thiết đặt
AT+GMI Xem thông tin nhà sản xuất
AT+GMM Xem thông tin đời của điện thoại AT+GMR Xem phiên bản sản xuất
AT+GSN Xem số IMEI
Bảng 4.4: Tập lệnh AT điều khiển máy điện thoại
Lệnh Mô tả
AT+CBC Xạc pin
AT+CPAS Chế độ hoạt động của điện thoại AT+CPBF Tìm kiếm trong danh bạ
Bảng 4.5: Tập lệnh AT xử lý tin nhắn (SMS), chế độ văn bản
Lệnh Mô tả
AT+CSMS Chọn dịch vụ message AT+CMGF Định dạng message AT+CSCA Số của trung tâm dịch vụ AT+CSMP Thiết đặt dạng text
AT+CSDH Hiển thị chế độ text AT+CSAS Lƣu thiết đặt
AT+CRES Phục hồi cài đặt
AT+CMGL Xem danh sách message AT+CMGR Đọc message
AT+CMGS Gửi message
AT+CMSS Gửi message từ bộ nhớ AT+CMGW Lƣu message vào bộ nhó
AT+CMGD Xóa message
Cách sử dụng tập lệnh AT để điều khiển modem
Để gửi/nhận tin nhắn SMS, ta cần kết nối thiết bị là GSM modem vào cổng COM của máy tính. Nếu modem kết nối máy tính bằng cổng USB thì cần phải biết tên của thiết bị trong hệ thống hoặc thiết bị đã đƣợc kết nối qua cổng COM mô phỏng nào. Chƣơng trình máy tính và thiết bị trao đổi dữ liệu thông qua hệ thống lệnh AT chuẩn. Tùy vào thiết bị và nhà sản xuất, mỗi modem có thể có hệ thống lệnh AT mở rộng nhằm tối ƣu và nâng cao khả năng kết nối của thiết bị với máy tính.
Trong chƣơng trình giao tiếp với modem bằng lệnh AT, trƣớc hết cần tạo một kết nối cổng COM tới modem. Sau đó gửi đến cổng COM những lệnh AT tƣơng ứng và đọc kết quả thực thi lệnh AT từ cổng COM. Cần kiểm tra kết nối và modem bằng cách sử dụng nhóm lệnh: AT, +CPIN, +CSCA, +CGMI, +CGMM, +CMEE, +CSMS, +CSQ, +CBC trƣớc mỗi phiên làm việc.
Để đọc thiết lập hiện tại, dùng lệnh AT có thêm ký tự „?‟. Để xem những giá trị nào có thể thiết lập, dùng lệnh AT có thêm hai ký tự „=?‟. Để thiết lập giá trị thông số mới, dùng lệnh AT có thêm ký tự „=‟, và theo sau đó là những giá trị
thông số mới. Để gửi một nội dung đến một thuê bao của khách hàng, sử dụng lệnh +CMGS. Trong trƣờng hợp nội dung cần gửi đến nhiều khách hàng khác nhau ta sử dụng lệnh +CMGW ghi SMS lên bộ nhớ của modem, sau đó dùng lệnh +SMSS để gửi SMS đó đến các khách hàng khác nhau. Cách này cho phép nâng cao tốc độ làm việc của modem nhờ giảm thiểu trao đổi thông tin giữa modem và chƣơng trình.
Có thể gửi SMS theo hai chế độ văn bản (text mode, +CMGF = 1) và chế độ mặc định PDU (Protocol Data Unit, +CMGF = 0). Giá trị các thiết lập thông số cho chế độ văn bản và PDU có khác nhau cho một số lệnh AT. Ví dụ, với lệnh đọc tất cả các tin nhắn +CMGL tiếp nhận các thông số "REC UNREAD","REC READ","STO UNSENT", "STO SENT" và "ALL" trong chế độ văn bản. Trong khi đó ở chế độ PDU sẽ là các giá trị 0 - 4. Ngoài ra, không phải tất cả các GSM modem đều hỗ trợ chế độ văn bản. Thử nghiệm cho thấy không chỉ những điện thoại lạc hậu, mà ngay cả với một số loại điện thoại hiện đại, chẳng hạn W580, cũng không hỗ trợ chế độ văn bản khi làm việc với các chƣơng trình trên máy tính. Trong khi đó, chế độ PDU thì tất cả các modem đều hỗ trợ và chế độ này cho phép gửi hình ảnh và nhạc chuông. Từ đó cho thấy, khi xây dựng một chƣơng trình làm việc với các GSM modem, cần phải nghiên cứu tài liệu kỹ thuật của từng loại modem để có thể thiết lập đúng những thông số mà modem đó hỗ trợ. Tất cả các modem đều phải hỗ trợ tập các lệnh AT chuẩn nên nếu chƣơng trình sử dụng tập lệnh AT chuẩn để làm việc với các modem, thì hệ thống sẽ không bị phụ thuộc vào thiết bị đƣợc sử dụng.
Sau đây là một ví dụ sử dụng lệnh AT và chƣơng trình HyperTerminal của Windows để gửi tin nhắn SMS. Nội dung dƣới đây là các lệnh và kết quả trả về từ màn hình giao diện HyperTerminal:
AT
OK
AT+CMGF=1
OK
AT+CMGW="0982713301"
> Day la noi dung thong diep thu nghiem.
+CMGW: 1 OK
AT+CMSS=1
+CMSS: 20 OK
Dòng thứ nhất: “AT” để gửi tới GSM modem nhằm kiểm tra kết nối. GSM modem gửi lại xâu “OK” (dòng thứ 2) cho biết kết nối giữa HyperTerminal và modem là tốt.
Dòng thứ 3: câu lệnh “AT+CMGF” để báo cho modem biết lựa chọn chế độ làm việc SMS là văn bản (text mode). Kết quả trả về “OK” báo rằng lệnh “AT+CMGF=1” đã thực hiện thành công. Nếu kết quả là “ERROR” thì có nghĩa là lệnh đã không đƣợc thực hiện thành công, điều này cũng có nghĩa là modem không hỗ trợ SMS text mode. Để xác nhận, thực hiện lệnh “AT+CMGF=?”, nếu kết quả trả về là “+CMGF: (0,1)” trong đó 0=PDU mode và 1=Text mode. Nếu kết quả là “+CMGF: (1)” thì Text mode đƣợc hỗ trợ, ngƣợc lại thì không.
Các dòng 5 và 6: câu lệnh “AT+CMGW” đƣợc sử dụng để ghi một thông điệp đến modem. Số điện thoại nhận là “0982713301”. Sau khi nhập xong số điện thoại nhận tin nhắn, nhấn phím Enter, modem gửi lại dấu nhắc “>”, tiếp theo nhập nội dung tin nhắn muốn gửi (trong ví dụ là “Day la noi dung thong diep thu nghiem.”). Nhấn tổ hợp phím “Ctrl+z” để kết thúc soạn nội dung tin nhắn.
Dòng 7: “+CMGW:1” cho biết chỉ số đƣợc gắn với tin nhắn là 1. Đây cũng chính là vị trí của tin nhắn trong bộ nhớ lƣu trữ tin nhắn văn bản.
Dòng 9: kết quả trả về “OK” báo lệnh “AT+CMGW” đã thực hiện thành công.
Dòng 10: “AT+CMSS” đƣợc sử dụng để gửi tin nhắn đƣợc lƣu trong bộ nhớ tin nhắn tại ví trí 1.
Dòng 11: “+CMSS:20” cho biết số hiệu tham chiếu đƣợc gán cho tin nhắn là 20.
Dòng 13: “OK” báo câu lệnh “AT+CMSS” đã đƣợc thực hiện thành công.
4.3. Định dạng gói tin SMS sử dụng để giao tiếp trong hệ thống
Hệ thống thử nghiệm sử dụng tin nhắn SMS để gửi yêu cầu, truyền tải thông tin kết quả giữa máy chủ và máy khách. Định dạng gói tin đƣợc quy ƣớc nhƣ sau:
4.3.1. Máy khách cài đặt phần mềm
Định dạng gói tin này sử dụng để giao tiếp giữa phần mềm phía máy khách với máy chủ. Các gói tin sẽ đƣợc máy khách, máy chủ sinh tự động theo yêu cầu ngƣời dùng. Trong trƣờng hợp này, ngƣời dùng dễ dàng khai thác dịch vụ hơn vì không phải nhớ định dạng gói tin yêu cầu dịch vụ, giao diện đẹp. Tuy
4.3.1.1. Gói tin yêu cầu
Gói tin yêu cầu đƣợc phần mềm phía máy khách gửi đi đề yêu cầu máy chủ cung cấp dịch vụ. Gói tin yêu cầu có cấu trúc nhƣ sau:
Lenh HT Dau Cuoi PT TTGT
Đầu tin nhắn Cuối tin nhắn
Hình 4.6: Định dạng gói tin yêu cầu 1
Lenh: mã quy ƣớc lệnh khai thác dịch vụ, biểu diễn dƣới dạng xâu văn
bản, luôn bắt đầu bằng dấu @ (ví dụ: “@TD” để tìm đƣờng).
HT: Vị trí hiện thời của của ngƣời sử dụng (cũng chính là vị trí của máy
khách). Vị trí này có thể nhận đƣợc thông qua thiết bị định vị hoặc do ngƣời dùng cung cấp (gián tiếp qua vị trí đầu, nếu để trống).
Dau: Vị trí đầu (xuất phát) đƣợc biểu diễn bằng ID (mã nhận dạng) của
nút giao thông hay tuyến đƣờng, toạ độ chính xác (x,y). Nếu dữ liệu để trống, hệ thống sẽ lấy thông tin vị trí hiện tại thay thế. Phần mềm xử lý phía máy chủ sẽ tự động phân tích nhận dạng kiểu dữ liệu phù hợp.
Cuoi: Vị trí đến, vị trí này đƣợc biểu diễn bằng ID của nút giao thông hay
tuyến đƣờng, toạ độ chính xác (x,y). Toạ độ nhận đƣợc thông qua thiết bị trỏ hoặc trung tâm của nút giao thông hay tuyến đƣờng do ngƣời dùng cung cấp.
PT: Xác định kiểu phƣơng tiện sử dụng để lƣu thông trên lộ trình cần tìm.
Đây là tham số quan trọng để hệ thống tìm đƣờng sử dụng làm cơ sở lựa chọn đƣờng đi cho thích hợp. Nếu ngƣời dùng đi xe máy thì sẽ dễ dàng tìm ra đƣờng đi hơn là đi ô tô (đòi hỏi đƣờng rộng hơn, rồi vấn đề giới hạn chiều lƣu thông đối với ô tô). Giá trị của PT=”0” nếu đi phƣơng tiện là xe máy hay các phƣơng tiện khác tƣơng tự hoặc đi bộ. PT=”1” nếu đi bằng phƣơng tiện là ô tô.
TTGT: Thông tin cho biết tình trạng giao thông hiện tại (của điểm xuất
phát – đƣợc hiểu là vị trí ngƣời sử dụng đang đứng). Có 3 giá trị tƣơng ứng với 3 trạng thái: bình thƣờng, bị tắc nhẹ, bị tắc hoàn toàn. Trong đó, giá trị “0” ứng với bình thƣờng, “1” ứng với tắc nhẹ và “2” ứng với tắc hoàn toàn.
4.3.1.2. Gói tin báo kết quả
TieuDe NoiDung
Hình 4.7: Định dạng gói tin kết quả 1
TieuDe: đƣợc trình bày trên một dòng (ngăn cách bằng ký tự xuống
dòng), giá trị của tiêu đề là một xâu văn bản có nội dung theo quy ƣớc “@KQ”.
NoiDung: đƣợc sử dụng để trình bày kết quả tìm kiếm. Nếu tìm thành
công, đây sẽ là danh sách ID của các nút giao thông hay các cung đƣờng phải đi qua. Mỗi ID ngăn cách bởi một dấu phảy (,). ID đƣợc trình bày theo cấu trúc Nid nếu tham chiếu đến nút giao thông, Did nếu tham chiếu đến cung đƣờng. Trong đó id là một giá trị số tƣơng ứng với từng đối tƣợng. Nếu tìm kiếm thất bại, nội dung này sẽ đƣợc để trống.
4.3.2. Máy khách chỉ sử dụng tin nhắn SMS
Định dạng gói tin này áp dung cho trƣờng hợp máy khách không cài đặt đƣợc phần mềm bản đồ hoặc ngƣời sử dụng lựa chọn hình thức giao tiếp bằng tin nhắn SMS.
4.3.2.1. Gói tin yêu cầu
Gói tin yêu cầu đƣợc máy khách gửi đi đề yêu cầu máy chủ cung cấp dịch vụ. Ví dụ, khi máy khách muốn xác định đƣờng đi từ vị trí hiện hành đến một điểm đích nào đó, máy khách sẽ sử dụng gói tin yêu cầu để gửi tới máy chủ (thông qua số điện thoại đã công bố).
Gói tin đƣợc biểu diễn thuần tuý văn bản, chia thành 5 trƣờng, mỗi trƣờng ngăn cách nhau bởi ký tự xuống dòng. Cấu trúc gói tin đƣợc mô tả nhƣ sau:
Lenh Dau Cuoi TTGT PT
Đầu tin nhắn Cuối tin nhắn
Lenh: mã quy ƣớc lệnh khai thác dịch vụ, biểu diễn dƣới dạng xâu văn
bản (ví dụ: “TD” để tìm đƣờng).
Dau: Vị trí hiện thời của của ngƣời sử dụng (cũng chính là của máy
khách). Vị trí này có thể nhận đƣợc thông qua thiết bị định vị hoặc do ngƣời dùng cung cấp. Vị trí có thể biểu diễn bằng cặp toạ độ (x,y) hoặc tên nút giao thông hay tuyến đƣờng. Phần mềm xử lý phía máy chủ sẽ tự động phân tích nhận dạng kiểu dữ liệu phù hợp. Vị trí này cũng chính là vị trí xuất phát.
Cuoi: Vị trí đến, vị trí này có thể biểu diễn dƣới dạng toạ độ thông qua
thiết bị trỏ (áp dụng cho trƣờng hợp có hiển thị bản đồ số phía máy khách) hoặc tên nút giao thông hay tuyến đƣờng do ngƣời dùng cung cấp. Định dạng tƣơng tự nhƣ định dạng của vị trí xuất phát.
TTGT: Thông tin cho biết tình trạng giao thông hiện. Có 3 giá trị tƣơng
ứng với 3 trạng thái: bình thƣờng, bị tắc nhẹ, bị tắc hoàn toàn. Trong đó, giá trị “0” ứng với bình thƣờng, “1” ứng với tắc nhẹ và “2” ứng với tắc hoàn toàn.
PT: Xác định kiểu phƣơng tiện sử dụng để lƣu thông trên lộ trình cần tìm. Giá trị của PT=”xemay” nếu đi phƣơng tiện là xe máy hay các phƣơng tiện khác tƣơng tự hoặc đi bộ. PT=”Oto” nếu đi bằng phƣơng tiện là ô tô. Giá trị của PT có thể đƣợc bỏ qua, khi đó hệ thống tự động xác định phƣơng tiện sử dụng là “xe máy”.
4.3.2.2. Gói tin báo kết quả
Gói tin báo kết quả đƣợc máy chủ sử dụng để trả lời cho máy khách. Gói tin này đƣợc dùng để thông báo kết quả tìm đƣờng theo yêu cầu của máy khách. Trƣờng trƣờng hợp tìm đƣợc giá trị biểu diễn chính là danh sách các cung đƣờng phải đi qua và độ dài tƣơng ứng. Trƣờng hợp không tìm đƣợc sẽ là thông báo “không tồn tại đƣờng đi cần tìm” dƣới dạng văn bản.
Ngoài chức năng báo kết quả, gói tin này còn có thể sử dụng với vai trò xác nhận thông tin. Trong trƣờng hợp máy khách gửi số liệu về “vị trí xuất phát”, “vị trí đến” dƣới dạng tên nút giao thông, tuyến đƣờng. Nếu dữ liệu không hoàn toàn khới với dữ liệu hiện có trên máy chủ thì khi đó máy chủ sẽ phải yêu cầu máy khách xác nhận lại thông tin chính xác. Để trợ giúp cho ngƣời dùng lựa chọn đƣợc chính xác, máy chủ sẽ gửi về danh sách một số “tên” có mức độ “giống” cao nhất so với “tên” đã đƣợc yêu cầu. Nếu ngƣời dùng trả lời với “tên” để trống hoặc không trả lời sau khoảng thời gian quy định hệ thống sẽ tự huỷ bỏ yêu cầu dịch vụ. Gói tin trả lời xác nhận thông tin của ngƣời dùng chỉ
gồm một xâu văn bản biểu diễn “tên” đƣợc chọn. Cấu trúc gói tin đƣợc mô tả nhƣ sau:
TieuDe NoiDung
Hình 4.9: Định dạng gói tin kết quả 2
TieuDe: đƣợc trình bày trên một dòng (ngăn cách bằng ký tự xuống
dòng), giá trị của tiêu đề là một xâu văn bản theo quy ƣớc:
Là “Ket qua:” nếu vị trí cung cấp hợp lệ và đã thực hiện việc tìm đƣờng. Là “Vi tri xuat phat:” nếu yêu cầu ngƣời dùng phải xác định lại vị trí xuất phát. Trong trƣờng hợp này, phần “NoiDung” sẽ liệt kê danh sách các “tên” để gửi ý ngƣời dùng lựa chọn, mỗi “tên” trên một dòng.
Là “Vi tri den:” nếu yêu cầu ngƣời dùng phải xác định lại vị trí đến và cũng có danh sách gợi ý giống nhƣ trƣờng hợp yêu cầu xác định vị trí xuất phát.
Là “Phuong tien:” nếu yêu cầu ngƣời dùng xác định lại phƣơng tiện sử