ĐẠI HỌC QUỐC GIA HÀ NỘI
KHOA CÔNG NGHỆ
Nguyễn Hoàng Hải
XÂY DỰNG HỆ THỐNG NHẮN TIN NỘI BỘ DỰA TRÊN CÁC
THIẾT BỊ THÔNG TIN KHÔNG DÂY
LUẬN VĂN THẠC SĨ
Hà Nội - 2004
ĐẠI HỌC QUỐC GIA HÀ NỘI
KHOA CÔNG NGHỆ
Nguyễn Hoàng Hải
XÂY DỰNG HỆ THỐNG NHẮN TIN NỘI BỘ DỰA TRÊN CÁC
THIẾT BỊ THÔNG TIN KHÔNG DÂY
Chuyên ngành:
Kỹ thuật vô tuyến điện tử và thông tin liên lạc
Mã số:
2.07.00
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC
14
1.3 Truyền thông giữa máy tính và Môđem
15
1.4 Môđem GSM Wavecom WMO2-G900
18
Chương
2
25
Lập trình giao tiếp với cổng RS-232
2.1 Truy nhập RS-232 trong Visual Basic
25
2.2 Truyền thông qua RS-232 với MSComm trong Visual Basic
25
Chương
3
35
Hệ thống GSM và dịch vụ nhắn tin ngắn
Chương
5
Các kỹ thuật xử lý
5.1 Kết nối với môđem
44
5.2 Phát hiện ký tự đến bộ đệm nhận của máy tính và phân loại các
đáp ứng từ môđem
45
5.3 Phát hiện tin nhắn mới
47
5.4 Đọc tin nhắn
47
5.5 Gửi tin nhắn
50
5.6 Điều khiển luồng lệnh
51
62
6.2 Môđun SMSComm
63
6.3 Môđun Admin
64
6.4 Môđun CHAT
66
6.5 Các dịch vụ cung cấp
67
6.6 Dịch vụ trợ giúp help
67
6.7 Dịch vụ CHAT
68
6.8 Tính năng paging hoặc tính năng operator sms
68
EDGE
ESME
ETSI
GPRS
GSM
HLR
ITU
MSC
PC
RI
RTS
SMPP
SMS
SMS MO
SMS MT
SMSC
SS7
VLR
Third Generation
Base Station Controller
Base Station Sub-system
Carrier Detect
Clear To Send
Data Set Ready
Data Terminal Ready
Enhanced Data rates for GSM Evolution
External Short Message Entities
European Telecommunications Standards Institute
General Packet Radio Service
dữ liệu chuyển mạch gói trong thông tin di động. Tất cả những gì chúng ta có thể
làm với máy tính và internet hôm nay đã và đang được đưa vào tích hợp trong các
máy di động đầu cuối. Tuy nhiên, tại thời điểm hiện nay, GPRS đã không chứng
minh được tính ưu việt của nó và rất nhiều nhà cung cấp dịch vụ thông tin di động
đã và đang nói “không” với GPRS vì lý do đầu tư. Công nghệ EDGE và 3G vẫn còn
đang trong giai đoạn thử nghiệm và khó có khả năng trở nên phổ biến rộng rãi trước
năm 2007.
Dịch vụ nhắn tin ngắn (SMS), với tính ưu việt của mình về sự đơn giản trong
sử dụng và hiệu quả cao trong đầu tư, đã, đang và sẽ luôn là dịch vụ được chú trọng
đối với bất cứ nhà cung cấp dịch vụ thông tin di động nào. Rất nhiều các ứng dụng
trên nền tảng nhắn tin ngắn đã và đang được phát triển bởi các nhà khai thác, chẳng
hạn như dịch vụ sms-email, sms fax, logo, ring tones... Tuy nhiên, đối với các cá
nhân, doanh nghiệp hay cơ quan nhỏ, việc phát triển các ứng dụng của riêng mình,
theo nhu cầu của mình độc lập với các ứng dụng được cung cấp bởi nhà khai thác,
lại là một vấn đề hoàn toàn không dễ dàng.
Một hệ thống thông tin nội bộ SMSComm xây dựng trên cơ sở nhắn tin ngắn
thông qua một môđem GSM ghép nối với máy tính là hoàn toàn có thể thực hiện
được đối với bất kỳ một cá nhân hay doanh nghiệp nào có nhu cầu mà không đòi
hỏi đầu tư quá tốn kém hoặc bất kỳ một sự cho phép nào từ phía nhà cung cấp dịch
vụ thông tin di động.
Với công nghệ hiện nay, bất kỳ máy di động đầu cuối GSM nào, cũng đều
được tích hợp với một GSM môđem, vì vậy việc tìm ra một môđem GSM là một
-4-
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
việc rất dễ dàng. Xa hơn nữa, dịch vụ nhắn tin ngắn đã trở nên rất quen thuộc đối
với tất cả mọi người và đã đang là một dịch vụ được ưa thích và sử dụng nhiều nhất
-5-
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
các bạn đồng nghiệp trong văn phòng Comvik, công ty VMS đã tạo điều kiện giúp
đỡ hoàn thành bản luận văn này.
-6-
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
1.Chƣơng 1
1.CỔNG NỐI TIẾP RS-232 VÀ KẾT NỐI MÔĐEM
Nội dung của luận văn này liên quan mật thiết đến việc lập trình ghép nối
điều khiển môđem thông qua cổng truyền thông nối tiếp RS-232, vì vậy Chuơng 1
của luận được giành để giới thiệu những hiểu biết nhất định về cổng nối tiếp RS232 cũng như ghép nối môđem để tiện tham khảo.
1.1
CỔNG NỐI TIẾP RS-232
1.1.1 ĐẶC TRƯNG VẬT LÝ
Các máy tính PC được sản xuất gần đây đều được trong bị với ít nhất một
cổng nối tiếp theo tiêu chuẩn RS-232. Các cổng RS-232 thường được dùng cho các
mục đích ghép nối khác nhau như môđem, máy in hoặc thiết bị đo lường. Cổng RS232, trong rất nhiều các ứng dụng viễn thông khác, lại được sử dụng như một giao
tiếp để quản lý và vận hành thiết bị.
Việc sử dụng giao diện nối tiếp mang lại nhiều ưu điểm, ngay cả đối với
những mạch ghép nối đơn giản, lý do là:
Khả năng chống nhiễu của các cổng nối tiếp cao hơn so với các cổng
FG, Frame
Ground
Đất vỏ máy
3
RxD, Receive
Data
Nhận dữ liệu.
7
liệu.
SG, Signal
Ground
Đất của tín hiệu.
5
1
=>
DCD, Data
Carrier Detect
Phát hiện tín hiệu mang dữ
liệu.
4
cực với độ lớn bằng +12V và -12V. Do các mạch lối vào thông thường trong máy
tính PC nhận dạng một mức điện áp dưới 1V như là mức LOW, nên cổng nối tiếp
cũng được phép làm việc với mức TTL (0V/5V). Một số máy tính PC, phần lớn là
máy tính xách tay làm việc với ngưỡng chuyển mạch từ -3V đến +3V và vì thế có
thể chấp nhận các tín hiệu lối vào hai cực. [1]
1.1.2 KHUÔN MẪU KHUNG TRUYỀN
Việc truyền dữ liệu qua cổng RS-232 được thực hiện theo kiểu không đồng
bộ, một khung dữ liệu được bắt đầu bằng bít bắt đầu và kết thúc với bit dừng. Như
chỉ ra trên hình 1-2.
-9-
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
Hình 1-2: Truyền theo kiểu không đồng bộ
Bộ truyền bắt đầu gửi một bít bắt đầu (start) để thông báo cho bộ nhận biết
một ký tự sẽ được gửi tới trong lần truyền bit tiếp sau. Bít bắt đầu này luôn luôn ở
mức 0. Tiếp theo 5, 6 hoặc 7 bit dữ liệu được gửi dưới dạng mã ASCII, rồi đến một
bit chẵn lẻ và cuối cùng là 1 hoặc 1,5 hay 2 bit dừng. [2]
Bít chẵn lẻ
Thực chất của quá trình kiểm tra lỗi khi truyền là bổ xung thêm dữ liệu vào
dòng dữ liệu được truyền để tìm ra hoặc sửa chữa lỗi trong quá trình truyền. Chuẩn
RS-232 sử dụng một kỹ thuật đơn giản được gọi là „chẵn lẻ‟ để có khả năng phát
hiện được lỗi.
Một bít chẵn lẻ được bổ xung vào dữ liệu được truyền để cho thấy số các bít
số “1” (các bít có giá trị bằng 1) được gửi trong một khung truyền là chẵn (chẵn lẻ
chẵn) hay là lẻ (chẵn lẻ lẻ). Đây là một phương pháp đơn giản trong mã hoá lỗi và
chỉ cần đến một cổng XOR để tạo ra bit chẵn lẻ. Bít chẵn lẻ được bổ xung vào dữ
liệu được truyền bằng cách chèn nó vào một vị trí chính xác của bít trong thanh ghi
110
11
300
30
600
60
1.200
120
2.400
240
4.800
480
9.600
960
19.200
đấu vào cổng nối tiếp.
Tốc độ mà dữ liệu được truyền và tốc độ mà bộ truyền và bộ nhận có thể
truyền/nhận dữ liệu sẽ quyết định có phải sử dụng đến kỹ thuật bắt tay hay không.
Bắt tay
Việc truyền dữ liệu có thể tiến hành theo ba cách: không có bắt tay
(handshaking), có bắt tay phần cứng hoặc bắt tay phần mềm. Nếu như không sử
dụng kỹ thuật bắt tay thì bộ nhận phải có khả năng đọc các ký tự nhận được trước
khi bộ truyền gửi đến một ký tự khác. Bộ nhận có thể đệm ký tự nhận được và cất
giữ ký tự này trong một vị trí ô nhớ riêng trước khi nó được đọc. Vị trí ô nhớ này
được gọi là bộ đệm nhận. Đáng chú ý là bộ nhận này chỉ có thể lưu trữ một ký tự
đơn. Nếu như nó không được làm rỗng trước khi một ký tự khác được nhận thì bất
kỳ ký tự nào trước đó cũng bị nghi đè lên. Một thí dụ về hiện tượng này được minh
- 12 -
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
họa trong hình 1-3.
Hình 1-3: Quá trình truyền và nhận các ký tự
Trong trường hợp này bộ nhận đọc xong xuôi hai ký tự đầu tiên từ bộ đệm
nhận, nhưng nó chưa đọc ký tự thứ ba bởi vì ký tự thứ tư được truyền đã ghi đè lên
nó trong bộ đệm nhận. Nếu như điều kiện này xảy ra thì một vài dạng bắt tay phải
được sử dụng để làm dừng bộ truyền gửi ký tự trước khi bộ nhận có đủ thời gian để
xử lý các ký tự đã nhận được. [2]
Truyền thông đơn giản không có bắt tay
Trong cách truyền thông này, người ta giả thiết rằng bộ nhận có thể đọc dữ
liệu nhận được từ bộ đệm nhận trước khi các ký tự khác tới bộ đệm nhận. Dữ liệu
được gửi từ vị trí kết nối với chân TxD của bộ truyền và được nhận ở vị trí nối với
Bắt tay bằng phần mềm
Có hai ký tự mã ASCII cho phép bắt đầu và làm dừng các cuộc truyền dữ
liệu qua cổng nối tiếp đó là: X-ON (^S, Ctrl-S hoặc mã ASCII 11) và X-OFF (^Q,
Ctrl-Q hoặc mã ASCII 13)
- 13 -
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
Khi bộ truyền nhận được ký tự X-OFF nó làm ngừng quá trình truyền thông
cho đến khi ký tự X-ON được gửi. Kiểu bắt tay này thường được sử dụng khi bộ
truyền và bộ nhận có thể xử lý dữ liệu tương đối nhanh chóng. Thông thường, bộ
nhận cũng sẽ có một bộ đệm lớn dùng cho các ký tự gửi tới. Khi bộ đệm này đầy,
nó truyền mã ký tự X-OFF. Sau khi nó đọc từ bộ đệm, ký tự mã X-ON sẽ được
TruyÒn
d÷ liÖu
Bé truyÒn
Bé nhËn
X-OFF
X-ON
TruyÒn
d÷ liÖu
truyền (xem hình 1-5). [2]
- 14 -
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
Khi một nút muốn truyền dữ liệu nó ấn định đường dẫn RTS ở trạng thái
hoạt động, nghĩa là ở mức cao, rồi giám sát đường dẫn CTS cho đến khi đường dẫn
này chuyển sang trạng thái hoạt động, nghĩa là cũng ở mức cao. Nếu đường dẫn
CTS ở bộ truyền giữ nguyên trạng thái không kích hoạt thì nghĩa là bộ nhận đang
bận và hiện tại không thể nhận dữ liệu. Khi bộ nhận đọc từ bộ đệm nhận, đường dẫn
RTS sẽ tự động chuyển sang trạng thái kích hoạt qua đó báo cho bộ truyền là nó
đang sẵn sàng nhận ký tự.
Việc nhận dữ liệu cũng diễn ra tương tự với việc truyền dữ liệu nhưng các
đường dẫn DSR và DTR được sử dụng chứ không phải là RTS và CTS. Khi DCE
muốn truyền dữ liệu đến DTE thì đầu vào DSR của bộ nhận sẽ chuyển sang trạng
thái kích hoạt. Nếu bộ nhận không thể nhận ký tự, nó đặt đường dẫn DTR ở trạng
thái không hoạt động. Khi đã sẵn sàng để nhận, nó sẽ đặt DTR sang trạng thái hoạt
động. Đường dẫn DTR sẽ giữ nguyên trạng thái không kích hoạt cho đến khi ký tự
TD
TD
RD
RD
RTS
RTS
Thuật ngữ môđem có nguồn gốc từ chữ tiếng Anh MOdulator/DEModulator,
để chỉ các bộ điều biến/giải điều biến. Các môđem cùng để nối thiết bị số với một
đường truyền mà phổ biến là đường điện thoại (để tránh hiểu nhầm khi chúng tôi
trình bày về GSM môđem ở phần sau).
- 15 -
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
Hình 1-8 mô tả vai trò của môđem và các dạng tín hiệu trên đường truyền.
Sở dĩ phải cần đến môđem vì dữ liệu được lưu trữ hoặc trao đổi trong máy tính đều
tồn tại dưới dạng số (digital), trong khi các đường truyền lại truyền dữ liệu dưới
dạng tương tự (analog). Để truyền được tín hiệu từ một máy tính đến một máy tính
ở xa - một hình thức ghép nối máy tính - ta phải biến đổi tín hiệu từ dạng số sang
dạng tương tự để đặt lên đường truyền. Môđem được ứng dụng nhiều trong các
dạng thông tin liên lạc mà chúng ta không thể kết nối cáp hay đường dây một cách
trực tiếp giữa hai đầu.
Hình 1-8: Các tín hiệu truyền qua đường điện thoại
Quá trình biến đổi tín hiệu từ dạng số sang dạng tương tự như thế được gọi là
quá trình điều biến (modulation). Quá trình biến đổi ngược lại từ tín hiệu analog thu
được thành tín hiệu số được gọi là quá trình giải điều biến (demodulation). Mỗi
môđem đều có hai chức năng điều biến và giải điều biến. Tín hiệu tương tự, mang
thông tin từ đầu gần tới đầu xa như trên hình vẽ được gọi là sóng mang (carrier).
Các môđem thông thường sử dụng các đường dây điện thoại để truyền tải tín
hiệu, trong GSM, các môđem GSM sử dụng sóng mang GSM để truyền tải tín hiệu.
Bằng sơ đồ khối, hình 1-9 cho thấy hai máy tính được nối với nhau như thế
nào khi sử dụng cổng nối tiếp RS-232 và các môđem.
Truyền thông giữa máy tính và môđem ngoài được thực hiện quan cổng nối
tiếp hay còn gọi là cổng RS-232. Cổng RS-232 sử dụng cách truyền thông dị bộ, có
khuôn mẫu dữ liệu với bít bắt đầu và bít dừng. Các ký tự được gửi từ máy tính ra
môđem (kể cả ký tự điều khiển) đều được thực hiện theo khuôn mẫu của khung dữ
liệu RS-232 như đã trình bày ở phần trước đây.
ITU đã qui định các tiêu chuẩn liên quan đến RS-232 và môđem. Có khá
nhiều chuẩn môđem đang hiện hành, tuy nhiên, các nhà sản xuất môđem hiện nay
đều có xu hướng sản xuất loại môđem có thể tương thích với tất cả các chuẩn được
đưa ra. Thí dụ một bộ fax/ môđem có thể tương thích với các chuẩn sau:
- 17 -
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
V.32bis (14.4 kbps)
V.32 (9.6 kbps)
V.22bis (2.4 kpbs)
V.22 (1.2 kbps)
Bell 212 (1.2 kbps)
Bell 103 (300 bps)
V.17 (14.4kbps, fax)
Chấm dứt (hangup) việc kết nối đường truyền.
Bảng 1-3: Vài lệnh AT tiêu chuẩn của môđem
Mỗi lệnh được kết thúc bởi một ký tự trở về đầu dòng (ký tự mã ASCII là 13
trong hệ thập phân). Một lệnh không có ký tự trở về đầu dòng sẽ bị bỏ qua sau một
thời gian trễ nhất định. Nhiều lệnh có thể được đặt trên một dòng và nếu cần thiết
có thể đưa vào dấu trống (space) cho dễ đọc.
Mỗi môđem có thể chấp nhận hai trạng thái, trạng thái bình thường và trạng
thái lệnh. Trong trạng thái bình thường, môđem truyền và/hoặc nhận các ký tự từ
máy tính. Trong trạng thái lệnh, các ký tự được gửi tới môđem là các lệnh. Mỗi lần
dịch xong một lệnh, môđem lai trở lại trang thái bình thường. [2]
- 18 -
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
Sau khi nhận được lệnh AT, môđem đáp ứng lại bằng một mã trả lại. Các mã
trả lại có thể dưới dạng text hoặc con số (digit) tuỳ thuộc vào lệnh cài đặt. Ví dụ về
một vài mã gửi trả lại được cho trong bảng 1-4 dưới đây:
Thông báo
Digit
Diễn giải
OK
0
Kết nối được với một môđem tốc độ 1200 bps
Bảng 1-4: Một số mã gửi trả lại của môđem tiêu chuẩn
Nếu kết nối được với một môđem ở xa thì môđem sẽ trả lại một báo hiệu sự
kết nối chẳng hạn CONNECT 1200. Khi đó dữ liệu có thể được truyền giữa các
môđem ở tốc độ đã được chỉ định.Khi máy tính muốn chấm dứt cuộc kết nối, nó sẽ
gửi tới môđem ba ký tự “+++”. Khi đó, môđem sẽ đáp ứng lại bằng OK và chờ lệnh
ATH từ máy chủ. Khi đó môđem sẽ trả lại một đáp ứng là OK vào thời điểm mà
cuộc kết nối được loại bỏ. Một bộ đầy đủ các lệnh AT, cú pháp và các thanh ghi của
môđem có thể được trong các tài liệu chuyên sâu về môđem.
Cáp nối môđem
Các cáp nối môđem thường được nhà sản xuất cung cấp kèm theo môđem.
Một kiểu nối điển hình môđem với máy tính được trình bày trong hình dưới đây. [2]
- 19 -
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
TD
TD
RD
RD
RTS
GSM900. Môđem WMO2-G900 được thiết kế như một môđem ngoài và có thể kết
nối với máy tính thông qua cổng RS-232.
Giao diện RS-232 của môđem WMO2-G900 được đặt mặc định ở chế độ tự
điều chỉnh tốc độ baud (từ 2400 bps đến 19200bps), 8 bit dữ liệu, không sử dụng
chẵn lẻ, 1 bít dừng và bắt tay phần cứng RTS/CTS. [3]
Môđem WMO2-G900 được sử dụng rất nhiều trong các thiết bị lặp sóng
GSM (repeater) để làm thiết bị đầu cuối để vận hành và giám sát từ xa. Môđem
WMO2 được mô tả trong hình 1-11 dưới đây.
- 20 -
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
Hình 1-11: Môđem GSM WMO2-G900
Môđem WMO2-G900 được nuôi bằng nguồn nuôi DC chỉ ra trong bảng dưới đây:
Nguồn
Tối thiểu
Tiêu chuẩn
Tối đa
Nguồn vào
5V
13.5V
Hỗ trợ các dịch vụ nhắn tin ngắn, nhắn tin quảng bá theo
GSM 07.05
Data
Không đồng bộ 2400, 4800 và 9600bps, trong suốt và không
trong suốt.
FAX
2400/4800/7200/9600 bps
Thoại
FR và EFR
Bảng 1-6: Đặc trưng kỹ thuật của môđem WMO2-G900
Như vậy ngoài việc hỗ trợ các lệnh AT như đối với các môđem thông thường
theo tiêu chuẩn V.25ter, môđem WMO2 còn hỗ trợ các lệnh AT đối với các đầu
cuối GSM theo tiêu chuẩn các khuyến nghị GSM tương ứng. Chẳng hạn, môđem
WMO2-G900 có thể hỗ trợ các lệnh kiểm tra chất lượng và cường độ tín hiệu bằng
lệnh AT+CSQ như sau:
- 21 -
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
AT+CSQ:<rssi>,<ber>
Trong đó:
Xác định số hồi chuông trước khi tự
động trả lời cuộc gọi.
- 22 -
Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
Xác định mạng PLMN mà máy đang
hoạt động.
AT+COPS
Cú pháp cơ bản (Basic Syntax)
Khi hoạt động ở tốc độ baud cố định, môđem WMO2-G900 chấp nhận các
lệnh AT được đánh vào hoặc theo chữ hoa hoặc theo chữ thường. Sử dụng lẫn lộn
chữ hoa và chữ thường trong một lệnh sẽ không được phép.
Các ký tự cuối cùng trong dòng lệnh, ngoại trừ một số trường hợp được
hướng dẫn, luôn luôn là các ký tự trở về đầu dòng <CR>.
Cú pháp lệnh AT nói chung là theo kiểu Hayes tiêu chuẩn:
Mỗi lệnh đều được bắt đầu với hai ký tự “AT” ngoại trừ lệnh “+++” và
lệnh “A/”.
Phần lệnh được tiếp theo bởi một ký tự đơn hoặc là dấu „&‟ đi ngay sau
một ký tự đơn.
Một dấu „+‟ có thể được viết ngay sau tiền tố AT cho biết rằng lệnh đó
là một lệnh mở rộng. Trong trường hợp đó, một ký (trong các ký tự sau
đây: A,C,D,E,F,G,I,M,S,T,V hoặc W) cần phải đi ngay sau dấu cộng
„+‟, tiếp theo đó là lệnh.
Tham số được đặt ở cuối dòng lệnh.
Ví dụ: