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ộ
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
KHOA CÔNG NGHỆ
Nguyễn Hoàng Hải
LUẬN VĂN THẠC SĨ 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
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
KHOA CÔNG NGHỆ
Nguyễn Hoàng Hải
Chuyên ngành: Kỹ thuật vô tuyến điện tử và thông tin liên lạc
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC
TS Ngô Diên Tập
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
Trang 3Chương
2 Lập trình giao tiếp với cổng RS-232
25
2.2 Truyền thông qua RS-232 với MSComm trong Visual Basic 25
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
Trang 5Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
DTR Data Terminal Ready EDGE Enhanced Data rates for GSM Evolution ESME External Short Message Entities
ETSI European Telecommunications Standards Institute GPRS General Packet Radio Service
GSM Global System for Mobile communication HLR Home Location Register
ITU International Telecommunication Union MSC Mobile Switching Center
SS7 Signalling System No.7 VLR Visitor Location Register
Trang 6Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
MỞ ĐẦU
Hiện nay nhu cầu phát triển các hệ thống ứng dụng thông tin không dây ngày càng tăng, đặc biệt là đối với các đơn vị vừa và nhỏ, nơi mà các hệ thông tin tiện lợi, dễ triển khai, chi phí thấp đang trở thành một nhu cầu bức thiết Nhu cầu giao tiếp máy-máy thay vì người-người đang ngày càng trở nên phổ biến nhằm giảm tải cho con người, đặc biệt là trong các lĩnh vực ngân hàng, bán hàng hoặc giải đáp thông tin (danh bạ, lịch bay, đặt chỗ trong hàng không chẳng hạn)
Cùng với sự phát triển của thông tin di động, đặc biệt là với GPRS, EDGE hoặc 3G, con người đã và đang phát triển rất nhiều các ứng dụng dựa trên nền tảng
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
Trang 7Hệ 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 trong thông tin di động Vì vậy, chúng tôi tin rằng, hệ thống thông tin nội bộ SMSComm được xây dựng trong luận văn này, ngoài ý nghĩa học tập, nghiên cứu,
nó còn mang tính ứng dụng rất cao nhờ sự gần gũi của các ứng dụng mà nó mang lại trong cuộc sống thực tiễn
Hệ thống được thiết kế phải thoả mãn các yêu cầu sau đây:
1 Phần cứng đơn giản, quen thuộc với người dùng, dễ tìm và giá thành thấp
2 Có khả năng đáp ứng các tính năng sau:
Các máy điện thoại di động ở bên ngoài có thể truy cập các dịch vụ thông qua việc nhắn tin ngắn bằng các lệnh dịch vụ
Có khả năng mở rộng loại hình dịch vụ theo nhu cầu của người dùng
Đây là yêu cầu rất quan trọng nhằm tạo tính mở cho ứng dụng của hệ thống giúp cho người khai thác có thể dễ dàng tạo ra các ứng dụng riêng của đơn vị
Cho phép các máy tính nối mạng có khả năng gửi tin nhắn đến máy di động và ngược lại (Chat giữa điện thoại di động và máy tính)
Có khả năng ghi lại các dữ liệu thống kê theo giờ, nhằm giúp người quản lý hệ thống biết được hệ thống đang được sử dụng có hiệu quả không hoặc hệ thống có khả năng đáp ứng nhu cầu không (về mặt dung lượng)
Có khả năng ghi lại các sự cố, nếu có, nhằm giúp người quản lý phát hiện và xử lý
Sử dụng nhắn tin ngắn để phát triển các mục đích ứng dụng còn cho thấy rằng sự gắn kết giữa công nghệ điện tử, công nghệ viễn thông và công nghệ thông tin ngày càng trở nên chặt chẽ và chúng đã, đang và sẽ là những bộ phận không thể tách rời trong đời sống hiện đại
Xin bày tỏ lòng biết ơn sâu sắc đến thầy: Tiến sỹ Ngô Diên Tập, giảng viên Khoa Công nghệ - Đại học Quốc gia Hà nội, người đã tận tình hướng dẫn và đưa ra các nhận xét vô cùng quí báu trong quá trình thực hiện luận văn Chân thành cảm ơn
Trang 8Hệ 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
Trang 9Hệ 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 RS-
232 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 RS-
232, 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 máy in
Thiết bị ngoại vi có thể tháo lắp ngay cả khi máy tính đang được cấp điện
Các mạch điện đơn giản có thể nhận được điện áp nguồn nuôi qua cổng nối tiếp
Thông thường thì việc sử dụng cổng nối tiếp đòi hỏi chi phí nhiều hơn vì cần biến đổi dữ liệu được truyền theo kiểu nối tiếp thành dữ liệu song song Với các bài toán ghép nối không phức tạp, trong đó chỉ sử dụng một vài đường dẫn vào ra thì ta
có thể sử dụng trực tiếp các đường dẫn phụ trợ có liên quan của giao diện Tổng cộng có đến hai đường dẫn lối ra và bốn đường dẫn lối vào, có thể được trao đổi trực tiếp bằng các lệnh đơn giản
Sơ đồ chân của cổng nối tiếp RS-232 được mô tả trên hình 1-1
Hình 1-1: Sơ đồ chân cổng nối tiếp RS-232
Trang 10Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
Bảng 1-1 dưới đây chỉ ra tất cả các đường dẫn được nối trên đầu nối 9 chân
Chân (9chân)
Lối vào/ra
Tên gọi Chức năng
8 => CTS, Clear to
Send
Xoá để gửi: bộ nhận đặt đường này lên mức hoạt động để thông báo cho bộ truyền là nó sẵn sàng nhận
dữ liệu
Ready
Dữ liệu sẵn sàng: tính hoạt động giống với CTS nhưng được kích hoạt bởi bộ truyền khi nó sẵn sàng nhận dữ liệu
9 => RI, Ring Indicate Báo chuông, cho biết là bộ
nhận đang nhận tín hiệu
Trang 11Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
rung chuông
Bảng 1-1: Sơ đồ chân cổng nối tiếp RS-232 Việc trao đổi dữ liệu qua cổng nối tiếp trong các trường hợp thông thường đều qua đường dẫn truyền nối tiếp TxD và đường dẫn nhận nối tiếp RxD Tất cả các đường dẫn còn lại có chức năng phụ trợ khi thiết lập và điều khiển phiên truyền dữ liệu Các đường dẫn này được gọi là các đường dẫn bắt tay bởi vì chúng được sử dụng theo phương pháp “ký nhận” giữa các thiết bị Ưu điểm đặc biệt của các đường dẫn bắt tay là trạng thái của chúng có thể đặt hoặc điều khiển trực tiếp
Đặc trưng điện của các đường dẫn lối vào và lối ra đã được chỉ rõ trong tiêu chuẩn RS-232 Trạng thái LOW ứng với mức điện áp +12V còn trạng thái HIGH ứng với mức điện áp -12V Tất cả các lối ra đều có đặc tính chống chập mạch và có thể cung cấp dòng điện từ 10mA đến 20mA Với các lối ra này, các LED đấu vào hoặc được các tầng đệm điều khiển trực tiếp Giữa hai điện áp có một khoảng thời gian trễ, nghĩa là trạng thái được đọc sẽ thay đổi, khi điện áp lối vào nằm ở ngoài vùng này
Thông thường thì giao diện nối tiếp được điều khiển bằng mức tín hiệu hai 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
Trang 12Hệ 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 dịch sau khi đã „đếm‟ xem có bao nhiêu số „1‟ được gửi
Trong khuôn mẫu của khung truyền dị bộ (không đồng bộ), các bít bắt đầu, bít dừng và bít chẵn lẻ được bổ xung vào 7 bít dành cho ký tự mã ASCII Như vậy
Trang 13Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
là phải cần tổng cộng là 10 bít để truyền một ký tự đơn Với 2 bít dừng thì phải cần đến 11 bít Nếu giả thiết là có 10 ký tự gửi đi mỗi giây và nếu như có 11 bít đã sử dụng cho mỗi ký tự thì tốc độ truyền thông tin là 110 bit mỗi giây (bps)
Bảng 1-2 minh hoạ mối quan hệ giữa tốc độ truyền theo bit và số các ký được truyền đi trong mỗi giây với giả thiết là 10 bít được truyền cho mỗi ký tự Tốc
độ bít được đo theo số các bít được truyền đi trong mỗi giây (bps)
Ngoài tốc độ bít, còn có một thuật ngữ khác được sử dụng để mô tả tốc độ truyền là tốc độ baud Tốc độ bít phản ánh tốc độ thực tế mà các bít được truyền, trong khi mà tốc độ baud liên quan với tốc độ mà các phần tử mã hoá dữ liệu được
sử dụng để diễn tả các bít được truyền Bởi vì một phần tử báo hiệu sự mã hoá một bít, nên khi đó hai tốc độ là đồng nhất Chỉ trong các môđem có thêm quá trình biến đổi nên tốc độ bit mới khác tốc độ baud
Bảng 1-2: Tốc độ bps và số các ký tự được truyền trong mỗi giây
Phân chia khoảng thời gian trên luồng bít
Truyền thông dị bộ là kiểu truyền thông với các bít bắt đầu/dừng và cả bộ truyền lẫn bộ nhận phải được thiết lập với cùng khoảng thời gian truyền một bít hay
nói ngắn gọn hơn là khoảng thời gian bít Một bít bắt đầu xác định vị trí bắt đầu
cuộc truyền và luôn luôn có giá trị logic thấp Tiếp theo, bít có ý nghĩa nhỏ nhất
Trang 14Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
được gửi đi, rồi đến phần còn lại của các bít ký tự mã ASCII 7 bít Sau đấy bít chẵn
lẻ được gửi đi và kế tiếp theo là bít dừng Khoảng thời gian thực tế để truyền mỗi bít liên quan đến tốc độ baud và có thể được qui định bằng cách sử dụng công thức sau:
Khoảng thời gian của mỗi bít = 1/Tốc độ baud [2]
1.1.3 TRUYỀN THÔNG GIỮA HAI NÚT
RS-232 đã trở thành một chuẩn nhưng không phải tất cả các nhà sản xuất đều trung thành với nó Một số nhà sản xuất tuân thủ đầy đủ các qui định của chuẩn RS-232, trong khi một số khác chỉ thực hiện một phần Nguyên nhân là không phải tất cả mọi thiết bị đều cần đến toàn bộ khả năng hoạt đông của cổng nối tiếp RS-232 Chẳng hạn môđem cần nhiều đường dẫn điều khiển hơn là chuột khi được đấ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
Trang 15Hệ 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
chân RxD của bộ nhận Hình 1-4 chỉ ra cách kết nối giữa các nút [2]
Hình 1-4: Kết nối ở cổng RS-232 không có phần cứng bắt tay
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)
TD
RD RTS CTS DTR DSR GND
TD
RD RTS CTS DTR DSR GND
Trang 16Hệ 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
dữ liệu được truyền giữa bộ truyền và bộ nhận diễn ra như thế nào
Hình 1-6: Các đường dẫn bắt tay được sử dụng khi truyền dữ liệu
X-ON
TruyÒn d÷ liÖu
TruyÒn d÷ liÖu X-OFF
Cã Kh«ng
S½n sµng nhËn?
CTS RTS RTS
Nót nhËn
RD
RTS Nót truyÒn
CTS CTS
TD
TruyÒn d÷ liÖu
Trang 17Hệ 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ự
được xử lý xong Đấu nối RS-232 có bắt tay được mô tả trong hình 1-7 [2]
Hình 1-7: Ghép nối để truyền thông có bắt tay qua cổng RS-232
1.2 MÔĐEM
Trong những năm gần đây, môđem ghép nối quen thuộc đối với nhiều người
sử dụng máy tính PC Trong phần này, chúng tôi sẽ trình bày một số hiểu viết về môđem
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
DTE
TD
RD RTS CTS DTR DSR GND
TD
RD RTS CTS DTR DSR GND
DTE
Trang 18Hệ 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
M¸y vi tÝnh RS-232 Modem
KÕt nèi qua
®-êng ®iÖn
Trang 19Hệ 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-9: Truyền dữ liệu bằng môđem
Các môđem tồn tại dưới hai dạng: môđem ngoài và môđem trong
Môđem trong được chế tạo dưới dạng một card mở rộng cắm vào rãnh mở
rộng trên bảng mạch chính (mainboard) của máy tính PC Cách ghép nối này không cần nguồn nuôi ngoài
Môđem ngoài được chế tạo dưới dạng một bản mạch được đóng hộp và
được nuôi bởi nguồn nuôi ngoài Môđem ngoài được ghép nối với máy tính thông qua cổng RS-232 sử dụng các dây nối DB-25 hoặc DB-9 [2]
1.3 TRUYỀN THÔNG GIỮA MÁY TÍNH VÀ 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:
Trang 20Hệ 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.22bis (2.4 kpbs) Bell 212 (1.2 kbps) V.17 (14.4kbps, fax) V.27ter (4.8kbps, fax) V.42bis (có nén dữ liệu) MNP5 (có nén dữ liệu)
V.32 (9.6 kbps) V.22 (1.2 kbps) Bell 103 (300 bps) V.29 (9.6 kbps, fax) V.21 (300 kbps, fax) V.42 (hiệu chỉnh lỗi) MNP2-4 (hiệu chỉnh lỗi)
Các môđem theo tiêu chuẩn đều hỗ trợ các lệnh AT cho phép lập trình điều khiển truyền thông của môđem Trong ngôn ngữ AT, khi các máy tính gửi lệnh đến môđem, các lệnh đều bắt đầu bằng hai chữ AT Chẳng hạn „ATDT” là lệnh quay số gọi theo kiểu đa tần Bảng 1-3 dưới đây cho thấy một vài thí dụ về lệnh AT
Lệnh Mô tả tác dụng
ATDT54321 Tự động qua số gọi cho số 54321 khi sử dụng cách nhấn
phím theo kiểu đa tần
AT S0=2 Tự động trả lời sau hai hồi chuông Nếu S0=0 thì môđem
sẽ không trả lời
ATH 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]
Trang 21Hệ 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
CONNECT 1200 5 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]
Trang 22Hệ 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-10: Đấu nối giữa môđem và Máy tính
1.4 MÔĐEM GSM WAVECOM WMO2-G900
1.4.1 GIỚI THIỆU CHUNG
Môđem Wavecom WMO2-G900 được thiết kế như một thiết bị đầu cuối không dây GSM hỗ trợ các dịch vụ thoại, fax, truyền dữ liệu và nhắn tin ngắn trong 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
TD
RD RTS CTS DTR DSR GND
TD
RD RTS CTS DTR DSR GND
DTE
DCE
Trang 23Hệ 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 32V Dòng vào đỉnh với nguồn 5V 2.5V Dòng vào trung bình với nguồn 5V
GSM 07.05 Data Không đồng bộ 2400, 4800 và 9600bps, trong suốt và không
Trang 24Hệ 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 đó:
<rssi> nhận các giá trị sau:
0: -113dBm hoặc thấp hơn 1: -111dBm
2 30: -109 đến -53dBm 31: -53dBm hoặc lớn hơn
<ber> nhận các giá trị sau:
0 đến 7 tương ứng với RXQUAL theo khuyến nghị GSM 05.08
Lệnh AT+CSQ có thể được thực hiện ngay cả trong khi môđem không được cài thẻ SIM card [4]
1.4.2 GIAO TIẾP LỆNH AT
Giao diện lệnh AT của môđem WMO2-G900 đặt nền tảng trên giao thức Hayes giữa TE và ME Các lệnh AT được sử dụng để quản lý các dịch vụ thoại, truyền số liệu, fax, gửi và nhận tin nhắn SMS
Lệnh kiểm tra (Test command): sử dụng chuỗi ký tự “=?” Có thể dùng
để kiểm tra một tham số xem có được hỗ trợ bởi môđem hay không và cũng để kiểm tra giá trị của tham số đó
Ví dụ:
động trả lời cuộc gọi
Trang 25Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
hoạt động
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ụ:
Trang 26Hệ 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 lệnh AT+IPR, AT+IFC, AT+ICF có thể được dùng để thay đổi thông số của giao diện RS-232 thay vì các thông số mặc định đã nói ở phần đầu khi giới thiệu về môđem WMO2-G900
Các tham số trả lời, dù là text hay mã số đều có cấu trúc gồm 3 phần: đầu, thân và kết thúc Phần đầu và phần cuối giống nhau, được tạo thành bởi hai ký tự trở về đầu dòng <CR> và xuống dòng <LF>
Nguyên tắc thông báo trả lời này đúng với tất cả các lệnh, ngoại trừ lệnh Q1
và V0
Khi cú pháp của một lệnh không đúng, môđem sẽ trả lời „ERROR‟
Khi cú pháp của lệnh đúng, nhưng phần tham số bị sai, môđem sẽ trả lời +CME ERROR: <Err> hoặc +CMS ERROR <CMSErr> với mã lỗi
<Err> hoặc <CMSErr> tưưong ứng
Khi câu lệnh đúng hoàn toàn, môđem sẽ trả lời „OK‟ Tuy nhiên, đối với một số lệnh chẳng hạn như “AT+CPIN?”, môđem sẽ không trả lời „OK‟
sau khi thực hiện lệnh
Nhìn chung, với thiết kế nhằm thoả mãn các yêu cầu về các loại dịch vụ tương tự như một máy điện thoại GSM, môđem WMO2-G900 cũng hỗ trợ rất nhiều lệnh AT cho phép người dùng thao tác các chức năng có trên một điện thoại thông thường chẳng hạn kiểm tra SIM card, đọc bộ danh bạ trong bộ nhớ, etc Nói chung, môđem hoàn toàn cho phép người dùng phát triển các ứng dụng liên quan đến các dịch vụ trong GSM kể cả việc truyền số liệu, các ứng dụng nhắn tin ngắn
Trang 27Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
hay xa hơn nữa là các ứng dụng phần mềm đo kiểm thông số và chất lượng của mạng GSM [4]
Tập lệnh AT của môđem WMO được giới thiệu đầy đủ trong tài liệu hướng
dẫn đi kèm với môđem, tuy nhiên do khuôn khổ của luận văn này chỉ tập trung vào ứng dụng nhắn tin ngắn, chúng tôi xin đưa ra một vài lệnh AT thông dụng hỗ trợ nhắn tin ngắn làm ví dụ tham khảo:
Lệnh
AT+CMGF AT+CMGR AT+CMGL AT+CMGS AT+CMGD AT+CSCA
Giải Nghĩa
Đặt chế độ định dạng của tin nhắn
Đọc một tin nhắn có trong bộ nhớ
Liệt kê và đọc tin các nhắn có trong bộ nhớ
Gửi một tin nhắn đi
Xoá một tin nhắn
Đặt địa chỉ trung tâm nhắn tin
Bảng 1-7: Một số lệnh AT hỗ trợ nhắn tin ngắn của môđem WMO2-G900
Cú pháp cụ thể của các lệnh AT nhắn tin ngắn trên, cũng như đáp ứng trả lời của môđem được trình bày cụ thể trong Phụ lục 1 của luận văn
Đoạn chương trình sau viết trong Visual Basic cho phép đọc tất cả các tin nhắn trên SIM card lắp trên môđem WMO2
Private Sub Form_Load()
MSComm1.CommPort = 1 „ sử dụng COM1 MSComm1.Settings = "9600,N,8,1" „ Đặt tốc độ 9600bps MSComm1.InputMode = comInputModeText „Kiểu dữ liệu vào là
text MSComm1.InputLen = 0 „ Đọc xong thì xoá bộ đệm vào MSComm1.PortOpen = True „ Mở cổng COM
MSComm1.Output = "AT" + Chr$(13) „ Gửi lệnh AT ra thăm dò
Trang 28Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
MSComm1.PortOpen = False „ Đóng cổng COM End Sub
Trong đoạn chương trình trên, tập MSComm trong Visual Basic đã được sử dụng Tập MSComm sẽ được trình bày chi tiết trong chương tiếp theo
1.4.3 CÁC MÃ TỰ TRẢ LẠI
Trong một số trường hợp đặc biệt, môđem WMO2-G900 tự động gửi trả lại một số loại mã mặc dù không có lệnh nào được gửi ra trước đó từ máy tính Các mã này được gọi là các mã tự trả lại Cũng giống như môđem thông thường, các mã tự trả lại này có thể ở dưới dạng text hoặc dạng con số (numeric) Chúng đặc biệt quan trọng đối với người lập trình trong việc tìm cách phát hiện ra các thông tin đến chẳng hạn như cuộc gọi đến, tin nhắn đến, v v [4]
Bảng 1-8 dưới đây liệt kê các mã tự trả lại dưới dạng text của môđem G900:
RING Có cuộc gọi đến
+CMTI: <mem>,<index> Có tin nhắn đến được lưu trong bộ nhớ
<mem> tại vị trí <index>
+CMT: <oa>… (text mode) Tin nhắn đến được hiển thị trực tiếp
+CDS: <fo>, <mr>… (text mode) Báo cáo trạng thái SMS sau khi gửi
+CCCM: <ccm> Độ dài cuộc gọi hiện tại
+CKEV: <keynb> Bấm phím hoặc giải phóng
+CCWA: <nb>,<type>,<class> Số cuội gọi chờ
Trang 29Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
+CLIP: <number>,<type> Hiển thị số gọi đến
+CREG: <stat> Chỉ dẫn nhập mạng
+CRING: <type> Kiểu cuộc gọi đến (voice, fax )
+CSQ: <RxLev>,99 Tự động hiển thị RxLev với lệnh
AT+CCED=1,8
Bảng 1-8: Các mã tự trả lại của môđem WMO2-G900 [4]
Trang 30Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
2 Chương 2 LẬP TRÌNH GIAO TIẾP VỚI CỔNG RS-232
Hiện nay, có rất nhiều ngôn ngữ lập trình hỗ trợ lập trình giao tiếp với cổng COM chẳng hạn như Delphi, C++, Visual Basic, v v Mỗi ngôn ngữ lập trình có điểm mạnh riêng của mình và được sử dụng bởi người lập trình tuỳ thuộc vào loại ứng dụng và cả thói quen của người lập trình nữa
Trong khuôn khổ của luận văn này, do ứng dụng được phát triển trên ngôn ngữ Visual Basic nên chúng tôi chỉ tập trung giới thiệu lập trình truyền thông qua cổng RS-232 sử dụng ngôn ngữ Visual Basic
2.1 TRUY NHẬP RS-232 TRONG VISUAL BASIC
Visual Basic cho phép truy nhập cổng sử dụng thư viện “PORT.DLL” của Windows, tuy nhiên khi truy cập thư viện này cần được khai báo trong Môđun của chương trình
Cách truy cập RS-232 trong Visual Basic sử dụng thư viện “PORT.DLL” đã được viết rất kỹ trong cuốn “ Lập trình ghép nối với máy tính trong Windows”, TS Ngô Diên Tập, NXB Khoa học và kỹ thuật, 2001 Cho nên trong khuôn khổ luận văn này, chúng tôi chỉ xin giới thiệu kỹ về kỹ thuật điều khiển truyền thông trong Visual Basic sử dụng tập MSComm của Microsoft - nền tảng chính trong việc lập trình ghép nối trong đề tài của luận văn này
2.2 TRUYỀN THÔNG QUA RS-232 VỚI MSCOMM TRONG VISUAL
BASIC
Trong Visual Basic, điều khiển truyền thông qua cổng nối tiếp RS-232 được thực hiện thông qua tập điều khiển truyền thông MSComm Với Visual Basic 6.0, MSComm có thể được bổ xung bằng cách chọn „Microsoft Comm Control 6.0‟
trong mục „Components‟ của Visual Basic MSComm 6.0 sử dụng tệp MSCOMM32.OCX đặt trong thư mục \WINDOWS\SYSTEM
Trang 31Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
MSComm có biểu tượng hình điện thoại như minh hoạ trong hình 2-1 và cần phải được đưa vào form của chương trình Visual Basic nếu muốn sử dụng
Hình 2-1: Biểu tượng MSComm trong Visual Basic Điều khiển truyền thông MSComm cung cấp hai khả năng để điều khiển việc trao đổi thông tin:
Điều khiển sự kiện Truyền thông điều khiển sự kiện là phương pháp
tốt nhất được sử dụng trong quá trong quá trình điều khiển việc trao đổi thông tin nối tiếp khi nó giải phóng máy tính để làm công việc khác
Trong nhiều tình huống ta cần được thông báo về sự thay đổi Thí dụ như ta cần biết khi có ký tự gửi đến hoặc có sự thay đổi xảy ra trên đường DCD hoặc đường RTS Để thực hiện điều đó, người ta phải sử dụng truyền thông OnComm để bẫy và điều khiển các sự kiện Điều khiển truyền thông còn phát hiện và điều khiển các lỗi truyền thông
Hỏi vòng (polling) Ta cũng có thể hỏi vòng các sự kiện và lỗi bằng
cách kiểm tra giá trị của đặc tính ComEvent sau mỗi chu kỳ của chương trình để xác định liệu xem một sự kiện hoặc một lỗi đã xuất hiện Chẳng hạn, chương trình có thể tạo vòng lặp để chờ một ký tự được nhận Cứ mỗi lần như vậy, ký tự được đọc từ bộ đệm nhận Thông thường phương pháp này thường được sử dụng khi chương trình có thời gian để tiến
Trang 32Hệ 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 hỏi vòng bộ nhận thông tin hay nói cách khác là trong các ứng dụng không lớn
Visual Basic sử dụng các bộ điều khiển cửa sổ chuẩn cho các cổng truyền tin nối tiếp (như serialui.dll và serial.vxd) Mỗi điều khiển truyền thông chỉ có thể dùng
để điều khiển một cổng nối tiếp Nếu cần truy cập nhiều cổng trong ứng dụng thì ta phải dùng nhiều điều khiển truyền thông [1]
2.2.1 CÁC ĐẶC TÍNH CHÍNH CỦA MSCOMM
MScomm có nhiều đặc tính quan trọng, tuy nhiên để có thể làm việc với MScomm trước hết ta cần tìm hiểu các đặc tính chính của nó được liệt kê trong bảng dưới đây:
Các đặc tính
CommPort Input Output PortOpen Settings
Mô tả
Đặt số của cổng nối tiếp, ví dụ 2 cho COM2
Trả lại và bỏ các ký tự khỏi bộ đệm nhận
Viết một xâu ký tự tới bộ đệm truyền
Mở/Đóng cổng tuỳ thuộc vào thông số
Đặt và trả lại các tham số truyền như tốc độ, bit chẵn lẻ, số các bit dữ liệu
Ví dụ dưới đây cho minh hoạ cách sử dụng các đặc tính trên:
Private Sub Form_Load()
„ sử dụng COM1 MSComm1.CommPort = 1
„ Đặt tốc độ 9600bps, không chẵn lẻ, 8 bit dữ liệu, một bit
dừng MSComm1.Settings = "9600,N,8,1"
„ Mở cổng COM MSComm1.PortOpen = True MSComm1.Output = "AT" + Chr$(13) „ Gửi lệnh AT ra môđem
„ Đợi tín hiệu trả lời
Do
Trang 33Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
DoEvents Loop Until MSComm1.InBufferCount >= 2
„Đọc dữ liệu trả lời Instring=MSComm1.input
„ Đóng cổng COM MSComm1.PortOpen = False End Sub
Không kiểm tra chẵn lẻ (mặc định) Chẵn lẻ lẻ
Trống D: số bít hợp lệ trong một khung truyền, có thể nhận các giá trị 4,5,6,7,8 trong đó 8 là mặc định
S: số bít dừng, có thể nhận các giá trị 1, 1.5, 2
Đặc tính PortOpen
Dùng để đặt và trả lại trạng thái của cổng truyền thông, cú pháp như sau:
MSComm.PortOpen = {True|False}
Trang 34Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
Trong đó true để mở cổng, false để đóng cổng và xoá nội dung bộ đệm nhận
và truyền
Đặc tính CommEvent
Đặc tính CommEvent là một đặc tính quan trọng bậc nhất trong MSCommm
và có lẽ là một trong những đặc tính đắc dụng nhất đối với việc lập trình giao tiếp qua cổng nối tiếp sử dụng MSComm cua Visual Basic
Đặc tính CommEvent trả lại hầu hết sự kiện hoặc lỗi truyền thông gần nhất,
cú pháp như sau:
MSComm.CommEvent Mặc dù sự kiện OnComm phát sinh cả lỗi truyền thông và các sự kiện nhưng đặc tính CommEvent lại chứa mã số của các lỗi và sự kiện đó
Các lỗi truyền thông bao gồm:
Xác lập Giá trị Mô tả
ComBreak 1001 Tín hiệu break đã được nhận
ComCDTO 1007 Carrier Detect Timeout
ComCTSTO 1002 Clear to Send Timeout
ComFrame 1004 Phần cứng phát hiện một lỗi sai số khung truyền
ComOverrun 1006 Phần cứng không đọc được ký tự trước khi ký tự
tiếp theo được gửi đến
ComRxOver 1008 Tràn bộ đệm nhận
ComRxParity 1009 Phần cứng phát hiện một lỗi chẵn lẻ
ComTxFull 1010 Đầy bộ đệm truyền
Các sự kiện truyền thông bao gồm:
Xác lập Giá trị Mô tả
ComEvCD 5 Sự thay đổi trên đường CD
ComEvCTS 3 Sự thay đổi trên đường CTS
ComEvDSR 4 Sự thay đổi trên đường DSR
ComEvRing 6 Tiếng chuông được phát hiện
Trang 35Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
ComEvEOF 7 Ký tự kết thúc file được nhận
ComEvReceive 2 Sự kiện này liên tục phát sinh cho đến khi đặc tính
Input được dùng để chuyển dữ liệu từ bộ đệm nhận
ComEvSend 1 Ký tự đã được truyền
0 (MSComm.InputLen=0) để đọc toàn bộ nội dung của bộ đệm nhận
Thí dụ dưới đây chỉ ra cách đọc dữ liệu từ bộ đệm nhận:
Comm1.InputLen=0
„Kiểm tra dữ liệu
If Comm1.InBufferCount then
„ Đọc dữ liệu Instring$=Comm1.Input End If
Đặc tính InBufferCount
Trang 36Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
Trả lại số ký tự trong bộ đệm nhận Nó cũng có thể được sử dụng để xoá bộ đệm bằng cách đặt giá trị 0 Cú pháp như sau:
Trang 37Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
2.2.4 CÁC ĐẶC TÍNH KHÁC
Đặc tính DTREnable
Xác định xem liệu tín hiệu DTR được cho phép Thông thường tín hiệu này được gửi từ máy tính đến môđem để báo hiệu là đã sẵn sàng nhận dữ liệu Giá trị True sẽ cho phép đặt đường dẫn DTR lên mức cao Cú pháp:
MSComm.DTREnable = {True|False}
Đặc tính RTSEnable
Xác định xem đường dẫn RTS đã được phép hay chưa, ví dụ như tín hiệu RTS yêu cầu cho phép truyền dữ liệu từ máy tính đến môđem Giá trị True sẽ cho phép đặt đường dẫn RTS lên mức cao Cú pháp:
MSComm.RTSEnable = {True|False}
Đường RTS được dùng cho việc bắt tay phần cứng nhừo tín hiệu RTS/CTS
Đặc tính RTSEnable cho phép hởi vòng đường RTS khi ta cần xác định trạng thái của nó
Đặc tính RThreshold
Đặt và trả lại số ký tự nhận được trước khi MSComm xác lập đặc tính CommEvent và phát sinh sự kiện OnComm Cú pháp:
MSComm.RThreshold = <numchar>
Xác lập bằng 0 để làm mất sự kiện OnComm khi nhận ký tự, xác lập bằng 1
để tạo sự kiện OnComm mỗi khi có một ký tự được đặt vào bộ đệm nhận
Đặc tính Handshaking
Đặc tính này cho phép xác lập và trả lại giao thức bắt tay (handshaking)
MSComm.Handshaking = protocols Protocols có thể nhận các giá trị trong bảng dưới đây:
Kiểu
ComNone ComXOn/XOff ComRTS ComRTSXOn/XOff
Bắt tay RTS/CTS Bắt tay theo cả hai cách XOn/XOff và RTS
Trang 38Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
MSComm còn bao gồm rất nhiều đặc tính khác mà chúng tôi không nêu ra ở đây, người đọc có thể tham khảo thêm phần hướng dẫn của MSComm trong Visual Basic
Chương trình dưới đây minh hoạ sự kiện OnComm dùng để kiểm tra một số giá trị của đặc tính CommEvent
Private Sub comm1_OnComm()
Select Case Comm1.CommEvent
Case comEvCD „ Có thay đổi trên đường CD Case comEvReceive „ Có nhiều hơn RThreshold ký
tự trong bộ đệm nhận Case comEvSend „ Có nhiều hơn Sthreshold ký
tự trong bộ đệm truyền End Select
End Sub
Chương trình dưới đây là một chương trình đơn giản cho phép truyền/nhập đơn giản sử dụng cổng COM để truyền và nhận Tuy nhiên, ở đầu cổng COM, ta
Trang 39Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
cần phải đấu vòng đường truyền và đường nhận
Private Sub Form_load()
Comm1.CommPort=1
Comm1.Settings=”9600,N,8,1”
Comm1.InputLen=0
Comm1.PortOpen=True End Sub
Private Sub Form_KeyPress (KeyAscii as Integer)
Comm1.Output_KeyAscii
Text1.Text_KeyAscii End Sub
Private Sub comm1_OnComm()
If (Comm1.CommEvent = comEvReceive ) then
Text2.text = Comm1.Input End if
End Sub
Kết quả chạy thử được trình bày trên hình dưới đây:
Thông thường, khi lập trình ghép nối với môđem chẳng hạn, sau khi máy tính gửi một lệnh đến môđem, nó phải đợi trả lời từ phía môđem trước khi thực hiện bước tiếp theo, đoạn chương trình dưới đây minh hoạ kỹ thuật hỏi vòng chờ đáp ứng:
„ Gửi lệnh AT đến môđem Comm1.Output =”AT”
„ Đợi cho đến khi có ký tự gửi trả lại từ môđem
Do
DoEvents Loop until Comm1.InBufferCount >= 2
Trang 40Hệ thống nhắn tin nội bộ trên cơ sở ghép nối môđem GSM ứng dụng SMS
MsgBox (Comm1.Input)
Trong đoạn chương trình trên, lưu ý cần thực hiện các bước xác lập và mở cổng COM trước đó