173
“Tra cứu thông tin và Điều khin thiết bđiện qua tin nhn” Trang| i Đồ án tt nghip LI CẢM ƠN Lời đầu tiên chúng em xin cảm ơn Khoa Điện – Điện t, Đại học Sư Phạm KThuật TPHCM đã tạo điều kin tt cho chúng em thc hiện đề tài. Nhóm xin cảm ơn ThS Đinh Quốc Hùng– Giảng viên Trường Đại hc Bách Khoa TPHCM – đã trc tiếp hướng dn tn tình,chbo, giúp đỡ nhóm, cung cp thiết btrong sut quá trình thc hiện đề tài. Xin cảm ơn sâu sắc các Thy, Cô Bmôn Điện tViễn thông đã tn tình ging dy, trang bnhng kiến thc quý báu trong những năm học va qua, giúp chúng em ttin hơn trong quá trình làm đồ án Lời kết nhóm em xin cảm ơn bạn bè, những người thân trong gia đình đã luôn ng hộ, giúp đỡ, động viên để nhóm hoàn thành đồ án đúng thời hạn TP. HChí Minh, Ngày 4 Tháng 1 Năm 2011 Nhóm Sinh viên thc hin Trn Hoàng Lê Chuyên Lưu Văn Đại

DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

Embed Size (px)

DESCRIPTION

Đồ án tốt nghiệp

Citation preview

Page 1: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | i

Đồ án tốt nghiệp

LỜI CẢM ƠN Lời đầu tiên chúng em xin cảm ơn Khoa Điện – Điện tử, Đại học Sư Phạm Kỹ Thuật TPHCM đã tạo điều kiện tốt cho chúng em thực hiện đề tài.

Nhóm xin cảm ơn ThS Đinh Quốc Hùng– Giảng viên Trường Đại học Bách Khoa TPHCM – đã trực tiếp hướng dẫn tận tình,chỉ bảo, giúp đỡ nhóm, cung cấp thiết bị trong suốt quá trình thực hiện đề tài.

Xin cảm ơn sâu sắc các Thầy, Cô Bộ môn Điện tử Viễn thông đã tận tình giảng dạy, trang bị những kiến thức quý báu trong những năm học vừa qua, giúp chúng em tự tin hơn trong quá trình làm đồ án

Lời kết nhóm em xin cảm ơn bạn bè, những người thân trong gia đình đã luôn ủng hộ, giúp đỡ, động viên để nhóm hoàn thành đồ án đúng thời hạn

TP. Hồ Chí Minh, Ngày 4 Tháng 1 Năm 2011 Nhóm Sinh viên thực hiện Trần Hoàng Lê Chuyên Lưu Văn Đại

Page 2: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | ii

Đồ án tốt nghiệp

QUYẾT ĐỊNH GIAO ĐỀ TÀI

Họ và tên sinh viên: 1. Trần Hoàng Lê Chuyên MSSV: 06117007 2. Lưu Văn Đại MSSV: 06117014

Ngành: Công nghệ Điện tử - Viễn thông

Tên đề tài: THIÊT KẾ HỆ THỐNG TRA CỨU THÔNG TIN VÀ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA TIN NHẮN

Cơ sở ban đầu: ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ Nội dung các phần thuyết minh và tính toán: ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ Các bản vẽ: ........................................................................................................................ ........................................................................................................................ ........................................................................................................................ Giáo viên hướng dẫn: Th.SĐinh Quốc Hùng Ngày giao nhiệm vụ: Ngày hoàn thành nhiệm vụ:

Giáo viên hướng dẫn

Th.S Đinh Quốc Hùng

Ngày ….tháng ….năm 2011 Chủ nhiệm bộ môn

Bộ Giáo dục và Đào tạo Đại học Sư phạm Kỹ thuật TPHCM

Cộng Hoà Xã Hội Chủ Nghĩa Việt Nam Độc lập – Tự do – Hạnh phúc

Page 3: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | iii

Đồ án tốt nghiệp

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN .......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

Ngày ….tháng ….năm 2011 Giáo viên hướng dẫn

Th.S Đinh Quốc Hùng

Page 4: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | iv

Đồ án tốt nghiệp

Ngày ….tháng ….năm 2011 Giáo viên phản biện 2

Ngày ….tháng ….năm 2011 Giáo viên phản biện 1

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN .......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

.......................................................................................................................

Page 5: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | v

Đồ án tốt nghiệp

LỜI NÓI ĐẦU Cùng với thoại, SMS là một trong những tính năng được khai thác nhiều nhất của thiết bị di động (DĐ) cầm tay. SMS đang được ứng dụng ngày càng sâu rộng, mang lại hiệu quả kinh tế và là phương tiện giải trí cho số đông người dùng, đặc biệt là giới trẻ. Tuy nhiên, SMS đi cùng một số rủi ro, nên có những dịch vụ quy định người chi tiêu thường xuyên 3 triệu đồng/tháng trở lên mới được sử dụng...

SMS (Short Message Service – dịch vụ thông điệp ngắn gọn) là dịch vụ cho phép gửi những tin nhắn ngắn 160 ký tự. Đối tượng là các thiết bị DĐ như ĐTDĐ, Smartphones, PDAs. Hiện cách thức mở rộng của SMS khá rộng như: gửi SMS giữa các thiết bị DĐ với nhau; gửi từ website đến thiết bị DĐ và ngược lại; gửi/nhận từ điện thoại cố định có hỗ trợ tính năng nhắn tin với các thiết bị DĐ khác... SMS có thể tham gia các quá trình điều khiển, tự động hóa, kinh doanh, thanh toán...

Hiện tại, ngay cả các cửa hàng kinh doanh viễn thông, các công ty tin học và nhiều cơ quan truyền thông cũng đã tham gia vào thị trường này. SMS đang trở thành một loại hạ tầng thông tin không thể thiếu trong cuộc sống thường ngày từ vui chơi giải trí, thương mại, xã hội...

Ứng dụng tra cứu thông tin, giải trí là loại ứng dụng phổ thông nhất của SMS và đang được sử dụng nhiều nhất hiện nay. Người sử dụng chỉ việc nhắn tin theo cú pháp định sẵn đến 1 số tổng đài nhất định, tổng đài sẽ tra cứu thông tin và phản hồi về (tra cứu thông tin) hoặc sẽ xác nhận người sử dụng tham gia vào một chương trình giải trí nào đó (đố vui, trúng thưởng...). Có thể kể đến các ứng dụng cụ thể như tra cứu danh bạ điện thoại; địa chỉ nhà hàng, khách sạn; địa chỉ đặt ATM; giá cổ phiếu; kết quả xổ số, bóng đá...

Một số khả năng của SMS đã được khai thác trên thế giới và chắc chắn cũng sẽ có mặt ở Việt Nam. Ví dụ, dùng SMS điều khiển từ xa. Ông Ngô Chí Đức, công ty SQS cũng tỏ ra rất tâm huyết với phương án dùng SMS điều khiển từ xa các thiết bị điện trong nhà. Trong khi đó, ông Nguyễn Anh Tiến, trưởng phòng CNTT công ty Tân Lai, TP.HCM cho biết, bài toán này đã được ứng dụng ở một số nước (bật tắt các thiết bị điện trong nhà) và TP.HCM có một nhóm đã nghiên cứu đề tài này.

Từ những yêu cầu thực tế, những đòi hỏi ngày càng cao của cuộc sống, cộng với sự hợp tác, phát triển mạnh mẽ của mạng di động nên chúng em đã chọn đề tài "Tra cứu thông tin và Điều khiển thiết bị điện qua Tin nhắn SMS" để đáp ứng được nhu cầu ngày càng cao của con người và góp phần vào sự tiến bộ, văn minh, hiện đại của nước nhà.

Đề tài này được chia làm 3 phần như sau: o Phần A. Giới thiệu (Lời cảm ơn, lời nói đầu, mục lục…) o Phần B. Nội dung chính của đề tài (chương 1 đến chương 6) o Phần C. Phụ lục và tài liệu tham khảo

Mặc dù em đã có nhiều cố gắng trong quá trình viết báo cáo, nhưng chắc chắn không tránh khỏi những khiếm khuyết. Vì vậy rất mong nhận được sự góp ý từ quý Thầy

Page 6: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | vi

Đồ án tốt nghiệp

GIỚI HẠN ĐỀ TÀI Để thực thi một hệ thống điều khiển thiết bị từ xa thông qua tin nhắn SMS áp dụng cho một ngôi nhà hoàn chỉnh như nói trên là rất phức tạp và rất tốn kém. Để đáp ứng việc điều khiển toàn bộ các thiết bị này đòi hỏi phải có một lượng thời gian, kiến thức nhất định. Bên cạnh đó còn là vấn đề tài chính. Với lượng thời gian và kiến thức có hạn, trong đề tài này nhóm em chỉ thực thi một phần của hệ thống hoàn chỉnh đó. Đó là điều khiển đóng mở đèn, quạt…

Với những gì đã trình bày trên, nhóm em đã tiến hành nghiên cứu, khảo sát và thực hiện và dự kiến đạt được các mục tiêu đặt ra như sau:

Nhận tin nhắn đến, phân tích nội dung xem tin nhắn yêu cầu tra cứu điểm của học sinh nào và tự động trả lời

Điều khiển các thiết bị trong nhà (cụ thể là điều khiển một thiết bị công suất trung bình) bằng tin nhắn SMS tại ví trí có phủ sóng của mạng thông tin di động trong nước như viettel, mobifone, vinaphone …

Tự động gửi tin nhắn ngược trở lại cho người điều khiển, với nội dung tin nhắn chứa thông tin hoạt động của thiết bị (on/off)

TP. Hồ Chí Minh, Ngày 4 Tháng 1 Năm 2011 Nhóm Sinh viên thực hiện Trần Hoàng Lê Chuyên Lưu Văn Đại

.

Page 7: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | vii

Đồ án tốt nghiệp

MỤC LỤC LỜI CẢM ƠN ............................................................................................................. i

QUYẾT ĐỊNH GIAO ĐỀ TÀI .................................................................................. ii

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ....................................................... iii

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN .......................................................... iv

LỜI NÓI ĐẦU ............................................................................................................ v

MỤC LỤC ................................................................................................................ vii

TỪ VIẾT TẮT............................................................................................................ x

LIỆT KÊ HÌNH ........................................................................................................ xi

LIỆT KÊ BẢNG ...................................................................................................... xiii

CHƯƠNG 1.TỔNG QUÁT VỀ HỆ THỐNG THÔNG TIN DI ĐỘNG GSM VÀ TIN NHẮN SMS ........................................................................................................ 1

1.1 TỔNG QUÁT VỀ HỆ THỐNG THÔNG TIN DI ĐỘNG GSM .......................... 1

1.1.1 Giới thiệu...................................................................................................... 1

1.1.2 Cấu trúc mạng GSM ..................................................................................... 2

1.2 TỔNG QUÁT VỀ TIN NHẮN SMS ................................................................... 9

1.2.1 Giới thiệu SMS ............................................................................................. 9

1.2.2 Cấu trúc một tin nhắn SMS ......................................................................... 11

1.2.3 Tin nhắn SMS chuỗi/ Tin nhắn SMS dài ..................................................... 11

1.2.4 SMS Centre /SMSC .................................................................................... 11

1.2.5 Nhắn tin SMS quốc tế ................................................................................. 12

CHƯƠNG 2.GSM MODEM, TẬP LỆNH AT ........................................................ 13

2.1 GSM MODEM ................................................................................................. 13

2.1.1 Giới thiệu.................................................................................................... 13

2.1.2 WAVECOM Fastrack Supreme 20 ............................................................. 13

2.2 TẬP LỆNH AT DÙNG CHO SMS ................................................................... 16

2.2.1 Giới thiệu.................................................................................................... 16

2.2.2 Tập lệnh AT dùng cho dịch vụ cuộc gọi và SMS ........................................ 17

CHƯƠNG 3.VI ĐIỀU KHIỂN AT89S52 VÀ LCD HD44780 ................................ 25

3.1 VI ĐIỀU KHIỂN AT89S52 .............................................................................. 25

3.1.1 Giới thiệu.................................................................................................... 25

3.1.2 Tổ chức bộ nhớ của AT89S52 .................................................................... 27

3.1.3 Timer .......................................................................................................... 30

3.1.4 Truyền dữ liệu nối tiếp ................................................................................ 32

Page 8: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | viii

Đồ án tốt nghiệp

3.1.5 Tóm tắt tập lệnh của vi điều khiển AT89S52 .............................................. 34

3.2 LCD HD44780 ................................................................................................. 36

3.2.1 Chức năng các chân LCD 16x2 ................................................................... 36

3.2.2 Sơ đồ khối của LCD 16x2 ........................................................................... 37

3.2.3 Các thanh ghi và vùng RAM của LCD ........................................................ 38

CHƯƠNG 4. XÂY DỰNG HỆ THỐNG TRA CỨU THÔNG TIN QUA TIN NHẮN ....................................................................................................................... 48

4.1 SƠ ĐỒ KHỐI ................................................................................................... 49

4.2 LƯU ĐỒ ........................................................................................................... 50

4.3 THIẾT KẾ ........................................................................................................ 51

4.3.1 Một số hàm cơ bản liên quan đến lập trình SMS ......................................... 51

4.3.2 Kết nối Access Database với C# ................................................................. 51

4.3.3 Truyền nhận dữ liệu qua cổng com (RS232) ............................................... 53

4.3.4 Làm việc với chuỗi ..................................................................................... 59

4.3.5 Cơ sở dữ liệu .............................................................................................. 59

4.3.6 Cấu hình Modem GSM ............................................................................... 60

4.4 GIAO DIỆN CHƯƠNG TRÌNH ....................................................................... 61

4.4.1 Cài đặt kết nối ............................................................................................. 61

4.4.2 Giao diện chương trình chính ...................................................................... 61

4.4.3 Khi có tin nhắn tới ....................................................................................... 62

4.4.4 Trong Tab Message gồm 4 menu: Send, Send Multiple, Read, Delete ......... 62

4.4.5 Menu Send .................................................................................................. 63

4.4.6 Menu Send Multiple .................................................................................... 63

4.4.7 Menu Read Message ................................................................................... 63

4.4.8 Menu Delete ................................................................................................ 64

4.5 TESTING ......................................................................................................... 64

CHƯƠNG 5. THIẾT KẾ, THI CÔNG MẠCH ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA TIN NHẮN ...................................................................................................... 68

5.1 SƠ ĐỒ KHỐI ................................................................................................... 68

5.2 THIẾT KẾ MẠCH ............................................................................................ 68

5.2.1 Khối GSM Modem ..................................................................................... 68

5.2.2 Khối hiển thị ............................................................................................... 72

5.2.3 Khối Relay.................................................................................................. 73

5.3 LƯU ĐỒ CHƯƠNG TRÌNH ............................................................................ 73

Page 9: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | ix

Đồ án tốt nghiệp

5.4 TESTING ......................................................................................................... 82

CHƯƠNG 6.KẾT LUẬN, HƯỚNG PHÁT TRIỂN ĐỀ TÀI ................................. 87

6.1 KẾT LUẬN ...................................................................................................... 87

6.2 HƯỚNG PHÁT TRIỂN ĐỀ TÀI ...................................................................... 87

PHỤ LỤC ................................................................................................................. 89

A. BẢNG MÃ ASCII ............................................................................................. 89

B. GSM EQUIPMENT AND NETWORK ERROR CODES .................................. 98

C. CÚ PHÁP TIN NHẮN ..................................................................................... 102

D. HƯỚNG DẪN KẾT NỐI VÀ SỬ DỤNG ........................................................ 104

E. CODE CHƯƠNG TRÌNH ĐIỀU KHIỂN THIẾT BỊ ........................................ 110

F. CODE CHƯƠNG TRÌNH TRA CỨU .............................................................. 121

TÀI LIỆU THAM KHẢO ..................................................................................... 160

Page 10: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | x

Đồ án tốt nghiệp

TỪ VIẾT TẮT

A ANSI American National Standards Institude AUC Authentication Center B BSC Base Station Controler BSS Base Station Subsystem BTS Base Tranceiver Station D DTE Data Terminal Equipment E ETSI European Telecommunications Standards Institute F GSM Global System for Mobile Communication GPRS General Packet Radio Services GMSC Gateway Mobile Switching Center H HLR Home Location Register I IMSI International Mobile Subscriber Identity L LR Location Registration M ME Mobile Equipment MS Mobile Station MSC Mobile Service Switching Center MMS More Message to Send MoU Memorandum of Understanding MO Mobile Originated MR Message Reference MT Mobile Terminated N NSS Network and Switching Subsystem P PDU Protocol Data Unit S SIM Subsriber Identify Module SMS Short Message Service SMSC Short Message Service Center T TCH Traffic Channel TDMA Time Division Multiple Access V VLR Visitor Location Register

Page 11: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | xi

Đồ án tốt nghiệp

LIỆT KÊ HÌNH Hình 1-1 Mạng tế bào vô tuyến ......................................................................................... 1 Hình 1-2 Sơ đồ các node mạng cơ bản trong mạng di động Viettel ................................... 2 Hình 1-3 Node EIR trong mạng di động ............................................................................ 3 Hình 1-4 Node AUC trong mạng di động .......................................................................... 4 Hình 1-5 Node HLR trong mạng di động .......................................................................... 5 Hình 1-6 BTS và BSC trong mạng di động ....................................................................... 6 Hình 1-7 MSC/VLR và GMSC trong mạng di động .......................................................... 7 Hình 1-8 Các nút VAS_IN trong mạng di động ................................................................. 8 Hình 2-1 GSM Modem ................................................................................................... 13 Hình 2-2 Wavecom fastrack supreme 20 ......................................................................... 13 Hình 2-3 Nguồn cung cấp ............................................................................................... 14 Hình 2-4 Cổng COM....................................................................................................... 15 Hình 2-5 Khe gắn SIM .................................................................................................... 15 Hình 2-6 Vị trí gắn Antenna ............................................................................................ 15 Hình 3-1 Sơ đồ chân AT89S52 ....................................................................................... 25 Hình 3-2 Tổ chức bộ nhớ AT89S52 ................................................................................ 27 Hình 3-3 Bộ nhớ ............................................................................................................. 28 Hình 3-4 Sơ đồ khối của LCD ......................................................................................... 38 Hình 3-5 Địa chỉ vùng RAM hiển thị trên LCD. .............................................................. 39 Hình 3-6 Vùng RAM chứa ký tự CGROM. .................................................................... 40 Hình 3-7 Bảng ký tự của LCD......................................................................................... 41 Hình 3-8 Vùng RAM chứa ký tự đồ họa.......................................................................... 42 Hình 3-9 Quá trình ghi LCD. .......................................................................................... 46 Hình 3-10 Chu kỳ thời gian ghi LCD .............................................................................. 46 Hình 3-11Qúa trình đọc từ LCD ...................................................................................... 46 Hình 3-12 Chu kỳ thời gian đọc LCD.............................................................................. 47 Hình 3-13 Quá trình khởi tạo LCD .................................................................................. 47 Hình 4-1 Sơ đồ khối hệ thống ......................................................................................... 49 Hình 4-2 Lưu đồ chương trình ......................................................................................... 50 Hình 4-3 Bảng dữ liệu học sinh ....................................................................................... 52 Hình 4-4 Tìm thành công Hình 4-5 Tìm không thành công............................ 52 Hình 4-6 Cổng COM....................................................................................................... 53 Hình 4-7 Nối dây cho cơ chế NONE và XON/XOFF ...................................................... 54 Hình 4-8 Nối dây cho cơ chế CTS/RTS, CTS/RTS XON/XOFF ..................................... 54 Hình 4-9 Form truyền nhận dữ liệu ................................................................................. 55 Hình 4-10 Sử dụng Serial Port để sử dụng cho truyền dữ liệu qua cổng COM................. 56 Hình 4-11 Bảng dữ liệu sách học sinh ............................................................................. 60 Hình 4-12 Bảng dữ liêu giáo viên .................................................................................... 60 Hình 4-13 Cài đặt kết nối ................................................................................................ 61 Hình 4-14 Giao diện chương trình chính ......................................................................... 61 Hình 4-15 Khi có tin nhắn đến ........................................................................................ 62 Hình 4-16 Menu chương trình ......................................................................................... 62

Page 12: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | xii

Đồ án tốt nghiệp

Hình 4-17 Form Send Message ....................................................................................... 63 Hình 4-18 Form Send Multiple Message ......................................................................... 63 Hình 4-19 Form Read Message ....................................................................................... 64 Hình 4-20 Form Delete Message ..................................................................................... 64 Hình 4-21 Giao diện chương trình chính ......................................................................... 65 Hình 4-22 Soạn tin tra cứu điểm thi ................................................................................ 65 Hình 4-23 Chương trình đã nhận tin và trả lời ................................................................. 66 Hình 4-24 Nội dung tin trả lời ......................................................................................... 66 Hình 4-25 Tin nhắn tra cứu thông tin giáo viên ............................................................... 67 Hình 4-26 Tin nhắn trả lời ............................................................................................... 67 Hình 5-1 Sơ đồ khối hệ thống ......................................................................................... 68 Hình 5-2 GSM Modem ................................................................................................... 68 Hình 5-3 Cáp RS232 ....................................................................................................... 69 Hình 5-4 Hộp thoại Connection Description ................................................................... 69 Hình 5-5 Hộp thoại Connect to........................................................................................ 70 Hình 5-6 Hộp thoại Properties ......................................................................................... 70 Hình 5-7 Cửa sổ làm việc ................................................................................................ 71 Hình 5-8 Sơ đồ mạch nguyên lý mạch vi điều khiển........................................................ 72 Hình 5-9 Khối hiển thị .................................................................................................... 73 Hình 5-10 Sơ đồ nguyên lý khối Relay ............................................................................ 73 Hình 5-11 Quá trình chương trình truyền nhận dữ liệu giữa VĐK và Modem ................. 74 Hình 5-12 Lưu đồ chương trình chính ............................................................................. 75 Hình 5-13 Lưu đồ chương trình nhận dữa liệu ................................................................. 77 Hình 5-14 Lưu đồ chương trình gửi dữ liệu ..................................................................... 78 Hình 5-15 Lưu đồ chương trình lấy địa chỉ...................................................................... 80 Hình 5-16 Lưu đồ chương trình so sánh .......................................................................... 81 Hình 5-17 Lưu đồ chương trình gửi tin nhắn ................................................................... 82 Hình 5-18 Hệ thống sau khi kết nối ................................................................................. 82 Hình 5-19 Hệ thống ở chế độ chờ .................................................................................... 83 Hình 5-20 Gửi tin nhắn mở đèn ....................................................................................... 83 Hình 5-21 LCD hiện thị có tin nhắn đến .......................................................................... 84 Hình 5-22 LCD hiển thị số điện thoại và nội dung tin nhắn ............................................. 84 Hình 5-23 Đèn mở, quạt tắt ............................................................................................. 85 Hình 5-24 Tin nhắn trả về ............................................................................................... 85 Hình 5-25 LCD hiển thị số điện thoại và nội dung tin nhắn ............................................. 86 Hình 5-26 Đèn tắt, quạt mở ............................................................................................. 86

Page 13: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | xiii

Đồ án tốt nghiệp

LIỆT KÊ BẢNG Bảng 3-1 Chức năng các chân port 3 ............................................................................... 26 Bảng 3-2 Chức năng thanh ghi T2CON........................................................................... 30 Bảng 3-3 Các mode hoạt động của timer 2 ...................................................................... 30 Bảng 3-4 Chức năng thanh ghi TMOD ............................................................................ 30 Bảng 3-5 Chọn MODE Timer ......................................................................................... 31 Bảng 3-6 Chức năng thanh ghi TCON ............................................................................ 31 Bảng 3-7 Chọn chế độ truyền .......................................................................................... 32 Bảng 3-8 Tóm tắt tốc độ Baud tương ứng với 2 loại thạch anh 12MHz và 11,059Mhz .... 33 Bảng 3-9 Chức năng các chân LCD. ............................................................................... 37 Bảng 3-10 Lựa chọn thanh ghi IR hay DR....................................................................... 38 Bảng 3-11 Tập lệnh của LCD. ......................................................................................... 42 Bảng 3-12 Đặc tính điện các chân giao tiếp của LCD. ..................................................... 45

Page 14: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 1

CHƯƠNG 1. TỔNG QUÁT VỀ HỆ THỐNG THÔNG TIN DI ĐỘNG GSM VÀ TIN NHẮN SMS

1.1 TỔNG QUÁT VỀ HỆ THỐNG THÔNG TIN DI ĐỘNG GSM

1.1.1 Giới thiệu Lịch sử hình thành GSM bắt đầu từ một đề xuất vào năm 1982 của Nordic Telecom và Netherlands tại CEPT (Conference of European Post and Telecommunication) để phát triển một chuẩn tế bào số mới đáp ứng với nhu cầu ngày càng tăng của mạng di động Châu Âu. Ủy ban Châu Âu (EC) đưa ra lời hướng dẫn yêu cầu các quốc gia thành viên sử dụng GSM cho phép liên lạc di động trong băng tần 900MHz. Viện tiêu chuẩn viễn thông Châu Âu (ETSI) định nghĩa GSM khi quốc tế chấp nhận tiêu chuẩn hệ thống điện thoại tế bào số. Lời đề xuất có kết quả vào tháng 9 năm 1987, khi 13 nhà điều hành và quản lý của nhóm cố vấn CEPT GSM thỏa thuận ký hiệp định GSM MoU “Club”, với ngày khởi đầu là 1 tháng 7 năm 1991. GSM là từ viết tắt của Global System for Mobile Communications (hệ thống thông tin di động toàn cầu), trước đây có tên là Groupe Spécial Mobile. Hệ thống thông tin di động toàn cầu GSM là hệ thống thông tin tế bào số tích hợp và toàn diện, được phát triển đầu tiên ở Châu Âu và đã nhanh chóng phát triển trên toàn thế giới. Mạng được thiết kế phù hợp với hệ thống ISDN và các dịch vụ mà GSM cung cấp là một hệ thống con của dịch vụ ISDN chuẩn.

Hình 1-1Mạng tế bào vô tuyến

GSM đầu tiên được thiết kế hoạt động ở dải tần 890-915 MHz và 935-960 MHz, hiện nay là 1.8 GHz. Một vài tiêu chuẩn chính được đề nghị cho hệ thống: • Chất lượng âm thoại chính thực sự tốt • Giá dịch vụ và thuê bao giảm • Hỗ trợ liên lạc di động quốc tế • Khả năng hỗ trợ thiết bị đầu cuối trao tay • Hỗ trợ các phương tiện thuận lợi và dịch vụ mới.

• Năng suất quang phổ.

Page 15: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 2

Chương 1. Tổng quát về mạng thông tin di động GSM

• Khả năng tương thích ISDN.

Tiêu chuẩn được ban hành vào tháng giêng năm 1990 và những hệ thống thương mại đầu tiên được khởi đầu vào giữa năm 1992. Tổ chức MoU (Memorandum of Understanding) thành lập bởi nhà điều hành và quản lý GSM được cấp phép đầu tiên, lúc đó có 13 hiệp định được ký kết và đến nay đã có 191 thành viên ở khắp thế giới.Tổ chức MoU có quyền lực tối đa, được quyền định chuẩn GSM.

1.1.2 Cấu trúc mạng GSM a. Sơ đồ các node mạng cơ bản trong mạng di động GSM Viettel

Hình 1-2Sơ đồ các node mạng cơ bản trong mạng di động Viettel

Các node mạng cơ bản trong mạng di động Viettel được phân chia thành 3 nhóm bao gồm:

Nhóm các node mạng lớp Vô tuyến Nhóm các node mạng lớp Chuyển mạch Nhóm các node mạng lớp VAS-IN

b. Máy đầu cuối di động, node mạng EIR, AUC, HLR Máy đầu cuối di động bao gồm 2 phần: phần “Máy” và phần “Thẻ SIM”.

Máy di động Thẻ SIM

Page 16: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 3

Chương 1. Tổng quát về mạng thông tin di động GSM

Máy di động Máy di động được cung cấp bởi nhiều hãng sản xuất máy di động trên thế giới.Tuy nhiên mỗi một máy di động được gắn một số nhận dạng duy nhất để phân biệt các máy đó với nhau đó gọi là số IMEI (tên tiếng Anh là International Mobile Equipment Indentity).Số IMEI là một số gồm 15 chữ số trong đó:

6 chữ số đầu là chỉ chủng loại thiết bị 2 chữ số tiếp theo là chỉ hãng sản xuất 6 chữ số tiếp theo là số serial của thiết bị 1 chữ số cuối cùng : chưa dùng

Số IMEI được lưu trữ trong một node mạng của lớp mạng lõi gọi là EIR (tên tiếng anh là Equipment Identity Register).Nếu một máy di động nào bị mất cắp, người sử dụng cung cấp cho các nhà cung cấp dịch vụ di động số IMEI của máy bị mất cắp.Các nhà cung cấp dịch vụ di động đưa số IMEI của máy mất cắp vào danh sách đen.Khi người khác sử dụng máy để gọi điện thoại hệ thống sẽ phát hiện ra máy này trong danh sách đen và không cho phép gọi.

Hình 1-3Node EIR trong mạng di động

Hiện tại mạng Di động Viettel vẫn chưa sử dụng node EIR

Thẻ SIM Viettel đặt hàng một hãng sản suất thẻ SIM cung cấp thẻ SIM trắng cho mạng di động Viettel. Hãng sản suất thẻ SIM chế tạo ra một lô thẻ SIM , mỗi thẻ SIM được gắn với một số nhận dạng duy nhất để phân biệt các thẻ SIM với nhau gọi là số IMSI ( tên tiếng Anh là International Mobile Subscriber Indentity). Số IMSI là một số gồm 15 chữ số trong đó:

3 chữ số đầu dùng để chỉ mã nước di động ( Việt Nam có mã là 452)

Page 17: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 4

Chương 1. Tổng quát về mạng thông tin di động GSM

1 đến 3 chữ số tiếp theo dùng để chỉ mã mạng di động ( Viettel có mã là 04)

Các chữ số còn lại là số serial nhận dạng thuê bao di động

Số IMSI được lưu trữ trong một node mạng của phần chuyển mạch gọi là AUC (tên tiếng Anh là Authentication Center).Trong mỗi thẻ SIM, nhà sản suất thẻ SIM có cài vào một bộ mã bảo mật (gọi là bộ ba triplet). Mỗi thẻ SIM có một bộ mã bảo mật khác nhau và mã bảo mật này cũng được lưu trữ trên node mạng AUC.Khi thuê bao dùng thẻ SIM để truy nhập vào mạng, hệ thống sẽ yêu cầu thẻ SIM cung cấp mã bảo mật này và so sánh với mã bảo mật lưu trong AUC.Nếu hai mã này trùng nhau thì thẻ SIM được coi là hợp lê. Như vậy nếu một hãng sản suất thẻ SIM thứ 2 cũng sản suất ra một thẻ SIM có cùng số IMSI nhưng do không biết được mã bảo mật này nên thẻ SIM của hãng sản suất SIM thứ 2 này không thể sử dụng được.

Hình 1-4Node AUC trong mạng di động

Số thuê bao di động Số thuê bao của khách hàng không được lưu trữ trong thẻ SIM.Khi thuê bao giao tiếp trao đổi thông tin với mạng, mạng phân biệt các thuê bao với nhau dựa vào số IMSI của thẻ SIM. Số thuê bao được lưu trữ trong một node mạng của phần chuyển mạch gọi là HLR ( tên tiếng Anh là Home Location Register ). Trên bộ nhớ của HLR, mỗi một IMSI (tương ứng với một thẻ SIM) được gắn với một số thuê bao MSISDN (tên tiếng Anh là Mobile Subscriber Integrated Services Digital Network Number).Số MSISDN là một số gồm tối đa 15 chữ số trong đó:

1 đến 3 chữ số dùng để chỉ mã nước ( Việt Nam có mã là 84)

Page 18: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 5

Chương 1. Tổng quát về mạng thông tin di động GSM

2 chữ số tiếp theo dùng để chỉ mã mạng Các chữ số còn lại là số thuê bao.

Ngoài ra, trên HLR còn lưu trữ thông tin của thuê bao như: thuê bao là trả trước hay trả sau, các dịch vụ mà thuê bao được cung cấp như thoại, sms, chặn cuộc gọi, chuyển cuộc gọi , nhạc chuông, có bị chặn cước hay không, thuê bao đang nằm trong vùng của tổng đài nào quản lý…..

Hình 1-5 Node HLR trong mạng di động

Hiện tại mạng Viettel sử dụng hệ thống AUC/HLR được tích hợp chung trong cùng một node mạng.

c. Lớp Vô tuyến Trạm thu phát sóng BTS Khi thuê bao lần đầu lắp thẻ SIM vào máy và tiến hành bật máy, máy di động sẽ tiến hành giao tiếp trao đổi thông tin với mạng qua Trạm thu phát sóng BTS.Trạm thu phát sóng BTS có nhiệm vụ thu / phát trao đổi thông tin với máy di động thông qua sóng vô tuyến.

Thông thường, một trạm thu phát sóng có cấu hình tối đa 4/4/4 gồm 3 anten quay về ba hướng. Mỗi anten phụ trách thu phát 4 tần số (Có 4 bộ thu phát TRX). Hiện Viettel được sử dụng khối tấn số từ 43 đến 83.

Vùng phủ của một anten được gọi là 1 cell hay 1 sector.Với một cell có cấu hình tối đa thu phát 4 tần số thì ta có 4*8=32 time slot ( băng thông 16K) trên đường vô tuyến.Một trong số các time slot này được sử dụng cho kênh báo hiệu quảng bá

Page 19: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 6

Chương 1. Tổng quát về mạng thông tin di động GSM

BCCH.Khoảng 5 đến 7 Time slot được sử dụng cho kênh báo hiệu SDCCH ( dùng cho báo hiệu thiết lập cuộc gọi, SMS..). Các time slot còn lại được dùng cho kênh lưu lượng TCH ( truyền tải tín hiệu thoại, data, GPRS..)

Tổng đài BSC Ngoài ra trong lớp vô tuyến còn có thêm một node mạng gọi là BSC. Tổng đài BSC là tổng đài có nhiệm vụ quản lý các trạm thu phát BTS.Việc điều khiển các trạm BTS thu phát tín hiệu trên Time Slot nào, tần số nào là do tổng đài BSC quản lý. Mỗi trạm BTS được đấu tới BSC bằng 1 đường E1 gồm 32 Time slot ( băng thông 64K). Với một trạm BTS có cấu hình 4/4/4 ( 12 bộ thu phát TRX) , thông thường 2 TRX sẽ cần 1 Time slot trên E1 này để dùng làm kênh báo hiệu LAPD ( dùng để truyền tải tín hiệu báo hiệu BCCH, SDCCH từ BTS về BSC). Các time slot còn lại dùng để truyền tải lưu lượng.

Hình 1-6 BTS và BSC trong mạng di động

d. Lớp Mạng lõi

Tổng đài VMSC Tổng đài VMSC gồm 2 khối chức năng chính là VLR và MSC. VLR ( tên tiếng Anh là Visitor Location Register) là một cơ sở dữ liệu lưu trữ các thông tin liên quan đến thuê bao như bộ 3 Triplet của thuê bao, Các dịch vụ mà thuê bao được cung cấp, Vị trí của thuê bao … MSC ( tên tiếng Anh là Mobile Switching Center) có chức năng chính là chuyển mạch và xử lý báo hiệu. Có nhiệm vụ thiết lập kết nối tới tổng đài tiếp theo để phục vụ kết nối cuộc thoại giữa các thuê bao. Khi thuê bao A lần đầu bật máy, máy di động sẽ gửi số IMSI của thẻ SIM cài trên máy lên cho tổng đài VMSC. Tổng đài VMSC sẽ yêu cầu AUC cung cấp bộ 3 nhận thực triplet của thuê bao này để so sánh với thông tin nhận thực mà thuê bao gửi

Page 20: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 7

Chương 1. Tổng quát về mạng thông tin di động GSM

lên. Nếu trùng thì thuê bao A được phép nhập mạng.Tiếp theo VMSC sẽ liên hệ với HLR để thông báo số thuê bao A đang nằm trong vùng phục vụ của mình đồng thời yêu cầu HLR cung cấp các thông tin về dịch vụ của thuê bao này (thuê bao là trả trước hay trả sau, các dịch vụ mà thuê bao được cung cấp như thoại, sms, chặn cuộc gọi, chuyển cuộc gọi, nhạc chuông, có bị chặn cước hay không…). Các thông tin này của thuê bao được lưu trữ trên VLR. Khi thuê bao tiến hành gọi đi, MSC sẽ lấy data trong trong VLR để kiểm tra nếu thuê bao không bị chặn dịch vụ thì kết nối đàm thoại cho thuê bao này.

Tổng đài GMSC Tổng đài GMSC về chức năng giống hệt tổng đài VMSC nhưng nó không có VLR. Tổng đài GMSC không có giao diện kết nối với BSC của lớp vô tuyến. Nhiệm vụ chính của GMSC là thực hiện chức năng làm cổng kết nối ( Gateway) để kết nối với các mạng đối tác khác bên ngoài.

Hình 1-7MSC/VLR và GMSC trong mạng di động

e. Lớp VAS-IN

Các node mạng VAS_IN

Page 21: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 8

Chương 1. Tổng quát về mạng thông tin di động GSM

Hình 1-8Các nút VAS_IN trong mạng di động

Trung tâm nhắn tin SMSC Hệ thống SMSC là node mạng giá trị gia tăng, kết nối với hệ thống tổngđài(MSC, HLR) để phục vụ việc gửi các bản tin nhắn ngắn giữa khách hàng với khách hàng hoặc giữa khách hàng với các tổng đài cung cấp dịch vụ (tải nhạc chuông, dự đoán kết quả giải thưởng bằng đầu số 998..).

Hệ thống SMSC có chức năng lưu trữ, chuyển tiếp tin nhắn trong các tổng đài nội mạng hoặc tổng đài ngoài mạng.

Hệ thống SMSC phải đảm bảo những chức năng quản lý, báo cáo, đối soát, ghi cước tin nhắn.

Hệ thống tổng đài IN Hệ thống mạng thông minh IN gồm các node sau:

Node mạng SCP: Có chức năng điều khiển kết nối dịch vụ. Khi thuê bao IN yêu cầu thiết lập cuộc gọi, tổng đài VMSC, GMSC gửi yêu cầu kết nối cuộc gọi đến SCP. SCP kiểm tra điều kiện thuê bao có được phép cung cấp dịch vụ hay không ( như còn đủ tải khoản hay không, thời hạn gọi còn không, thuê bao Homephone có nằm trong vùng phục vụ hay không..)

Node mạng SDP: Có chức năng lưu trữ, quản lý thông tin thuê bao: số tiền có trong tài khoản, thời hạn tài khoản, trạng thái thuê bao.

Node mạng SMP: Có chức năng kết nối với các thành phần ngoại vi: Billing, OCS, SMSC, CRBT để cung cấp giao diện kết nối với thuê bao nằm trên hệ thống( trừ tiền, đấu mới thuê bao, thay đổi thông tin thuê bao.)

Page 22: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 9

Chương 1. Tổng quát về mạng thông tin di động GSM

Node mạng Server thẻ cào(VC): Có chức năng quản lý các thẻ cào, nhận thực cập nhật thông tin mệnh giá, trạng thái thẻ khi khách hàng nạp thẻ.

Hệ thống nhạc chuông chờ CRBT Hệ thống nhạc chuông chờ có chức năng cung cấp bản nhạc chờ thay cho âm thoại "tut tut""khi thuê bao A gọi tới thuê bao B(Thuê bao đăng ký dịch vụ nhạc chuông chờ). Khách hàng đăng ký dịch vụ nhạc chuông chờ được cung cấp 1 account để có thể truy nhập trang portal I-muzik và nghe thử nhạc chuông cũng như tải bài hát vào thư viện. Ngoài trang portal, khách hàng có thể sử dụng SMS, IVR để tìm kiếm, nghe thử và load bài hát vào thư viện. Hệ thống CRBT gồm có hai node mạng quan trọng sau: Node Managerment (Quản lý portal, CSDL nhạc chờ). Node mạng Call node: Kết nối trực tiếp với tổng đài MSC, có chức năng play bản nhạc.

Hệ thống nhạc nền BGM Hệ thống BGM có chức năng play bản nhạc trong khi khách hàng đang đàm thoại

Hệ thống tổng đài SGSN và GGSN Hệ thống tổng đài SGSN , GGSN có chức năng cung cấp dịch vụ data GPRS cho thuê bao. SGSN có giao diện kết nối trực tiếp với tổng đài BSC còn GGSN không có giao diện này.

Hệ thống báo cuộc gọi nhỡ MCA Hệ thống MCA có chức năng thông báo các cuộc gọi tới máy đăng ký sử dụng dịch vụ MCA(khi thuê bao tắt máy hoặc ngoài vùng phủ sóng).

1.2 TỔNG QUÁT VỀ TIN NHẮN SMS

1.2.1 Giới thiệu SMS SMS là từ viết tắt của Short Message Service. Đó là một công nghệ cho phép gửi và nhận các tín nhắn giữa các điện thoại với nhau. SMS xuất hiện đầu tiên ở Châu âu vào năm 1992. Ở thời điểm đó, nó bao gồm cả các chuẩn về GSM (Global System for Mobile Communications). Một thời gian sau đó, nó phát triển sang công nghệ wireless như CDMA và TDMA. Các chuẩn GSM và SMS có nguồn gốc phát triển bởi ETSI. ETSI là chữ viết tắt của European Telecommunications Standards Institute. Ngày nay thì 3GPP (Third Generation Partnership Project) đang giữ vai trò kiểm soát về sự phát triển và duy trì các chuẩn GSM và SMS. Như đã nói ở trên về tên đầy đủ của SMS là Short Message Service, từ cụm từ đó, có thể thấy được là dữ liệu có thể được lưu giữ bởi một tin nhắn SMS là rất giới hạn. Một tin nhắn SMS có thể chứa tối đa là 140 byte (1120 bit) dữ liệu. Vì vậy, một tin nhắn SMS chỉ có thể chứa : + 160 kí tự nếu như mã hóa kí tự 7 bit được sử dụng (mã hóa kí tự 7 bit thì phù hợp với mã hóa các lí tự latin chẳng hạn như các lí tự alphabet của tiếng Anh).

Page 23: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 10

Chương 1. Tổng quát về mạng thông tin di động GSM

+70 kí tự nếu như mã hóa kí tự 16 bit Unicode UCS2 được sử dụng (các tin nhắn SMS không chứa các kí tự latin như kí tự chữ Trung Quốc phải sử dụng mã hóa kí tự 16 bit).

Tin nhắn SMS dạng text hỗ trợ nhiều ngôn ngữ khác nhau. Nó có thể hoạt động tốt với nhiều ngôn ngữ mà có hỗ trợ mã Unicode, bao gồm cả Arabic, Trung Quốc, Nhật bản và Hàn Quốc.Bên cạnh gữi tin nhắn dạng text thì tin nhắn SMS còn có thể mang các dữ liệu dạng binary. Nó còn cho phép gửi nhạc chuông, hình ảnh cùng nhiều tiện ích khác … tới một điện thoại khác.

Một trong những ưu điểm nổi trội của SMS đó là nó được hỗ trợ bởi các điện thoại có sử dụng GSM hoàn toàn. Hầu hết tất cả các tiện ích cộng thêm gồm cả dịch vụ gửi tin nhắn giá rẻ được cung cấp, sử dụng thông qua sóng mang wireless. Không giống như SMS, các công nghệ mobile như WAP và mobile Java thì không được hỗ trợ trên nhiều model điện thoại.

Sử dụng tin nhắn SMS ngày càng phát triển và trở lên rộng khắp: -Các tin nhắn SMS có thể được gửi và đọc tại bất kỳ thời điểm nào. Ngày nay, hầu hết mọi người đều có điện thoại di động của riêng mình và mang nó theo người hầu như cả ngày. Với một điện thoại di động , bạn có thể gửi và đọc các tin nhắn SMS bất cứ lúc nào bạn muốn, sẽ không gặp khó khăn gì khi bạn đang ở trong văn phòng hay trên xe bus hay ở nhà… -Tin nhắn SMS có thể được gửi tới các điện thoại mà tắt nguồn. Nếu như không chắc cho một cuộc gọi nào đó thì bạn có thể gửi một tin nhắn SMS đến bạn của bạn thậm chí khi người đó tắt nguồn máy điện thoại trong lúc bạn gửi tin nhắn đó. Hệ thống SMS của mạng điện thoại sẽ lưu trữ tin nhắn đó rồi sau đó gửi nó tới người bạn đó khi điện thoại của người bạn này mở nguồn. -Các tin nhắn SMS ít gây phiền phức trong khi bạn vẫn có thể giữ liên lạc với người khác Việc đọc và viết các tin nhắn SMS không gây ra ồn ào. Trong khi đó, bạn phải chạy ra ngoài khỏi rạp hát, thự viện hay một nơi nào đó để thực hiện một cuộc điện thoại hay trả lời một cuộc gọi. Bạn không cần phải làm như vậy nếu như tin nhắn SMS được sử dụng. -Các điện thoại di động và chúng có thể được thay đổi giữa các sóng mang Wireless khác nhau. Tin nhắn SMS là một công nghệ rất thành công và trưởng thành. Tất cả các điện thoại mobile ngày nay đều có hỗ trợ nó. Bạn không chỉ có thể trao đổi các tin nhắn SMS đối với người sử dụng mobile ở cùng một nhà cung cấp dịch vụ mạng sóng mang wireless, mà đồng thời bạn cũng có thể trao đổi nó với người sử dụng khác ở các nhà cung cấp dịch vụ khác. SMS là một công nghệ phù hợp với các ứng dụng Wireless sử dụng cùng với nó. Nói như vậy là do: +Thứ nhất, tin nhắn SMS được hỗ trợ 100% bởi các điện thoại có sử dụng công nghệ GSM. Xây dựng các ứng dụng wireless trên nền công nghệ SMS có thể phát huy tối đa những ứng dụng có thể dành cho người sử dụng. +Thứ hai, các tin nhắn SMS còn tương thích với việc mang các dữ liệu binary bên cạnh gửi các text. Nó có thể được sử dụng để gửi nhạc chuông, hình ảnh, hoạt họa… +Thứ ba, tin nhắn SMS hỗ trợ việc chi trả các dịch vụ trực tuyến.

Page 24: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 11

Chương 1. Tổng quát về mạng thông tin di động GSM

1.2.2 Cấu trúc một tin nhắn SMS Nội dung của một tin nhắn SMS khi được gửi đi sẽ được chia làm 5 phần như

sau :

Instructions to air interface: Chỉ thị dữ liệu kết nối với air interface (giao diện không khí) .

Instructions to SMSC: Chỉ thị dữ liệu kết nối với trung tâm tin nhắn SMSC (short message service centre).

Instructions to handset: Chỉ thị dữ liệu kết nối bắt tay. Instructions to SIM (optional): Chỉ thị dữ liệu kết nối, nhận biết SIM

(Subscriber Identity Modules). Message body: Nội dung tin nhắn SMS.

1.2.3 Tin nhắn SMS chuỗi/ Tin nhắn SMS dài Một trong những trở ngại của công nghệ SMS là tin nhắn SMS chỉ có thể mang một lượng giới hạn các dữ liệu. Để khắc phục trở ngại này, một mở rộng của nó gọi là SMS chuỗi (hay SMS dài) đã ra đời. Một tin nhắn SMS dạng text dài có thể chứa nhiều hơn 160 kí tự theo chuẩn dùng trong tiếng Anh. Cơ cấu hoạt động cơ bản SMS chuỗi làm việc như sau: điện thoại di động của người gửi sẽ chia tin nhắn dài ra thành nhiều phần nhỏ và sau đó gửi các phần nhỏ này như một tin nhắn SMS đơn. Khi các tin nhắn SMS này đã được gửi tới đích hoàn toàn thì nó sẽ được kết hợp lại với nhau trên máy di động của người nhận. Khó khăn của SMS chuỗi là nó ít được hỗ trợ nhiều so với SMS ở các thiết bị có sử dụng sóng wireless.

1.2.4 SMS Centre /SMSC Một SMS Center (SMSC) là nơi chịu trách nhiệm luân chuyển các hoạt động liên quan tới SMS của một mạng wireless. Khi một tin nhắn SMS được gửi đi từ một điện thoại di động thì trước tiên nó sẽ được gửi tới một trung tâm SMS. Sau đó, trung tâm SMS này sẽ chuyển tin nhắn này tới đích (người nhận). Một tin nhắn SMS có thể phải đi qua nhiều hơn một thực thể mạng (netwok) (chẳng hạn như SMSC và SMS gateway) trước khi đi tới đích thực sự của nó. Nhiệm vụ duy nhất của một SMSC là luân chuyển các tin nhắn SMS và điều chỉnh quá trình này cho đúng với chu trình của nó. Nếu như máy điện thoại của người nhận không ở trạng thái nhận (bật nguồn) trong lúc gửi thì SMSC sẽ lưu trữ tin nhắn này. Và khi máy điện thoại của người nhận mở nguồn thì nó sẽ gửi tin nhắn này tới người nhận.

Thường thì một SMSC sẽ họat động một cách chuyên dụng để chuyển lưu thông SMS của một mạng wireless. Hệ thống vận hành mạng luôn luôn quản lí SMSC

Page 25: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 12

Chương 1. Tổng quát về mạng thông tin di động GSM

của riêng nó và ví trí của chúng bên trong hệ thống mạng wireless. Tuy nhiên hệ thống vận hành mạng sẽ sử dụng một SMSC thứ ba có vị trí bên ngoài của hệ thống mạng wireless.

Bạn phải biết địa chỉ SMSC của hệ thống vận hành mạng wireless để sử dụng, tinh chỉnh chức năng tin nhắn SMS trên điện thoại của bạn. Điển hình một địa chỉ SMSC là một số điện thoại thông thường ở hình thức, khuôn mẫu quốc tế. Một điện thoại nên có một thực đơn chọn lựa để cấu hình địa chỉ SMSC. Thông thường thì địa chỉ được điều chỉnh lại trong thẻ SIM bởi hệ thống mạng wireless. Điều này có nghĩa là bạn không cần phải làm bất cứ thay đổi nào cả.

1.2.5 Nhắn tin SMS quốc tế Các tin nhắn SMS giữa các nhà điều hành được chia ra làm hai hạng mục gồm tin nhắn SMS giữa các nhà điều hành cục bộ và tin nhắn SMS giữa các nhà điều hành quốc tế với nhau. Tin nhắn SMS giữa các nhà điều hành cục bộ là tin nhắn mà được gửi giữa các nhà điều hành trong cùng một quốc gia còn tin nhắn SMS giữa các nhà điều hành quốc tế là tin nhắn SMS được gửi giữa các nhà điều hành mạng wireless ở những quốc gia khác nhau.

Thường thì chi phí để gửi một tin nhắn SMS quốc tế thì cao hơn so với gửi trong nước. Và chi phí gửi tin nhắn trong nội mạng thì ít hơn so với gửi cho mạng khác trong cùng một quốc gia nhỏ hơn hoặc bằng chi phí cho việc gửi tin nhắn SMS quốc tế.

Khả năng kết hợp của tin nhắn SMS giữa hai mạng wireless cục bộ hay thậm chí là quốc tế là một nhân tố chính góp phần tới sự phát triển mạnh mẽ của hệ thống SMS toàn cầu.

Page 26: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 13

Chương 2. GSM Modem, Tập lệnh AT

CHƯƠNG 2. GSM MODEM, TẬP LỆNH AT

2.1GSM MODEM

2.1.1 Giới thiệu

Hình 2-1 GSM Modem

Một GSM modem là một modem wireless, nó làm việc cùng với một mạng wireless GSM. Một modem wireless thì cũng hoạt động giống như một modem quay số. Điểm khác nhau chính ở đây là modem quay số thì truyền và nhận dữ liệu thông qua một đường dây điện thoại cố định trong khi đó một modem wireless thì gửi và nhận dữ liệu thông qua sóng vô tuyến.

Một modem GSM có thể là một thiết bị mở rộng bên ngoài hay một PC Card/PCMCIA Card. Điển hình đó là một modem GSM rời bên ngoài được kết nối với một máy tính thông qua một cáp nối tiếp hay một cáp USB. Một modem GSM hợp chuẩn với một PC Card/PCMCIA Card được thiết kế cho việc sử dụng với một máy tính laptop. Nó được gắn vào một trong những khe cắm PC Card/PCMCIA Card của một máy tính laptop.

Giống như một điện thoại di động GSM, một modem GSM yêu cầu 1 thẻ SIM với một sóng mang wireless để hoạt động.

Số tin nhắn SMS có thể được thực thi bởi một modem GSM trên một phút thì rất thấp, nó chỉ khoảng từ 6 đến 10 tin nhắn SMS trên 1 phút.

2.1.2WAVECOM Fastrack Supreme 20

Hình 2-2 Wavecom fastrack supreme 20

Page 27: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 14

Chương 2. GSM Modem, Tập lệnh AT

WAVECOM Fastrack Supreme 20 là modem 2 băng tần GSM 900/1800Mhz, được thiết kế cho các ứng dụng dữ liệu, SMS, fax và thoại.Tương thích đầy đủ với các đặc tả của GSM Phase 2+

*Tính năng kỹ thuật Bộ xử lý: ARM946/DSP, 32 bit, 26-104 MHz Bộ nhớ: Internal Flash 64MB và PSRAM 32Mb Hỗ trợSMS định dạng Text, PDU, Point-to-Point (MT/MO) và gửitin nhắn

quảng bá (broadcast), hỗ trợ UCS2, hỗ trợGPRS. Giao diện kết nối theo chuẩn RS-232 Điều khiển từ xa với tập lệnh AT GSM 07.07 và GSM 07.05. Tốc độ truyền qua cổng RS232: 300 đến 115200 bit/s. Điện áp khe cắm SIM 3V-5V SIM Điện áp cung cấp: 5V-32V Dòng điện vào: Idle <10mA Nhiệt độ làm việc: -300C đến 750C Kích thước: 98×54×25 mm Trọnglượng: 130g

*Ứng dụng Gửi SMS đến người dùng các chương trình khuyến mãi, quảng cáo về một loại

sản phẩm và dịch vụ Khách hàng dùng ĐTDĐ dò mã trúng thưởng trên sản phẩm mới Dùng SMS bình chọn sản phẩm, thăm dò ý kiến khách hàng để cho ra một loại

sản phẩm mới, Chi phí tìm hiểu thị trường thấp Đại lý có thể gửi một tin nhắn để kiểm tra lượng hàng tồn trong kho (Tại kho

công ty) và thực hiện việc đặt hàng thông qua SMS Đối với nội bộ: Thông báo họp khẩn cấp bằng SMS với nội dung ngắn gọn về

giờ, địa điểm cuộc họp tỏ ra rất hiệu quả và giảm chi phí Tự động kiểm tra sự cố và gửi tin SMS kịp thời bằng SMS tới các nhân sự liên

quan là điểm mạnh của hệ thống chất lượng hiện nay *Một số hình ảnh

Hình 2-3 Nguồn cung cấp

Page 28: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 15

Chương 2. GSM Modem, Tập lệnh AT

Hình 2-4 Cổng COM

Hình 2-5 Khe gắn SIM

Hình 2-6 Vị trí gắn Antenna

*Kiểm tra kết nối Nối cáp RS232 giữa Fastrack Supreme với cổng COM máy tính Thiết lập các thông số cho cổng COM:

Bits per second: 115.200 bps,

Page 29: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 16

Chương 2. GSM Modem, Tập lệnh AT

Data bits: 8, Parity: None, Stop bits: 1, Flow control: hardware.

Sử dụng HyperTerminal để thực hiện lệnh: Gõ lệnh AT rồi nhấn Enter,kết quả là OK thì kết nối đã thành công Nếu kết nối chưa thành công thì cần kiểm tra lại:

Kiểm tra kết nối giữa FASTRACK Supreme và máy vi tính Kiểm tra cấu hình cổng COM của máy tính

Ví dụ một số lệnh AT AT+CGMI: kết quả là: "WAVECOM MODEM" AT+CPIN=xxxx: to enter a PIN code xxxx (if activated). AT+CREG?: to verify the registration of the FASTRACK Supreme Plug &

Play onthe network. ATD<phone number>;: thực hiện cuộc gọi ATH: kết thúc cuộc gọi

Xem thêm về tập lệnh AT ở cuốn sách "AT Commands Interface Guide" [6]

2.2TẬP LỆNH AT DÙNG CHO SMS

2.2.1 Giới thiệu Các lệnh AT là các hướng dẫn được sử dụng để điều khiển một modem. AT là một cách viết gọn của chữ Attention. Mỗi dòng lệnh của nó bắt đầu với “AT” hay “at” Đó là lí do tại sao các lệnh Modem được gọi là các lệnh AT. Nhiều lệnh của nó được sử dụng để điều khiển các modem quay số sử dụng dây nối (wired dial-up modems), chẳng hạn như ATD (Dial), ATA (Answer), ATH (Hool control) và ATO (return to online data state), cũng được hỗ trợ bởi các modem GSM/GPRS và các điện thoại di động.

Bên cạch bộ lệnh AT thông dụng này, các modem GSM/GPRS và các điện thoại di động còn được hỗ trợ bởi một bộ lệnh AT đặc biệt đối với công nghệ GSM. Nó bao gồm các lệnh liên quan tới SMS như AT+ CMGS (gửi tin nhắn SMS), AT+CMSS (gửi tin nhắn SMS từ một vùng lư trữ), AT+CMGL (chuỗi liệt kê các tin nhắn SMS) và AT+CMGR (đọc tin nhắn SMS)

Chú ý là khởi động “AT” là một tiền tố để thông báo tới modem về sự bắt đầu của một dòng lệnh. Nó không phải là một phần của tên lệnh AT. Ví dụ như D là một tên lệnh AT thực tế trong ATD và +CMGS là tên một lệnh AT thực tế trong AT+CMGS. Tuy nhiên, một số sách hay một số trang web lại sử dụng chúng thay cho nhau như là tên của một lệnh AT.

Sau đây là một vài nhiệm vụ có thể được hoàn thành bằng cách sử dụng các lệnh AT kết hợp với sử dụng 1 modem GSM/GPRS hay một điện thoại di động:

-Lấy thông tin cơ bản về điện thoại di động hay modem GSM/GPRS. Ví dụ như tên của nhà sản xuất (AT+CGMI), số model (AT+CGMM), số IMEI (International Mobile Equipment Identity) (AT+CGSN) và phiên bản phần mềm (AT+CGMR).

Page 30: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 17

Chương 2. GSM Modem, Tập lệnh AT

-Lấy các thông tin cơ bản về những người kí tên dưới đây. Thí dụ, MSISDN (AT+CNUM) và số IMS (International Mobile Subscriber Identity) (AT+CIMI). -Lấy thông tin trạng thái hiện tại của điện thoại di động hay modem GSM/GPRS. Ví dụ như trạng thái hoạt động của điện thoại (AT+CPAS), trạng thái đăng kí mạng mobile (AT+CREG), chiều dài sóng radio (AT+CSQ), mức sạc bin và trạng thái sạc bin (AT+CBC). -Thiết lập một kết nối dữ liệu hay kết nối voice tới một remote điều khiển (ATD, ATA,..) -Gửi và nhận fax (ATD, ATA,AT+F*) -Gửi (AT+CMGS, AT+CMSS), đọc (AT+CMGR, AT+CMGL), viết (AT+CMGW) hay xóa tin nhắn SMS (AT+CMGD) và nhận các thông báo của các tin nhắn SMS nhận được mới nhất (AT+CNMI). -Đọc (AT+CPBR), viết (AT+CPBW) hay tìm kiếm (AT+CPBF) cá mục về danh bạ điện thoại (phonebook). -Thực thi các nhiệm vụ liên quan tới an toàn, chẳng hạn như mở hay đóng các khóa chức năng (AT+CLCK), kiểm tra xem một chức năng được khóa hay chưa (AT+CLCK) và thay đổi password (AT+CPWD). (Các ví dụ về khóa chức năng: khóa SIM [một password phải được cho vào thẻ SIM mỗi khi điện thoại được mở] và khóa PH-SIM [một thể SIM nào đó có liên kết tới điện thoại, và để sử dụng được các thẻ SIM khác thì buộc phải đăng nhập một password vào trong nó].) -Điều khiển hoạt động của các mã kết quả/các thông báo lỗi của các lệnh AT. Ví dụ, bạn có thể điều khiển cho phép hay không cho phép kích hoạt hiển thị thông báo lỗi (AT+CMEE) và các thông báo lỗi nên được hiển thị theo dạng số hay theo dạng dòng chữ (AT+CMEE=1 hay AT+CMEE=2). -Thiết lập hay thay đổi cấu hình của điện thoại di dộng hay modem GSM/GPRS. Ví dụ, thay đổi mạng GSM (AT+COPS), loại dịch vụ của bộ truyền tin (AT+CBST), các thông số protocol liên kết với radio (AT+CRLP), địa chỉ trung tâm SMS (AT+CSCA) và khu vực lưu trữ các tin nhắn SMS (AT+CPMS). -Lưu và phục hồi các cấu hình của điện thoại di động hay modem GSM/GPRS. Ví du, lưu (AT+COPS) và phục hồi (AT+CRES) các thiết lập liên quan tới tin nhắn SMS chẳng hạn như địa chỉ trung tâm tin nhắn SMS. Các modem GSM/GPRS được thiết kế dành cho các ứng dụng wireless mà có được các hỗ trợ tốt về các lệnh AT hơn là các điện thoại di động thông thừơng khác. Thêm vào đó, một vài lệnh AT yêu cầu sự hỗ trợ từ các tổng đài của mạng di động.Ví dụ, SMS thông qua GPRS có thể được kích hoạt trên các điện thoại di động có sử dụng GPRS và các modem GPRS với lệnh +CGSMS (tên lệnh ở dạng text: Select Service for MO SMS Messages). Nhưng nếu tổng đài mạng điện thoại không hỗ trợ quá trình truyền dẫn SMS thông qua GPRS, thì bạn không thể sử dụng chức năng này được.

2.2.2 Tập lệnh AT dùng cho dịch vụ cuộc gọi và SMS Tập lệnh AT trong các thao tác dùng cho dịch vụ cuộc gọi và SMS (Short Message Service), bao gồm:

Page 31: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 18

Chương 2. GSM Modem, Tập lệnh AT

-Khởi tạo. -Nhận cuộc gọi. -Thiết lập cuộc gọi. -Nhận tin nhắn. -Gửi tin nhắn. -Xóa tin nhắn.

a) Các thuật ngữ <CR>: Carriage Return (0x0D) <LF>: Line Feed (0x0A). MT (Mobile Terminal): Thiết bị đầu cuối mạng (Modem GSM) TE (Terminal Equipment): Thiết bị đầu cuối (máy tinh, hệ vi điều khiển).

b) Khởi tạo

(1) ATZ<CR> Reset modem, kiểm tra modem dã hoạt động bình thường chưa. Gửi nhiều lần cho chắc ăn, cho đến khi nhận được chuỗi ATZ<CR><CR><LF>OK<CR><LF>

(2) ATE0<CR> Tắt chế độ echo lệnh. Chuỗi trả về có dạng ATE0<CR><CR><LF>OK<CR><LF>

(3) AT+CLIP=1<CR> Định dạng chuỗi trả về khi nhận cuộc gọi Thông thường, ở chế độ mặc định, khi có cuộc gọi đến, chuỗi trả về sẽ có dạng: <CR><LF>RING<CR><LF> Sau khi lệnh AT+CLIP=1<CR> đã được thực thi, chuỗi trả về sẽ có dạng: <CR><LF>RING<CR><LF> <CR><LF>+CLIP: "0929047589",129,"",,"",0<CR><LF>

Page 32: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 19

Chương 2. GSM Modem, Tập lệnh AT

Chuỗi trả về có chứa thông tin về số điện thoại gọi đến. Thông tin này cho phép xácđịnh việc có nên nhận cuộc gọi hay từ chối cuộc gọi Kết thúc các thao tác khởi tạo cho quá trình nhận cuộc gọi. Các bước khởi tạo tiếp theo liên quan đến các thao tác truyền nhận tin nhắn.

(4) AT&W<CR> Lưu cấu hình cài đặt được thiết lập bởi các lệnh ATE0 và AT+CLIP vào bộ nhớ

(5) AT+CMGF=1<CR> Thiết lập quá trình truyền nhận tin nhắn được thực hiện ở chế độ text (mặc định là ở chế độ PDU) Chuỗi trả về sẽ có dạng: <CR><LF>OK<CR><LF>

(6) AT+CNMI=2,0,0,0,0<CR> Thiết lập chế độ thông báo cho TE khi MT nhận được tin nhắn mới Chuỗi trả về sẽ có dạng: <CR><LF>OK<CR><LF> Sau khi lệnh trên được thiết lập, tin nhắn mới nhận được sẽ được lưu trong. MT không truyền trở về TE bất cứ thông báo nào. TE sẽ đọc tin nhắn được lưu SIM trong trường hợp cần thiết.

(7) AT+CSAS<CR> Lưu cấu hình cài đặt được thiết lập bởi các lệnh AT+CMGF và AT+CNMI

c) Thực hiện cuộc gọi

Page 33: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 20

Chương 2. GSM Modem, Tập lệnh AT

(1) ATDxxxxxxxxxx;<CR> Quay số cần gọi.

(2) Chuỗi trả về có dạng: <CR><LF>OK<CR><LF>. Chuỗi này thông báo lệnh trên đã được nhận và đang được thực thi. Sau đó là những chuỗi thông báo kết quả quá trình kết nối (nếu như kết nối không được thực hiện thành công).

(2A) Nếu MT không thực hiện được kết nối do sóng yếu, hoặc không có sóng (thử bằng cách tháo antenna của modem GSM), chuỗi trả về sẽ có dạng: <CR><LF>NO DIAL TONE<CR><LF>

(2B) Nếu cuộc gọi bị từ chối bởi người nhận cuộc gọi, hoặc số máy đang gọi tạm thời không hoạt động (chẳng hạn như bị tắt máy) chuỗi trả về có dạng: <CR><LF>NO CARRIER<CR><LF>

(2C) Nếu cuộc gọi không thể thiết lập được do máy nhận cuộc gọi đang bận (ví dụ như đang thông thoại với một thuê bao khác), chuỗi trả về sẽ có dạng: <CR><LF>BUSY<CR><LF> (4s) Tổng thời gian từ lúc modem nhận lệnh cho đến lúc nhận được chuỗi trên thông thường là 4 giây.

(2D) Nếu sau 1 phút mà thuê bao nhận cuộc gọi không bắt máy, chuỗi trả về sẽ có dạng: <CR><LF>NO ANSWER<CR><LF> (60s)

(3)Trong trường hợp quá trình thiết lập cuộc gọi diễn ra bình thường, không có chuỗi thông báo nào (2A, 2B, 2C hay 2D) được trả về, và chuyển sang giai đoạn thông thoại. Quá trình kết thúc cuộc gọi được diễn ra trong hai trường hợp:

(4A) Đầu nhận cuộc gọi gác máy trước: chuỗi trả về sẽ có dạng: <CR><LF>NO CARRIER<CR><LF>

(4B) Đầu thiết lập cuộc gọi gác máy trước: phải tiến hành gửi lệnh ATH, và chuỗi trả về sẽ có dạng: <CR><LF>OK<CR><LF>

d) Nhận cuộc gọi

Page 34: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 21

Chương 2. GSM Modem, Tập lệnh AT

(1)Sau khi được khởi tạo bằng lệnh AT+CLIP=1, khi có cuộc gọi đến, chuỗi trả về sẽ có dạng: <CR><LF>RING<CR><LF> <CR><LF>+CLIP: "0929047589",129,"",,"",0<CR><LF> Chuỗi trả về có hiển thị số điện thoại yêu cầu được kết nối, dựa trên thông tin này để có thể ra quyết định nhận cuộc gọi hay từ chối cuộc gọi.

(2A) Nếu số điện thoại gọi đến không hợp lệ, từ chối nhận cuộc gọi bằng lệnh ATH, và chuỗi trả về sẽ có dạng: <CR><LF>OK<CR><LF> Cuộc gọi kết thúc.

(2B) Nếu số điện thoại gọi đến là hợp lệ, nhận cuộc gọi bằng cách gửi lệnh ATA,và chuỗi trả về sẽ có dạng: <CR><LF>OK<CR><LF>

(3) Giai đoạn thông thoại.

(4A) Kết thúc cuộc gọi. Đầu còn lại gác máy trước.

(4B) Kết thúc cuộc gọi, chủ động gác máy bằng cách gửi lệnh ATH.

e) Nhận tin nhắn

Page 35: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 22

Chương 2. GSM Modem, Tập lệnh AT

Mọi thao tác liên quan đến quá trình nhận tin nhắn đều được thực hiện trên 2 ngăn 1 và 2 của bộ nhớ nằm trong SIM.

(1) Đọc tin nhắn trong ngăn 1 bằng lệnh AT+CMGR=1

(2A) Nếu ngăn 1 không chứa tin nhắn, chỉ có chuỗi sau được trả về: <CR><LF>OK<CR><LF>

(2B) Nếu ngăn 1 có chứa tin nhắn, nội dung tin nhắn sẽ được gửi trả về TE với định dạng như sau: <CR><LF>+CMGR: "REC UNREAD","+84929047589",,"07/05/15,09:32:05+28" <CR><LF>NỘI DUNG<CR><LF> <CR><LF>OK<CR><LF> Các tham số trong chuỗi trả về bao gồm trạng thái của tin nhắn (REC UNREAD), số điện thoại gửi tin nhắn (+84929047589) và thời gian gửi tin nhắn (07/05/15,09:32:05+28) và nội dung tin nhắn.

(3)Sau khi đọc, tin nhắn được xóa đi bằng lệnh AT+CMGD=1. Thao tác tương tự đối với tin nhắn chứa trong ngắn thứ 2 trong các bước 4, 5A (5B) và 6.

f) Gửi tin nhắn *Gửi tin nhắn với nội dung nhập từ bàn phím

Page 36: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 23

Chương 2. GSM Modem, Tập lệnh AT

(1) Gửi tin nhắn đến thuê bao bằng cách sử dụng lệnh AT+CMGS=”số điện thoại”

(2) Nếu lệnh (1) được thực hiện thành công, chuỗi trả về sẽ có dạng: <CR><LF>>(kí tự “>” và 1 khoảng trắng).

(3)Nhập nội dung tin nhắn

(3A) Gửi kí tự ESC (mã ASCII là 27) khi muốn kết thúc nội dung tin nhắn tục.

(3B) Khi đó TE sẽ gửi trả về chuỗi <CR><LF>OK<CR><LF>.

(4) Chuỗi trả về thông báo kết quả quá trình gửi tin nhắn. Chuỗi trả về có định dạng như sau: <CR><LF>+CMGS: 62<CR><LF> <CR><LF>OK<CR><LF> Trong đó 62 là một số tham chiếu cho tin nhắn đã được gửi. Sau mỗi tin nhắn được gửi đi, giá trị của số tham chiếu này sẽ tăng lên 1 đơn vị. Số tham chiếu này có giả trị nằm trong khoảng từ 0 đến 255. Thời gian gửi một tin nhắn vào khoảng 3-4 giây (kiểm tra với mạng Mobi phone).

(4A)Nếu tình trạng sóng không cho phép thực hiện việc gửi tin nhắn (thử bằng cách tháoantenna), hoặc chức năng RF của modem không được cho phép hoạt động (do sử dụng các lệnh AT+CFUN=0 hoặc AT+CFUN=4), hoặc số tin nhắn trong hàng đợi phía tổng đàvượt qua giới hạn cho phép, hoặc bộ nhớ chứa tin nhắn của MT nhận được tin nhắn bị tràn, MT sẽ gửi thông báo lỗi trở về và có định dạng như sau: <CR><LF>+CMS ERROR: 193<CR><LF> <CR><LF>+CMS ERROR: 515<CR><LF>

*Gửi tin nhắn lưu sẵn trong bộ nhớ SIM Trước đó ta phải ghi tin nhắn vào bộ nhớ SIM

Page 37: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 24

Chương 2. GSM Modem, Tập lệnh AT

Đầu tiên bạn phải sử dụng lệnh AT+CMGW (tên lệnh ở dạng text: Write Message to Memory) để viết text tin nhắn tới khu vực lưu trữ tin nhắn. Trong chế độ SMS text thì dòng lệnh sẽ như sau:

AT+CMGW=""<CR>Nội dung tin nhắn<Ctrl+z>

Sau khi gõ lệnh trên Modem sẽ trả về vị trí lưu tin nhắn

Bạn có thể sử dụng lệnh AT +CMSS để gửi tin nhắn đến trung tâm tin nhắn bằng dòng lệnh sau:

(1) Gửi tin nhắn chứa trong bộ nhớ của modem. Cú pháp:AT+CMSS=Y,+84xxxxxxxxx<CR> Với: Y là vị trí lưu tin nhắn trong bộ nhớ, Y trong khoảng từ 1 đến 35

+84xxxxxxxxx là số điện thoại người nhận

(2)Chuỗi trả về thông báo kết quả quá trình gửi tin nhắn <CR><LF>+CMSS: 100<CR><LF><CR><LF>OK<CR><LF> Chức năng truyền nhận tin nhắn và chức năng thoại được tách biệt. Khi đang thông thoại vẫn có thể truyền nhận được tin nhắn. Khi truyền nhận tin nhắn vẫn có thể tiến hành thiết lập và kết thúc cuộc gọi.

Page 38: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 25

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

CHƯƠNG 3. VI ĐIỀU KHIỂN AT89S52 VÀ LCD HD44780

3.1 VI ĐIỀU KHIỂN AT89S52

3.1.1 Giới thiệu *Đặc điểm, cấu tạo

4 Kbyte FlashROM (8951), 8 Kbyte FlashRom (8952) 128 byte RAM nội 4 port I/0 8 bit Bộ định thời 16 bit Giao tiếp nối tiếp Giao tiếp 64KB bộ nhớ chương trình mở rộng Giao tiếp 64KB bộ nhớ dữ liệu mở rộng 210 ô nhớ bit có thể truy xuất từng bit Có lệnh xử lý bit Có timer, counter, ngắt

*Chức năng của các chân AT89S52

Hình 3-1 Sơ đồ chân AT89S52

- Port 0 (chân 32 – 39): Port 0 có 2 chức năng: Nếu không sử dụng bộ nhớ ngoài Port0 là I/O

AT89C51

91819 29

30

31

12345678

2122232425262728

1011121314151617

3938373635343332

RSTXTAL2XTAL1 PSEN

ALE/PROG

EA/VPP

P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7

P2.0/A8P2.1/A9

P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

P3.0/RXDP3.1/TXD

P3.2/INTOP3.3/INT1

P3.4/TOP3.5/T1

P3.6/WRP3.7/RD

P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

Page 39: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 26

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Nếu sử dụng bộ nhớ ngoài Port0 là AD0 – AD7

- Port 1 (chân 1 -8): Là đường xuất nhập I/O.

- Port 2 (chân 21 - 28): Port 2 là port có 2 chức năng: Nếu không sử dụng bộ nhớ ngoài Port2 là I/O Nếu sử dụng bộ nhớ ngoài Port2 là AD8 – AD15

- Port 3 (chân 10 - 17): Các chân của port này có nhiều chức năng:

Bảng 3-1Chức năng các chân port 3 Bit Tên Chức năng

P3.0 RXT Ngõ vào dữ liệu nối tiếp.

P3.1 TXD Ngõ ra dữ liệu nối tiếp.

P3.2 INT0\ Ngõ vào ngắt cứng thứ 0.

P3.3 INT1\ Ngõ vào ngắt cứng thứ 1.

P3.4 T0 Ngõ vào của TIMER/COUNTER0.

P3.5 T1 Ngõ vào của TIMER/COUNTER1.

P3.6 WR\ Tín hiệu ghi dữ liệu liệu bộ nhớ ngoài.

P3.7 RD\ Tín hiệu đọc bộ nhớ dữ liệu ngoài.

- PSEN\ (chân 29): Program StoreEenable Cho phép đọc bộ nhớ chương trình mở rộng. PSEN nối với OE\ hoặc RD\ của EEPROM để điều khiển đọc mã lệnh. Khi giao tiếp bộ nhớ chương trình bên ngoài thì dùng PSEN, nếu không thì chân PSEN để nổi.

- ALE (chân 30): Address Latch Enable Tín hiệu ALE sẽ điều khiển mạch giải đa hợp để tách địa chỉ và dữ liệu ở Port0. Ngõ ra ALE xuất ra xung khi ngõ ra Port0 là địa chỉ. Địa chỉ tự động chốt vào IC chốt. Xung ALE có tần số = 1/6 tần số thạch anh. ALE có thể làm xung clock cho các IC ngoại vi khác. ALE nhận xung lập trình từ bên ngoài khi ghi dữ liệu cho FlashRom.

- EA\ (chân 31): External Access Tín hiệu vào EA\ ở chân 31 thường được mắc lên Vcc hoặc GND. Nếu là Vcc thì AT89S52 thi hành chương trình từ ROM nội. Nếu là GND thì AT89S52 thi hành

Page 40: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 27

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

chương trình từ bộ nhớ mở rộng. Chân EA\ được lấy làm chân cấp nguồn 12V khi lập trình cho EPROM trong AT89S52.

- RST (chân 9) : Reset Tín hiệu RST phải ở mức cao ít nhất 2 chu kỳ máy. Khi Reset, các thanh ghi bên trong được nạp các giá trị mặc định .

- Các ngõ vào bộ dao động X1, X2 ( chân 18&19): Bộ tạo dao động được tích hợp bên trong AT89S52. Khi sử dụng1, ta chỉ cần nối thêm thạch anh và các tụ. Tần số thạch anh 0 - 24MHz. Hoặc dùng bộ dao động bên ngoài đưa vào chân X1.

3.1.2 Tổ chức bộ nhớ của AT89S52

Hình 3-2 Tổ chức bộ nhớ AT89S52

AT8951 được xây dựng theo cấu trúc Harvard, nghĩa là bộ nhớ chương trình và bộ nhớ dữ liệu nằm tách rời nhau.

Khảo sát bộ nhớ 8951 Bộ nhớ mở rộng và bộ nhớ chương trình bên trong không có gì đặc biệt, chỉ có chức năng lưu trữ dữ liệu và chương trình.

Bộ nhớ RAM nội:Là bộ nhớ đặc biệt, có 256 byte và được phân chia: Các bank thanh ghi (00H – 1FH). RAM truy xuất từng bit (20H – 2FH). RAM đa dụng (30H – 7FH). Các thanh ghi đặc biệt (80H - FFH)

Page 41: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 28

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Hình 3-3 Bộ nhớ

Các bank thanh ghi 00H – 1FH: Nằm ở 32 byte thấp địa chỉ từ 00H-1FH. AT8951 có 8 thanh ghi đặc biệt có tên R0-R7 Khi Reset R0-R7 được gán cho 8 ô nhớ có địa chỉ 00H-07H. Tổ chức 4 bank thanh ghi:

Bank 0: 00H – 07H. Bank 1: 08H – 0FH. Bank 2: 10H – 17H. Bank 3: 18H - 1FH.

RAMđa dụng

7F 7E 7D 7C 7B 7A 79 78 77 76 75 74 73 72 71 70 6F 6E 6D 6C 6B 6A 69 68 67 66 65 64 63 62 61 60 5F 5E 5D 5C 5B 5A 59 58 57 56 55 54 53 52 51 50 4F 4E 4D 4C 4B 4A 49 48 47 46 45 44 43 42 41 40 3F 3E 3D 3C 3B 3A 39 38 37 36 35 34 33 32 31 30 2F 2E 2D 2C 2B 2A 29 28 27 26 25 24 23 22 21 20 1F 1E 1D 1C 1B 1A 19 18 17 16 15 14 13 12 11 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00

Bank3

Bank2

Bank1

Bank 0

F7 F6 F5 F4 F3 F2 F1 F0

E7 E6 E5 E4 E3 E2 E1 E0

D7 D6 D5 D4 D3 D2 D1 D0

- - - BC BB BA B9 B8 B7 B6 B5 B4 B3 B2 B1 B0 AF AC AB AA A9 A8

A7 A6 A5 A4 A3 A2 A1 A0 9F 9E 9D 9C 9B 9A 99 98

97 96 95 94 93 92 91 90

8F 8E 8D 8C 8B 8A 89 88

87 86 85 84 83 82 81 80

00

1F

20

2A

2F 30

7F

89

90

98

A0

A8

B0

B8

D0

E0

F0 FF

99

8A 8B 8C 8D

B

ACC

PSW

IP

P3

IE

P2

SCON SBUF

P1

TH1 TH0 TL1 TL0 TMOD TCON

Page 42: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 29

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Vùng nhớ RAM truy xuất từng bit: Có 210 ô nhớ bit có thể truy xuất từng bit. Có 128 bit nằm ở ô nhớ byte có địa chỉ từ 20H – 2FH, và có thể truy xuất từng bit hoặc từng byte.

Vùng RAM đa dụng: Có 80 byte nằm ở địa chỉ 30H – 7FH. Vùng nhớ các bank thanh ghi cũng là vùng nhớ RAM đa dụng.

Các thanh ghi đặc biệt: AT8951 có 21 thanh ghi đặc biệt nằm địa chỉ 80H – FFH

-Các Port: +Có 4 Port là Port0, Port1, Port2 và Port3. +Các Port có thể truy xuất từng bit.

-Thanh ghi SP: +Là thanh ghi con trỏ ngăn xếp. +Quản lý bộ nhớ ngăn xếp. +Lệnh cất dữ liệu làm tăng địa chỉ SP trước khi cất. +Lệnh lấy dữ liệu thì ngược lại, lấy dữ liệu rối mới giảm SP. +Khi Reset thì địa chỉ SP=07H.

-Thanh ghi con trỏ dữ liệu DPTR: +Thanh ghi DPL (byte thấp) có địa chỉ 82H. +Thanh ghi DPH (byte cao) có địa chỉ 83H. +Kết hợp lại ta có DPTR=DPH+DPL là thanh ghi 16 bit. +Có thể sử dụng độc lập DPL, DPH như thanh ghi 8bit, hoặc kết hợp thành thanh ghi 16bit là DPTR.

-Thanh ghi PCON:Thanh ghi điều khiển công suất của VĐK. -Thanh ghi Timer/Counter:

+Bao gồm các thanh ghi TCON, TMOD, TH0, TL0, TH1 và TL1. +Chỉ có thanh ghi TCON mới có thể truy xuất từng bit. +Hai thanh ghi phục vụ cho Timer/Counter:TCON (Timer Control), TMOD (Timer Mode). +Thanh ghi lưu trữ giá trị đếm:TH0 và TL0 kết hợp thành thanh ghi 16 bit lưu trữ xung đếm cho Timer/Counter0, TH1 và TL1 kết hợp thành thanh ghi 16 bit lưu trữ xung đếm cho Timer/Counter1.

-Thanh ghi SCON, SBUF: SCON (Series Control): điều khiển truyền dữ liệu nối tiếp. SBUF (Series Buffer): thanh gi đệm dữ liệu nối tiếp.

-Thanh ghi IE, IP: IE (Interrup Enable): điều khiển cho phép/ không cho phép ngắt. IP (Interrup Prierity): điều khiển ưu tiên ngắt.

-Thanh ghi PSW:PSW (Program Status Word): thanh ghi trạng thái. -Thanh ghi ACC -Thanh ghi B: ở địa chỉ F0H được dùng cùng với thanh ghi A cho các phép toán nhân và chia. Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A và B rồi trả về kết quả 16 bit trong A (byte thấp) và B (byte cao). Lệnh DIV AB sẽ chia A cho B rồi trả về kết quả nguyên trong A và phần dư trong B.

Page 43: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 30

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

3.1.3 Timer AT89S52 có 3 bộ Timer 16 bit, mỗi Timer có 4 mode hoạt động, riêng timer 2 chỉ có 3 mode hoạt động. Các Timer dùng để đếm giờ, đếm các sự kiện cần thiết và sự sinh ra tốc độ của tốc độ Baud bởi sự gắn liền Port nối tiếp.

Thanh ghi điều khiển timer T2CON

Bảng 3-2 Chức năng thanh ghi T2CON Bit Ký hiệu Chức năng

7 TF2 Bit cờ tràn timer 2

6 EXF2 Cờ ngoài Timer2

5 RCLK Cho phép nhận xung đồng hồ

4 TCLK Cho phép truyền xung đồng hồ.

3 EXEN2 Cho phép dùng Timer2 ngoài

2 TR2 Cho phép ngừng/khởi động Timer2

1 C/T2 Bằng 0 hoạt động ở chế độ timer, bằng 1 hoạt động như counter

0 CP/RL2 Nạp lại giá trị.

Bảng 3-3 Các mode hoạt động của timer 2

Thanh ghi điều khiển chế độ timer TMOD (timer mode register)

Thanh ghi mode gồm hai nhóm 4 bit là: 4 bit thấp đặt mode hoạt động cho Timer 0 và 4 bit cao đặt mode hoạt động cho Timer 1,8 bit của thanh ghi TMOD được tóm tắt như sau:

GATE C/T M1 M0 GATE C/T M1 M0

7 6 5 4 3 2 1 0

Bảng 3-4Chức năng thanh ghi TMOD

Page 44: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 31

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Bit Ký hiệu Timer Chức năng

7 GATE 1 Khi GATE = 1, Timer chỉ làm việc khi INT1=1

6 C/T 1 Bit cho đếm sự kiện hay ghi giờ

C/T = 1 : Đếm sự kiện

C/T = 0 : Ghi giờ đều đặn

5 M1 1 Bit chọn mode của Timer 1

4 M0 1 Bit chọn mode của Timer 1

3 GATE 0 Bit cổng của Timer 0

2 C/T 0 Bit chọn Counter/Timer của Timer 0

1 M1 0 Bit chọn mode của Timer 0

0 M0 0 Bit chọn mode của Timer 0

Hai bit M0 và M1 của TMOD để chọn mode cho Timer 0 hoặc Timer 1

Bảng 3-5 Chọn MODE Timer M1 M0 MODE Chức năng

0 0 0 Mode Timer 13 bit

0 1 1 Mode Timer 16 bit

1 0 2 Mode tự động nạp 8 bit

1 1 3 Mode Timer tách ra :

Timer 0 : TL0 là Timer 8 bit được điều khiển bởi các bit của Timer 0. TH0 tương tự nhưng được điều khiển bởi các bit của mode Timer 1.

Timer 1 : Được ngừng lại.

Thanh ghi điều khiển timer TCON (timer control register): Thanh ghi điều khiển bao gồm các bit trạng thái và các bit điều khiển bởi Timer 0 và Timer 1. Thanh ghi TCON có bit định vị. Hoạt động của từng bit được tóm tắt như sau

Bảng 3-6Chức năng thanh ghi TCON Bit Ký hiệu Chức năng

Page 45: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 32

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

TCON.7 TF1 Cờ tràn Timer 1 được set bởi phần cứng ở sự tràn, được xóa bởi phần mềm hoặc bởi phần cứng khi các vectơ xử lí đến thủ tục phục vụ ngắt ISR

TCON.6 TR1 Bit điều khiển chạy Timer 1 được set hoặc xóa bởi phần mềm để chạy hoặc ngưng chạy Timer.

TCON.5 TF0 Cờ tràn Timer 0(hoạt động tương tự TF1)

TCON.4 TR0 Bit điều khiển chạy Timer 0 (giống TR1)

TCON.3 IE1 Cờ kiểu ngắt 1 ngoài. Khi cạnh xuống xuất hiện trên INT1 thì IE1 được xóa bởi phần mềm hoặc phần cứng khi CPU định hướng đến thủ tục phục vụ ngắt ngoài.

TCON.2 IT1 Cờ kiểu ngắt 1 ngoài được set hoặc xóa bằng phấn mềm bởi cạnh kích hoạt bởi sự ngắt ngoài.

TCON.1 IE0 Cờ cạnh ngắt 0 ngoài

TCON IT0 Cờ kiểu ngắt 0 ngoài.

3.1.4 Truyền dữ liệu nối tiếp

Thanh ghi điều khiển nối tiếp SCON Thanh ghi SCON là thanh ghi 8 bit được dùng để lập trình việc đóng khung bit bắt đầu Start, bit dừng Stop và các bit dữ liệu và chon mode hoạt động của truyền dữ liệu.

Các bit trong thanh ghi SCON:

SM0 SM1 SM2 REN TB8 RB8 T1 R1

Trong đó: Bit SM0 và SM1 dùng để chọn mode hoạt động

Bảng 3-7 Chọn chế độ truyền SM0 SM1 Chế độ truyền

0 0 Chế độ nối tiếp 0

0 1 Chế độ nối tiếp 1(8 bit dữ liệu, Start, Stop)

1 0 Chế độ nối tiếp 2

1 1 Chế độ nối tiếp 3

-Bit SM2là bit D5 của thanh ghi SCON. Bit này cho phép khả năng đa xử lý của 8051 vì nó nằm ngoài phạm vi trình bày của chương này. Đối với các ứng dụng của

Page 46: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 33

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

chúng ta đặt SM2 = 0 vì ta không sử dụng 8051 trong môi trường đa xử lý.

-Bit REN là bit cho phép thu (Receive Enable). Bit REN =1 cho phép nhận dữ liệu, bit REN=0 cho phép truyền dữ liệu

-Bit TB8 và RB8: +Bit TB8 là bit được dùng để cho chế độ nối tiếp 2 và 3. +Bit RB8 Trong chế độ nối tiếp 1 thì bit này nhận một bản sao của bit Stop khi một dữ liệu 8 bit được nhận. Bit này cũng như bit TB8 rất hiếm khi được sử dụng.

-Các bit TI và RI: Các bit ngắt truyền TI và ngắt thu RI là các bit D1 và D0 của thanh ghi SCON. Các bit này là cực kỳ quan trọng của thanh ghi SCON. Khi 8051truyền xong một ký tự 8 bit thì nó bật TI để báo rằng nó sẵn sàng truyền một byte tiếp theo. Cờ RI sau khi nhận hoàn tất 1 byte cờ RI lên 1 để báo rằng nó đã nhận xong một byte.

Tốc độ truyền dữ liệu: Truyền dữ liệu nối tiếp nếu hoạt động ở mode 0 và 2 thì tốc độ truyền là không đổi bằng 1/12 tốc độ chip. Ở mode 1 và 3 thì tốc độ truyền có thể thay đổi theo lập trình người sử dụng. Các tốc độ Baud trong mode 1 và 3 được xác định bởi tốc độ tràn của Timer 1. Muốn có tốc độ Baud thì phải khởi tạo thanh ghi TMOD ở kiểu 8 bit tự động nạp lại và đặt giá trị nạp lại vào thanh ghi TH1 của Timer 1 để tạo ra tốc độ tràn chính xác.

Bảng 3-8Tóm tắt tốc độ Baud tương ứng với 2 loại thạch anh 12MHz và 11,059Mhz Tốc độ Baud

Tần số thạch anh

SMOD Giá trị nạp cho TH1

Tốc độ thực Sai số

9600 12MHz 1 -7 (F9H) 8923 7

2400 12MHz 0 -13 (F3H) 2404 0,16

1200 12MHz 0 -26 (E6H) 1202 0

19200 11,059MHz 1 -3 (FDH) 19200 0

9600 11,059MHz 0 -3 (FDH) 9600 0

2400 11,059MHz 0 -12 (F4H) 2400 0

1200 11,059MHz 0 -24 (E8H) 1200 0

Lập trình 8051 để truyền dữ liệu nối tiếp Khi lập trình 8051 để truyền các byte ký tự nối tiếp thì cần phải thực hiện các bước sau đây: 1. Nạp thanh ghi TMOD giá trị 20H báo rằng sử dụng Timer1 ở mode 2 để thiết lập chế độ baud. 2. Nạp thanh ghi TH1 các giá trị cho trong bảng trên để thiết lập chế độ baud truyền dữ liệu nối tiếp.

Page 47: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 34

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

3. Nạp thanh ghi SCON giá trị 50H báo chế độ nối tiếp 1 để đóng khung 8 bít dữ liệu, 1 bít Start và 1 bít Stop. 4. Bật TR1 = 1 để khởi động Timer1. 5. Xoá bít TI bằng lệnh “CLR TI” 6. Byte ký tự cần phải truyền được ghi vào SBUF. 7. Bít cờ TI được hiển thị bằng lệnh “JNB TI, xx” để báo ký tự đã được truyền hoàn tất chưa. 8. Để truyền ký tự tiếp theo quay trở về bước 5.

3.1.5 Tóm tắt tập lệnh của vi điều khiển AT89S52

*Tập lệnh của 8951 được chia thành 5 nhóm: Số học Luận lý Chuyển dữ liệu Chuyển điều khiển

Chi tiết thiết lập lệnh: Rn : Thanh ghi R0 đến R7. @Ri : Thanh ghi R0 hoặc R1. #data : Dữ liệu 8 bit. #data 16 : Dữ liệu 16 bit. Addr16 : Địa chỉ 16 bit. Addr11 : Địa chỉ 16 bit. Bit : Bit được định địa chỉ trực tiếp trong RAM hoặc các thanh ghi đặc biệt.

Nhóm lệnh xử lý số học: ADD A,Rn : Cộng nội dung thanh ghi Rn vào thanh ghi A. ADD A,data : Cộng trực tiếp 1 byte vào thanh ghi A. ADD A,@Ri : Cộng nội dung RAM tại địa chỉ được khai báo trong Ri vào A. ADD A,#data : Cộng dữ liệu vào A. ADD A,data : Cộng trực tiếp byte dữ liệu và cờ nhớ vào A. ADDC A,@Ri : Cộng nội dung RAM tại địa chỉ trong Ri và cờ C vào A. ADDC A,#data : Cộng dữ liệu 8bit và cờ C vào A. SUBB A,Rn : Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và cờ C. SUBB A,data : Trừ nội dung A cho một số và cờ C. SUBB A,@Ri : Trừ nội dung A cho một số tại địa chỉ lưu trong Ri và cờ C. SUBB A,#data : Trừ nội dung A cho dữ liệu 8 bit và cờ C. INC A : Tăng nội dung thanh ghi A lên 1. INC Rn : Tăng nội dung thanh ghi Rn lên 1. INC data : Tăng dữ liệu trực tiếp lên 1. INC @Ri : Tăng nội dung RAM tại địa chỉ lưu trong Ri lên 1. DEC A : Giảm nội dung thanh ghi A xuống 1. DEC Rn : Giảm nội dung thanh ghi Rn xuống 1. DEC data : Giảm dữ liệu trực tiếp xuống 1 DEC @Ri : Giảm nội dung RAM tại địa chỉ lưu trong Ri xuống 1. INC DPTR : Tăng nội dung con trỏ dữ liệu lên 1. MUL AB : Nhân nội dung thanh ghi A với nội dung thanh ghi B. DIV AB : Chia nội dung thanh ghi A cho nội dung thanh ghi B.

Page 48: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 35

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

DA A : Hiệu chỉnh thập phân thanh ghi A.

Nhóm lệnh luận lý: ANL A,Rn : AND nội dung thanh ghi A với nội dung thanh ghi Rn. ANL A,data : AND nội dung thanh ghi A với dữ liệu trực tiếp. ANL A,@Ri : AND nội dung thanh ghi A với dữ liệu gián tiếp trong RAM. ANL A,#data : AND nội dung thanh ghi với dữ liệu 8 bit. ANL data,A : AND một dữ liệu trực tiếp với A. ANL data,#data : AND một dữ liệu trực tiếp với một dữ liệu 8bit. ANL C,bit : AND cờ C với 1 bit. ANL C,/bit : AND cờ C với bù 1bit. ORL A,Rn : OR nội dung thanh ghi A với nội dung thanh ghi Rn. ORL A,data : OR thanh ghi A với một dữ liệu trực tiếp. ORL A,@Ri : OR thanh ghi A với một dữ liệu gián tiếp. ORL A,#data : OR thanh ghi A với một dữ liệu 8bit. ORL data,A : OR một dữ liệu trực tiếp với thanh ghi A. ORL data,#data : OR một dữ liệu trực tiếp với một dữ liệu tức thời. ORL C,bit : OR cờ nhớ với một bit trực tiếp. ORL C,/bit : OR cờ nhớ với bù của một bit trực tiếp. XRL A,Rn : XOR nội dung thanh ghi A với nội dung thanh ghi Rn. XRL A,data : XOR thanh ghi A với mộ dữ liệu trực tiếp. XRL A,@Ri : XOR thanh ghi A với một dữ liệu gián tiếp. XRL A,#data : XOR thanh ghi A với mộ dữ liệu tức thời. XRL data,A : XOR một dữ liệu trực tiếp với thanh ghi A. XRL dara,#data : XOR một dữ liệu trực tiếp với một dữ liệu tức thời. SETB C : C=1. SETB bit : bit=1. CLR A : Xóa nội dung trong thanh ghi A. CLR C : Xóa cờ nhớ. CPL A : Bù nội dung thanh ghi A. CPL C : Bù cờ nhớ. CPL bit : Bù một bit trực tiếp. RL A : Xoay trái nội dung thanh ghi A. RLC A : Xuay trái nội dung thanh ghi A qua cờ nhớ. RR A : Xuay phải nội dung thanh ghi A. RRC A : Xuay phải nội dung thanh ghi A qua cờ nhớ. SWAP A : Đảo 4 bit cao với 4 bit thấp trong thanh ghi A.

Nhóm lệnh di chuyển dữ liệu: MOV A,Rn : Chuyển nội dung thanh ghi Rn vào thanh ghi A. MOV A,data : Chuyển dữ liệu trực tiếp vào thanh ghi A. MOV A,@Ri : Chuyển dữ liệu gián tiếp vào thanh ghi A. MOV A,#data : Chuyển dữ liệu tức thời vào thanh ghi A. MOV Rn,data : Chuyển dữ liệu trực tiếp vào thanh ghi Rn. MOV Rn,#data : Chuyển dữ liệu tức thời vào thanh ghi Rn. MOV data,A : Chuyển nội dung thanh ghi A vào một dữ liệu trực tiếp. MOV data,Rn : Chuyển nội dung thanh ghi Rn vào một dữ liệu trực tiếp. MOV data,data : Chuyển một dữ liệu trực tiếp vào một dữ liệu trực tiếp. MOV data,@Ri : Chuyển một dữ liệu gián tiếp vào một dữ liệu gián tiếp. MOV data,#data : Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp.

Page 49: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 36

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

MOV @Ri,A : Chuyển nội dung thanh ghi A vào một dữ liệu gián tiếp. MOV @Ri,data : Chuyển một dữ liệu trực tiếp vào một dữ liệu gián tiếp. MOV @Ri,#data : Chuyển dữ liệu tức thời vào dữ liệu gián tiếp. MOV DPTR,#data16 : Chuyển một hằng 16 bit vào thanh ghi con trỏ dữ liệu. MOV C,bit : Chuyển một bit trực tiếp vào cờ nhớ. MOV bit,C : Chuyển cờ nhớ vào một bit trực tiếp. MOVC A,@A+DPTR : Chuyển nội dung bộ nhớ chương trình có địa chỉ là @A+DPRT vào thanh ghi A. MOVC A,@A+PC : Chuyển nội dung bộ nhớ chương trình có địa chỉ là @A+PC vào thanh ghi A. MOVX A,@Ri : Chuyển dữ liệu ngoài (8 bit địa chỉ) vào thanh ghi A. MOVX A,@DPTR : Chuyển dữ liệu ngoài (16 bit địa chỉ) vào thanh ghi A. MOVX @Ri,A : Chuyển nội dung A ra dữ liệu ngoài (8 bit địa chỉ). MOVX @DPTR,A : Chuyển nội dung A ra dữ liệu bên ngoài (16 bit địa chỉ). PUSH data : Chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP. POP data : Chuyển dữ liệu trực tiếp từ ngăn xếp vào data và giảm SP. XCH A,Rn : Trao đổi dữ liệu giữa thanh ghi Rn và thanh ghi A. XCH A,data : Trao đổi giữa thanh ghi A và một dữ liệu trực tiếp. XCH A,@Ri : Trao đổi giữa thanh ghi A và một dữ liệu gián tiếp. XCHD A,@Ri : Trao đổi 4 bit thấp giữa A và RAM có đại chỉ lưu trong Ri.

Nhóm lệnh chuyền điều khiển: ACALL addr11 : Gọi chương trình con dùng địa chỉ 11bit. LCALL addr16 : Gọi chương trình con dùng địa chỉ 16bit. RET : Trở về từ lệnh gọi chương trình con. RETI : Trở về từ lệnh gọi ngắt. AJMP addr11 : Nhảy trong vùng địa chỉ 11 bit. LJMP addr16 : Nhảy trong vùng địa chỉ 16 bit. SJMP rel : Nhảy ngắn. JMP @A+DPTR : Nhảy gián tiếp từ con trỏ dữ liệu. JZ rel : Nhảy nếu A=0. JNZ rel : Nhảy nếu A không bằng 0. JC rel : Nhảy nếu cờ C=1. JNC rel : Nhảy nếu cờ C=0. JB bit,rel : Nhảy nếu bit=1. JNB bit,rel : Nhảy nếu bit=0. JBC bit,rel : Nhảy nếu bit=1, rồi xóa bit. CJNE A,data,rel : So sánh dữ liệu trực tiếp với A và nhảy nếu không bằng. CJNE A,#data,rel : So sánh dữ liệu tức thời với A và nhảy nếu không bằng. CJNE Rn,#data,rel : So sánh dữ liệu tức thời với Rn và nhảy nếu không bằng. CJNE @Ri,#data,rel : So sánh dữ liệu tức thời với dữ liệu gián tiếp và nhảy nếu không bằng. DJNZ Rn,rel : Giảm thanh ghi Rn và nhảy nếu không bằng. DJNZ data,rel : Giảm dữ liệu trực tiếp và nhảy nếu không bằng.

3.2 LCD HD44780

3.2.1 Chức năng các chân LCD 16x2 LCD 16x2 hiển thị trên hàng, mỗi hàng có thể hiển thị được 16 ký tự. LCD gồm 16 chân với chức năng của các chân được cho trong bảng sau:

Page 50: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 37

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Bảng 3-9 Chức năng các chân LCD. Chân số Tên Chức năng

1 Vss Chân nối GND nguồn

2 Vdd Chân cấp nguồn cho LCD, nối với Vcc=5V

3 Vee Điều chỉnh độ tương phản của LCD

4 RS

Chân chọn thanh ghi(Register Select):

RS=1: Chọn thanh ghi lệnh

RS=0: Chọn thanh ghi dữ liệu

5 RW\

Chân chọn chế độ đọc / ghi LCD:

RW\=1: Chế độ đọc

RW\=0: Chế độ ghi

6 E

Chân cho phép đọc ghi LCD:

E=1: Cho phép đọc ghi LCD.

E=0: Không cho phép đọc ghi LCD

7-14 DB0-DB7

Chân dữ liệu. Có 2 chế độ sử dụng:

Chế độ 8 bit: DB7-DB0, với MSB là DB7

Chế độ 4 bit: DB7-DB4, với MSB là DB7

15-16 A&K Chân điều chỉnh độ sáng nền của LCD

3.2.2 Sơ đồ khối của LCD 16x2

Page 51: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 38

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Hình 3-4 Sơ đồ khối của LCD

3.2.3 Các thanh ghi và vùng RAM của LCD HD44780 có 2 thanh ghi 8 bit quan trọng là: thanh ghi lệnh IR (Intrustion Register) và thanh ghi dữ liệu DR (Data Register):

Thanh ghi lệnh IR: điều khiển LCD thông qua đường dữ liệu DB7-DB0. Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng. Người dùng chỉ cần cấp địa chỉ lệnh bằng cách nạp địa chỉ đó vào thanh ghi IR.

Thanh ghi DR: thanh ghi DR chứa dữ liệu 8 bit để ghi vào vùng RAM DDRAM hoặc CGRAM.

Bằng cách điều khiển hai chân RS và RW\ ta có thể chuyển qua lại giữa 2 thanh ghi này:

Bảng 3-10 Lựa chọn thanh ghi IR hay DR.

Page 52: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 39

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

RS RW\ Chức năng

0 0 Lựa chọn thanh ghi lệnh và ghi lệnh ra LCD

0 1 Lựa chọn thanh ghi dữ liệu và đọc dữ liệu từ LCD

1 0 Ghi lệnh vào thanh ghi lệnh

1 1 Đọc dữ liệu từ thanh ghi dữ liệu

3.2.3.1 Cờ báo bận BF(Busy Flag) Khi đang thực hiện các hoạt động, LCD cần một khoảng thời gian đáp ứng. Trong khoảng thời gian đáp ứng này, LCD bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF lên 1 ( thông qua chân DB7), và khi thực hiện xong thì nó sẽ xóa BF về 0 để báo hiệu là đã thực hiện xong.

3.2.3.2 Bộ đếm địa chỉ AC(Address Counter) Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM (DDRAM và CGRAM) mà thông qua bộ đếm địa chỉ AC. Bộ đếm này nối với 2 vùng RAM theo kiểu rẽ nhánh. Khi một địa chỉ lệnh được nạp vào thanh ghi IR, thông tin được nối trực tiếp cho 2 vùng RAM, việc chọn vùng RAM là DDRAM hay CGRAM đã được thực hiện trong mã lệnh.

3.2.3.3 Vùng RAM hiển thị DDRAM Đây là vùng RAM để hiển thị, nghĩa là ứng với một địa chỉ của RAM là một ký tự trên màn hình, vị trí hiển thị phụ thuộc vào địa chỉ của từng loại LCD mà nhà sản xuất LCD cung cấp.

Hình 3-5 Địa chỉ vùng RAM hiển thị trên LCD.

Vùng RAM này có 80 byte, nghĩa là chứa được 80 ký tự 8 bit.

3.2.3.4 Vùng RAM chứa ký tự CGROM Vùng ROM này dùng để chứa ký tự loại 5x8 hoặc 5x10 điểm ảnh / ký tự, và định địa chỉ bằng 8 bit. Tuy nhiên nó chỉ có 208 mẫu ký tự 5x8 và 32 mẫu ký tự 5x10 (tổng cộng 240 thay vì 28=256 mẫu ký tự). Người dùng không thể thay đổi vùng ROM này.

Page 53: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 40

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Hình 3-6 Vùng RAM chứa ký tự CGROM.

Bảng mã ký tự của vùng ROM do nhà sản xuất LCD quy định, tùy mỗi loại LCD mà bảng mã ký tự khác nhau.

Page 54: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 41

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Hình 3-7 Bảng ký tự của LCD

3.2.3.5 Vùng RAM chứa ký tự đồ họa

Như trên bảng mã ký tự, nhà sản xuất dành vùng địa chỉ là 00H - 0FH để người dùng tạo ra những mẫu ký tự riêng. Ta chỉ có thể tạo tối đa 8 ký tự loại 5x8 hoặc 4 ký tự loại 5x10 điểm ảnh.

Page 55: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 42

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Hình 3-8 Vùng RAM chứa ký tự đồ họa.

3.2.3.6 Tập lệnh của LCD

Bảng 3-11 Tập lệnh của LCD. Tên lệnh Chức năng Tmax

Clear Display

Mã lệnh:

Page 56: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 43

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 0 0 0 0 1

Lệnh Clear Display sẽ ghi một khoảng trống vào các ô nhớ trong DDRAM, sau đó trả bộ đếm AC=0, trả lại kiểu hiện thị gốc nếu nó bị thay đổi.

Return Home

Mã lệnh:

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 0 0 0 1 *

Lệnh này trả AC=0, trả lại kiểu hiển thị gốc. Nội dung DDRAM không đổi.

1.52ms

Entry Mode Set

Mã lệnh:

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 0 0 1 [I/D] [S]

- I/D: Tăng(I/D=1) hoặc giảm(I/D=0) bộ đếm AC một đơn vị mỗi khi có hoạt động đọc / ghi trên vùng DDRAM. Vị trí con trỏ cũng di chuyển theo sự thay đổi này.

- S: S=1 toàn bộ nội dung DDRAM sẽ dịch chuyển theo AC.

S=0 không dịch nội dung hiển thị.

37us

Display On/Off Control

Mã lệnh:

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 0 1 [D] [C] [B]

- D: D=1/0 cho/ không cho màn hình hiển thị. Nội dung DDRAM không thay đổi.

- C: C=1/0 cho/ không cho hiển thị con trỏ.

- B: B=1/0 cho/ không cho nhấp nháy ký tự tại vị trí con trỏ.

37us

Cursor or Display Shift

Mã lệnh:

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 0 1 [S/C] [R/L] * *

37us

Page 57: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 44

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

S/C R/L Hoạt động

0 0 Dịch vị t í con trỏ sang trái.

0 1 Dịch vị trí con trỏ sang phải.

1 0 Dịch toàn bộ nội dung hiển thị sang trái, con trỏ cũng dịch theo.

1 1 Dịch toàn bộ nội dung hiển thị sang phải, con trỏ cũng dịch theo.

Function Set

Mã lệnh:

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 0 1 [DL] [N] [F] * *

-DL:DL=1LCDgiaotiếpvớiMPUbằnggiaothức8bit(từbitDB7đếnDB0).

Ngượclại,giaothứcgiaotiếplà4bit(từbitDB7đếnbitDB0).Khichọngiao thức4bit,dữliệuđượctruyền / nhận2lầnliêntiếp. Với4bitcao gởi/ nhậntrước, 4 bit thấp gởi / nhận sau.

- N: N=0 : hiểnthị 1 hàng, N=1: hiểnthị 2 hàng.

- F:F=0:kiểukítự5x8điểmảnh,F=1:kiểukítự5x10điểm ảnh.

Không thể hiển thịkiểukí tự 5x10 điểm ảnh ở kiểu hiển thị 2hàng.

37us

Set CGRAM Address

Mã lệnh:

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

0 1 [AGC][AGC][AGC][AGC][AGC][AGC]

LệnhnàyghivàoACđịachỉcủaCGRAM.Kíhiệu[ACG] chỉ1bitcủachuỗidữliệu 6bit.Ngaysaulệnhnàylàlệnhđọc / ghidữliệutừCGRAMtạiđịachỉđãđượcchỉ định.

37us

Set DDRAM address

Mã lệnh:

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

1 [AD] [AD] [AD] [AD] [AD] [AD] [AD]

LệnhnàyghivàoACđịachỉcủaDDRAM,dùngkhicầnthiếtlậptọađộhiểnthị mongmuốn.Ngaysaulệnhnàylàlệnhđọc / ghidữliệutừDDRAMtạiđịachỉđã được chỉđịnh.

37us

Mã lệnh:

Page 58: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 45

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Read BF and address

DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

[BF] [AC] [AC] [AC] [AC] [AC] [AC] [AC]

KhicờBF=1,LCDđanglàmviệcvàlệnhtiếptheo(nếu có)sẽbịbỏquanếucờBFchưavềmứcthấp.Chonên,khilậptrìnhđiềukhiển,phải kiểmtra cờ BF trước khi ghi dữliệu vào LCD.

3.2.3.7 Đặc tính điện của các chân giao tiếp

Bảng 3-12 Đặc tính điện các chân giao tiếp của LCD. Item Symbol Min Typ Max Unit Test Condition Notes*

Input high voltage (1) VIH1 0.7VCC — VCC V 6 (except OSC1) Input low voltage (1) VIL1 –0.3 — 0.55 V 6 (except OSC1) Input high voltage (2) VIH2 0.7VCC — VCC V 15 (OSC1) Input low voltage (2) VIL2 — — 0.2VCC V 15 (OSC1) Output high voltage (1) VOH1 0.75VCC — — V –IOH= 0.1 mA 7 (DB0–DB7) Output low voltage (1) VOL1 — — 0.2VCC V IOL = 0.1 mA 7 (DB0–DB7) Output high voltage (2) VOH2 0.8VCC — — V –IOH= 0.04 mA 8 (except DB0–DB7) Output low voltage (2) VOL2 — — 0.2VCC V IOL = 0.04 mA 8 (except DB0–DB7) Driver on resistance RCOM — 2 20 k Id = 0.05 mA, 13 (COM) VLCD = 4 V Driver on resistance RSEG — 2 30 k Id = 0.05 mA, 13 (SEG) VLCD = 4 V Input leakage current ILI –1 — 1 µA VIN = 0 to VCC 9 Pull-up MOS current

(DB0–DB7, RS, R/W)

–Ip 10 50 120 µA VCC= 3 V

Power supply current ICC — 150 300 µA Rfoscillation, 10, 14 external clock VCC= 3 V, fOSC= 270 kHz LCD voltage VLCD1 3.0 — 11.0 V VCC–V5, 1/5 bias 16 VLCD2 3.0 — 11.0 V VCC–V5, 1/4 bias 16

Bus Timing: Mỗi lần đọc ghi LCD, LCD cần khoảng thời gian để thực hiện các lệnh. Khoảng thời gian này được nhà sản xuất LCD cung cấp cùng datasheet của LCD.

Page 59: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 46

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Hình 3-9Quá trình ghi LCD.

Hình 3-10Chu kỳ thời gian ghi LCD

Hình 3-11Qúa trình đọc từ LCD

Page 60: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 47

Chương 3. Vi điều khiển AT89S52 và LCD HD44780

Hình 3-12Chu kỳ thời gian đọc LCD

3.2.3.8 Khởi tạo LCD LCD muốn hoạt động cần phải được khởi tạo. Quá trình khởi tạo nhằm thiết lập chế độ hiện thị của LCD, kiểu giao tiếp, kiểu hiể thị của ký tự,… và cũng được cho bởi nhà sản xuất.

Hình 3-13Quá trình khởi tạo LCD

Page 61: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 48

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

CHƯƠNG 4. XÂY DỰNG HỆ THỐNG TRA CỨU THÔNG TIN QUA TIN NHẮN

Thiết kế Hệ thống Tra cứu thông tin qua Tin nhắn cho một Trường THPT Hệ thống sử dụng thiết bị tin nhắn SMS (GSM/GPRS Modem) là trung tâm giao tiếp và truyền dữ liệu giữa nhà trường - học sinh; nhà trường - phụ huynh. Tạo mối liên kết giữa nhà trường và học sinh, nhà trường và phụ huynh chỉ bằng một tin nhắn SMS qua máy điện thọai cầm tay. Giải pháp cho biết thông tin, dữ liệu một cách nhanh nhất bằng hệ thống trả lời tin nhắn tự động.

Đối với Nhà trường Cầu nối thông tin nhanh nhất giữa Nhà trường và Phụ huynh, học sinh. Liên lạc thông tin giữa các Giáo Viên trong Nhà trường. Gửi thông tin về điểm thi và tuyển sinh tới tất cả sinh viên. Trả lời liên tục 24/7 (nhanh chóng và chính xác). Giảm thiểu mọi chi phí, công tác thông báo.

Đối với Phụ huynh, học sinh Nhận được thông tin chính xác và nhanh chóng từ phía nhà trường. Quản lý và kiểm soát được tình hình học tập của con. Kiểm tra kết quả học tập con cái mọi lúc mọi nơi.

Đối với Học sinh Thông tin được xử lý nhanh chóng (khoảng 30 giây), không phụ thuộc vào

không gian hay thời gian vì trung tâm hoạt động 24/7. Nhận được thông tin về điểm thi mà không phải tốn thời gian tới trường. Một tin nhắn biết được mọi thông tin về nhà trường,về điểm thi. Không cần tới trường vẫn biết được lịch thi và lịch học.

Chức năng chính chương trình: - Tra cứu điểm của học sinh (qua SMS) - Tra cứu thông tin của giáo viên (qua SMS) - Gửi thông báo cho các giáo viên (qua SMS) - Gửi thông báo cho PHHS (qua SMS)

Ngôn ngữ chương trình: Visual C Sharp 2005

Page 62: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 49

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

4.1 SƠ ĐỒ KHỐI

Hình 4-1 Sơ đồ khối hệ thống

Nguyên lý hoạt động:Khi có tin nhắn đến GSM Modem, PC đọc tin nhắn đó và xử lý tin nhắn, tra dữ liệu từ cơ sở dữ liệu và điều khiểnGSM Modem gửi tin nhắn trả lời thông qua chương trình C Sharp. Nếu cú pháp sai sẽ gửi tin nhắn có nội dung: cú pháp sai đến số điện thoại gửi tin tra cứu

Page 63: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 50

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

4.2 LƯU ĐỒ

Hình 4-2 Lưu đồ chương trình

Page 64: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 51

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

4.3 THIẾT KẾ

4.3.1 Một số hàm cơ bản liên quan đến lập trình SMS Sử dụng thư viện GSMComm để nhận và gửi tin nhắn. Bạn cần 1 GSM Modem hoặc 1 điện thoại di động kết nối với máy tính để nhận và gửi tin nhắn.

- Gửi tin nhắn pdu = new SmsSubmitPdu(txt_message.Text, txt_destination_numbers.Text,""); CommSetting.comm.SendMessage(pdu); Với txt_message.Text: nội dung tin, , txt_destination_numbers.Text: số điện thoại cần gửi

- Nhận tin nhắn đến privatevoid MessageReceived() { string storage = GetMessageStorage(); DecodedShortMessage[] messages = CommSetting.comm.ReadMessage(PhoneMessageStatus.ReceivedUnread, storage); foreach(DecodedShortMessage message in messages) { Output(string.Format("Message status = {0}, Location = {1}/{2}", StatusToString(message.Status),message.Storage, message.Index)); ShowMessage(message.Data); Output(""); } Output(string.Format("{0,9} messages read.", messages.Length.ToString())); Output(""); }

- Mã hoá tin nhắn DecodedShortMessage[] messages = CommSetting.comm.ReadMessages(PhoneMessageStatus.ReceivedUnread, storage); DecodedShortMessage[] messages = CommSetting.comm.ReadMessages(PhoneMessageStatus.All, storage);

- Xoá 1 hoặc tất cả tin nhắn // Delete the message with the specified index from storage CommSetting.comm.DeleteMessage(index, storage); // Delete all messages from phone memory CommSetting.comm.DeleteMessages(DeleteScope.All, storage);

4.3.2 Kết nối Access Database với C# Đây là bảng Pupils trong DATA.mdb

Page 65: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 52

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

Hình 4-3 Bảng dữ liệu học sinh

Chúng ta sẽ tạo ra một ứng dụng C# đơn giản để kết nối với bảng Pupils ở trên. Ứng dụng tra cứu điểm thi của học sinh: Nhập MSHS click Find, Kết quả sẽ hiện thị ở texBox phía dưới như hình 4-5, 4-5

Hình 4-4 Tìm thành công Hình 4-5 Tìm không thành công

Đây là đoạn code của chương trình: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace WindowsApplication3 { publicpartialclassForm1 : Form { public Form1() { InitializeComponent(); } privatevoid button1_Click(object sender, EventArgs e) {

Page 66: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 53

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

string conString =@"Provider=Microsoft.JET.OLEDB.4.0;"+ @"data source=D:\DATA.mdb"; OleDbConnection conn = newOleDbConnection(conString); try { // create an open the connection conn.Open(); // create the adapter and fill the DataSet OleDbDataAdapter adapter1 = newOleDbDataAdapter("SELECT MSHS, Name, Toan, Ly, Hoa FROM Pupils where MSHS = \'" + textBox1.Text + "\'", conn); dataSet1.Clear(); int numberOfRowsFeched = adapter1.Fill(dataSet1, "Pupils"); if (numberOfRowsFeched > 0) { DataTable dt = dataSet1.Tables["Pupils"]; textBox2.Text = "MSSV:" + " " +dt.Rows[0][0] + ", " + dt.Rows[0][1]+ ": Toan: " +dt.Rows[0][2].ToString() + ", Ly: " + dt.Rows[0][3].ToString() + ", Hoa: " + dt.Rows[0][4].ToString(); } else { textBox2.Text = "ID not found."; } } catch (Exception E) { MessageBox.Show("Error occured: " + E.Message); } finally { conn.Close(); } } } }

Xem thêm tài liệu SQLlab.pdf trong thư mục Tài liệu tham khảo

4.3.3Truyền nhận dữ liệu qua cổng com (RS232) Bố trí chân của cổng COM

Hình 4-6 Cổng COM

Các thông số cổng COM cần lưu ý: Thông số của cổng COM cần quan tâm là:

- Địa chỉ cổng (Port Name).

Page 67: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 54

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

- Tốc độ baud (baudrate), - Số bít trong một khung dữ liệu (data bits), - Số bit dừng giữa các khung dữ liệu (stop bit), - Bít kiểm tra chẵn lẻ (parity bit).

Thông thường (defaut) cài đặt : Port Name= COM1 (địa chỉ mã Hexa: 3f8),baudrate = 9600, data bits = 8, stop bit = 1, parity = none.

Cơ chế bắt tay cứng (Handshaking): Có 4 loại: - None, - XON/XOFF, - CTS/RTS, - CTS/RTS XON/XOFF

Phụ thuộc vào từng cơ chế bắt tay mà có cách nối dây khác nhau.

Nối dây cho cơ chế NONE và XON/XOFF:

Hình 4-7 Nối dây cho cơ chế NONE và XON/XOFF

Nối dây cho cơ chế CTS/RTS, CTS/RTS XON/XOFF:

Hình 4-8 Nối dây cho cơ chế CTS/RTS, CTS/RTS XON/XOFF

Thông thường người ta sử dụng cơ chế handshaking: None, vì vậy chỉ cần 3 dây nối như hình 2.

Như vậy về phần connecter là xong. Ta đi vào lập trình.

Page 68: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 55

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

Tạo 1 Windows Application trong Visual C#:

Hình 4-9Form truyền nhận dữ liệu

Trong ToolBox chọn Điều khiển SerialPort kéo vào cửa sổ Form1→ Xuất hiện đối tượng SerialPort1 ở phía dưới. (Xem hình 4)

Và những thuộc tính của điều khiển serialPort1 ở góc dưới bên trái: Ở đây ta có thể cài đặt các thông số của cổng COM. Để các tham số ở trang thái default: Baudrate=9600, databits=8, handshake=none, stopbit = one, parity = none. Portname =COM1

Trong Visual Studio 2005 đã xây dựng lớp đối tượng SerialPort với đầy đủ các hàm hỗ trợ cho phép người dùng có thể tác động đến cổng COM một các dễ dàng.

Page 69: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 56

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

Hình 4-10Sử dụng Serial Port để sử dụng cho truyền dữ liệu qua cổng COM

Một số hàm cơ bản trong SerialPort thường dùng: - SerialPort.IsOpen(): Trả lại trang thái của cổng là đang đóng hay mở. - SerialPort.Open(): Mở cổng với thông số đã cài đặt. - SerialPort.Close(): Đóng cổng. - SerialPort.WriteLine(String data): Truyền một string xuống bộ đệm cổng để

truyền đi. - SerialPort.ReadExisting (): Đọc một string từ bộ đệm cổng . - SerialPort.ReadChar(): Đọc một giá trị kiểu char từ bộ đệm cổng. - SerialPort.ReadByte(): Đọc một giá trị kiểu Byte từ bộ đệm cổng.

Quá trình truyền: Quá trình truyền thì đơn gian, vì khi nào người dùng click nút truyền thì dữ liệu mới được truyền đi

Quá trình nhận dữ liệu: Quá trình nhận dữ liệu là rắc rối hơn một chút, vì dữ liệu đến lúc nào là chưa biết.Có hai cách để thực hiện quá trình quá trình truyền:

- Cách một: Thường xuyên kiểm tra cổng xem dữ liệu có được truyền đến không. - Cách hai: Phải bắt được sự kiện dữ liệu đến, khi dữ liệu đến ta gọi hàm sử lý.

Với cách 1 ta sử dụng một Timer ngắt thời gian, cứ sau một thời gian nhất định (mà ta cài đặt Timer)hàm kiểm tra và sử lý sẽ được gọi. Với cách 2 ta sử dụng sự kiện SerialDataReceivedEvent. Khi có sự kiện này ta sẽ đọc và xử lý dữ liệu.

Code chương trình:

Page 70: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 57

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO.Ports; namespace COM_tranceiver { publicpartialclassForm1 : Form { privatedelegatevoidSetTextCallback(string text); public Form1() { InitializeComponent(); serialPort1.DataReceived+=newSerialDataReceivedEventHandler(serialPort1_DataReceived); } bool Open = true; privatevoid Button_Trans_Click(object sender, EventArgs e) { if(serialPort1.IsOpen) { serialPort1.WriteTimeout = 500; serialPort1.DtrEnable = true; serialPort1.RtsEnable = true; serialPort1.DiscardOutBuffer(); serialPort1.DiscardInBuffer(); serialPort1.WriteLine(Tbox_Trans.Text); } else { MessageBox.Show("Cong chua mo! Hay mo cong","Chu y"); } } privatevoid Button_Open_Click(object sender, EventArgs e) { if (Open) { Open = false; Button_Open.Text = "Close";

Page 71: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 58

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

serialPort1.Open(); } else { Open = true; Button_Open.Text = "Open"; serialPort1.Close(); } } privatevoid serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { //string data = "";// Luu du lieu nhan if (sender == serialPort1) { string data=""; data = serialPort1.ReadChar().ToString(); SetText(Tbox_Recei.Text + data); } } privatevoid Form1_FormClosed(object sender, FormClosedEventArgs e) { MessageBox.Show("Ban muon thoat khoi chuong trinh","Chu y"); serialPort1.Close(); } privatevoid SetText(string text) { // InvokeRequired required compares the thread ID of the // calling thread to the thread ID of the creating thread. // If these threads are different, it returns true. if (this.Tbox_Recei.InvokeRequired) { SetTextCallback d = newSetTextCallback(SetText); this.Invoke(d, newobject[] { text }); } else { this.Tbox_Recei.Text = text; } } } }

Page 72: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 59

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

4.3.4 Làm việc với chuỗi

Bài toán: lấy 2 ký tự trong 1 chuỗi cho trước rồi so sánh với 1 chuỗi khác

using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { classProgram { staticvoid Main(string[] args) { string S1 = "DK"; string S2 = "DT"; string S3 = "DK00"; // lay 2 ky tu dau cua du lieu string S4=S3.Substring(0,2); // so sanh S4 voi S1 int kq; kq = string.Compare(S4,S1); if (kq==0) { Console.WriteLine("dieu khien thiet bi"); } // so sanh S4 voi S1 kq = string.Compare(S4,S2); if (kq==0) { Console.WriteLine("tra cuu diem"); } }

4.3.5 Cơ sở dữ liệu Cơ sở dữ liệu: gồm bảng Pupils và bảng Teachers:

- Bảng Pupils: dữ liệu các học sinh bao gồm các cột: MSHS, Name, Class, Mobile, Toan, Ly, Hoa

- Bảng Teachers: dữ liệu giáo viên gồm các cột: MSGV, Name, HocVi, Mobile, Email, ChuyenMon

Bảng Pupils và bảng Teacher tạo bằng Microsoft Access (File DATA.mdb)

Page 73: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 60

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

Hình 4-11 Bảng dữ liệu sách học sinh

Hình 4-12 Bảng dữ liêu giáo viên

4.3.6 Cấu hình Modem GSM Kết nốiGSM Modem với PC Mở chương trình Hyper Teminal, gõ các lệnh sau:

SỐ TT LỆNH CHÚ GIẢI

1 AT<CR>

2 AT+CPIN? <CR> Kiểm tra Sim có hoạt động

3 AT+CMGF=0<CR> Thiết lập chế độ PDU

4 AT+CNMI=2,1,0,0,0<CR> Thiết lập khi có tin nhắn mới

5 AT+IPR=9600<CR> Tốc độ bound = 9600bps

6 AT+ICF=3,4<CR> 8 data, 1 stop, parity: none

7 AT+IFC=2,2<CR> Local Flow Control

Lưu ý:

- <CR>: Carriage Return = Enter

Page 74: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 61

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

- Khi gõ mà không thấy chữ trên Cửa sổ Hyper Teminal mà vẫn thấy GSM Modem phản hồi, ta gõ lệnh ATE1<CR>

- Xem thêm chú giải cho các lệnh trong “AT Commands Interface Guide”

4.4 GIAO DIỆN CHƯƠNG TRÌNH

4.4.1 Cài đặt kết nối Chọn COM-Port, Baud rate, Timeout

Hình 4-13 Cài đặt kết nối

4.4.2 Giao diện chương trình chính Khi kết nối thành công thì có chữ CONNECTED ở cuối màn hình, nếu không thành công thì xuất hiện NO PHONE CONNECTION

Hình 4-14 Giao diện chương trình chính

Page 75: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 62

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

4.4.3 Khi có tin nhắn tới Màn hình sẽ xuất hiện nội dung tin nhắn đến từ số nào và sau khoảng 5s sẽ xuất hiện “1 Message sent to +84xxxxxxxxx” báo đã gửi tin nhắn trả lời

Hình 4-15 Khi có tin nhắn đến

Khi có tin nhắn đến, chương trình sẽ xử lý tin nhắn và gửi tin nhắn trả lời

4.4.4 Trong Tab Message gồm 4 menu: Send, Send Multiple, Read, Delete

Hình 4-16 Menu chương trình

Page 76: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 63

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

4.4.5 Menu Send Chức năng gửi tin nhắn: Destination Number : Nhập số điện thoại cần gửi; Message: Nhập nội dung tin nhắn

Hình 4-17 Form Send Message

4.4.6 Menu Send Multiple Chức năng: gửi thông báo cho phụ huynh học sinh hay giáo viên Chọn nhóm cần gửi trong group Send To, nhập nội dung tin nhắn vào textbox Message, sau đó click Send để gửi

Hình 4-18 Form Send Multiple Message

4.4.7 Menu Read Message Chức năng: Đọc tất cả tin nhắn từ bộ nhớ SIM

Page 77: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 64

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

Hình 4-19 Form Read Message

4.4.8 Menu Delete Chức năng xoá 1 hay tất cả tin nhắn

Hình 4-20 Form Delete Message

4.5 TESTING

-Kết nối Modem với Máy vi tính qua cổng COM

-Cấp nguồn cho GSM Modem

-Cấu hình cho GSM Modem như phần 4.3.6

-Mở chương trình, giao diện chương trình như sau:

Page 78: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 65

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

Hình 4-21 Giao diện chương trình chính

-Soạn tin nhắn theo cú pháp gửi đến Modem ví dụ: DT A103

Hình 4-22 Soạn tin tra cứu điểm thi

-Chương trình xử lý tin nhắn và gửi tin trả lời

Page 79: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 66

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

Hình 4-23 Chương trình đã nhận tin và trả lời

-Điện thoại nhận tin trả lời có nội dung: MSHS: A103, Do Minh Thai: Toan: 9, Ly: 9, Hoa: 9

Hình 4-24 Nội dung tin trả lời

-Nếu soạn tin để tra cứu thông tin giáo viên soạn:

Page 80: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 67

Chương 4. Xây dựng hệ thống tra cứu thông tin qua tin nhắn

Hình 4-25 Tin nhắn tra cứu thông tin giáo viên

-Điện thoại nhận tin trả lời có nội dung:

Hình 4-26 Tin nhắn trả lời

Page 81: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 68

CHƯƠNG 5. THIẾT KẾ, THI CÔNG MẠCH ĐIỀU KHIỂN THIẾT BỊ ĐIỆN QUA TIN NHẮN

Thiết kế mạch kết nối với GSM Modem: nhận tin nhắn, xử lý tin nhắn, điều khiển thiết bị điện (đèn và quạt) tắt hoặc mở hoặc kiểm tra trạng thái hoạt động của thiết bị theo nội dung tin nhắn và gửi tin trả lời.

Mục đích: - Điều khiển tắt/ mở Đèn (qua SMS) - Điều khiển tắt/ mở Quạt (qua SMS) - Kiểm tra trạng thái của Đèn, Quạt (qua SMS) - Gửi tin nhắn trả lời báo kết quả (sai cú pháp; sai mật khẩu; báo trạng thái của đèn, quạt)

Ngôn ngữ chương trình: ASSEMBLY

5.1 SƠ ĐỒ KHỐI

Nguyên lý hoạt động: GSM Modem nhận tin nhắn, truyền cho VĐK, VĐK xử lý và đem hiển thị trên khối hiển thị, đồng thời cũng xử lý điều khiển Relay, sau đó VĐK điều khiển GSM Modem gửi tin nhắn trả lời thông qua tập lệnh AT

5.2 THIẾT KẾ MẠCH

5.2.1 Khối GSM Modem

Hình 5-2 GSM Modem

HIỂN THỊ GSM MODEM

VĐK

89S52 RELAY

Hình 5-1 Sơ đồ khối hệ thống

Page 82: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 69

Chương 5. Thiết kế, Thi công mạch

Hình 5-3 Cáp RS232

a) Gửi các lệnh AT tới modem GSM bằng MS HyperTerminal Để sử dụng MS HyperTerminal cho việc gửi các lệnh AT đến điện thoại di động hay modem GSM/GPRS, bạn cần phải thực hiện theo những bước như sau:

Cho một thẻ SIM vẫn còn hoạt động vào vào trong khe cắm SIM của modem GSM.

Kết nối modem GSM tới máy tính qua cổng COM. Nếu sử dụng cổng USB thì phải cài đặt driver của modem GSM tương ứng cho nó. Bạn sẽ tìn thấy driver của modem wireless trong đĩa CD mà nhà sản xuất cung cấp cho bạn. Và nếu như nhà sản xuất không cung cấp driver cho điện thoại hay modem GSM/GPRS thì bạn có thể vào trang web của nhà sản xuất để download nó về rồi cài vào

Chạy MS HyperTerminal bằng cách chọn Start ->Programs ->Accessories ->Communications ->HyperTerminal

Trong hộp thoại Connection Description, hãy gõ tên và chọn một biểu tượng icon mà bạn thích dùng cho kết nối này. Sau đó thì nhấn nút OK

Hình 5-4 Hộp thoại Connection Description

Page 83: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 70

Chương 5. Thiết kế, Thi công mạch

Trong hộp thoại Connect to, chọn COM port mà điện thoại di động hay modem GSM/GPRS đang kết nối tới tại khay Connect using. Thí dụ, bạn có thể chọn COM khi điện thoại di động hay modem đang được kết nối với port COM1. Sau đó thì nhấn nút OK.

Hình 5-5 Hộp thoại Connect to

Hộp thoại Properties xuất hiện. Chọn các thiết lập port chính xác cho modem GSM/GPRS. Sau đó click vào nút OK

Hình 5-6 Hộp thoại Properties

Page 84: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 71

Chương 5. Thiết kế, Thi công mạch

(để tìm ra các thiết lập chính xác phù hợp modem GSM/GPRS thì có một cách đó là tra sổ hướng dẫn cầm tay của modem GSM/GPRS. Và một cách khác là kiểm tra các thiết lập port được sử dụng cho driver của modem wireless mà bạn cài đặt trước đó ).

Gõ “AT” ở trong cửa sổ màn hình window chính. Một phản hồi “OK” sẽ được trả lời từ điện thoại di động hay modem GSM/GPRS

Gõ “AT+CPIN?” trong cửa sổ màn hình window chính. Lệnh AT “AT+CPIN” được sử dụng để chất vần liệu điện thoại di động hay modem GSM/GPRS đang đợi một PIN có đúng không (personal identification number _số nhận dạng cá nhân, ví dụ như password). Nếu thấy có phan3hoi62 là “+CPIN:READY”thì nó có nghĩa là thẻ SIM không yêu cầu có một PIN và nó đã sẵn sàng cho sử dụng. Còn nếu như thẻ SIM của bạn yêu cầu có một PIN thì bạn cần đặt PIN thông qua lệnh AT “AT+CPIN+<PIN>”.

Hình 5-7 Cửa sổ làm việc

Nếu như bạn nhận được phản hồi như cửa sổ màn hình trên thì điện thoại di động hay modem GSM/GPRS đang hoạt động đúng. Và tới đây bạn có thể gõ cá lệnh AT theo ý riêng của bạn để điều khiển điện thoại di động hay modem GSM/GPRS.

b) Cấu hình cho Modem: Kết nối Modem GSM với PC Mở chương trình Hyper Teminal, gõ các lệnh sau:

SỐ TT LỆNH CHÚ GIẢI

1 AT<CR>

2 AT+CPIN? <CR> Kiểm tra Sim có hoạt động

3 AT+CMGF=1<CR> Thiết lập chế độ TEXT

4 AT+CNMI=0,1,0,0,0<CR> Thiết lập khi có tin nhắn mới

Page 85: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 72

Chương 5. Thiết kế, Thi công mạch

5 AT+IPR=9600<CR> Tốc độ bound = 9600bps

6 AT+ICF=3,4<CR> 8 data, 1 stop, parity: none

7 AT+IFC=2,2<CR> Local Flow Control

8 AT+CSAS<CR> Lưu cấu hình

Lưu ý: - <CR>: Carriage Return = Enter - Khi gõ mà không thấy chữ trên Cửa sổ Hyper Teminal mà vẫn thấy GSM

Modem phản hồi, ta gõ lệnh ATE1<CR> - Xem thêm chú giải cho các lệnh trong “AT Commands Interface Guide”

c) Mạch giao tiếp giữa GSM modem và vi điều khiển

Sơ đồ nguyên lý:

Hình 5-8 Sơ đồ mạch nguyên lý mạch vi điều khiển

Giao tiếp giữa GSM Modem với VĐK qua cổng COM của GSM Modem sử dụng IC MAX232 để chuyển từ RS232 sang TTL và ngược lại.

5.2.2 Khối hiển thị Khối hiển thị sử dụng LCD16x2, sơ đồ kết nối như hình:

Page 86: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 73

Chương 5. Thiết kế, Thi công mạch

Hình 5-9 Khối hiển thị

- Các chân VDD và VSS được nối với nguồn và GND. - Chân VEE được nối tới biến trở để chỉnh độ tương phản của LCD. - Các chân RS, RW\ và E được kết nối tới VĐK để điều khiển đọc / ghi LCD. - Các chân D0 – D7 nối tới port của VĐK

5.2.3 Khối Relay Relay sẽ đóng hay ngắt là do VĐK điều khiển dựa vào kết quả xử lý.

Hình 5-10 Sơ đồ nguyên lý khối Relay

Tín hiệu điều khiển từ VĐK sẽ được đưa qua cổng EX-OR để đóng ngắt Transistor. Transistor dẫn thì Relay đóng, đồng thời Led báo hiệu cũng sáng báo hiệu Relay đóng. Ngoài ra còn có công tắc điều khiển đóng ngắt Relay.

5.3 LƯU ĐỒCHƯƠNG TRÌNH

Qúa trình truyền nhận dữ liệu giữa Modem GSM và Vi điều khiển

(1) Modem GSM gửi “<CR><LF>+CMTI: “SM”, 1<CR><LF>” cho vi điều khiển khi có tin nhắn tới Modem GSM (2)Vi điều khiển nhận dữ liệu, kiểm tra nếu đúng là “+CMTI” thì gửi “AT+CMGR=1” để đọc tin nhắn ở vị trí số 1 (3) Modem GSM nhận dữ liệu và gửi cho VĐK tin nhắn ở ngăn chứa số 1 (4)Vi điều khiển nhận tin nhắn, xử lý tin nhắn… và gửi

Page 87: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 74

Chương 5. Thiết kế, Thi công mạch

”AT+CMSS=Y,+84xxxxxxxx<CR>” Y: ngăn chứa tin nhắn muốn gửi +84xxxxxxxxx : Số điện thoại muốn gửi tin nhắn (5) Modem phản hồi kết quả cho VĐK (đã gửi tin nhắn tới số +84xxxxxxxx) (6) Vi điều khiển nhận dữ liệu và gửi lệnh: “AT+CMGD=1<CR>” để yêu cầu modem GSM xóa tin nhắn ở ngăn chứa số 1 để xử lý tin nhắn sau.

Hình 5-11 Quá trình chương trình truyền nhận dữ liệu giữa VĐK và Modem

Lưu đồ chương trình

Page 88: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 75

Chương 5. Thiết kế, Thi công mạch

Hình 5-12 Lưu đồ chương trình chính

Các lưu đồ chương trình con:

- Nhận dữ liệu

Page 89: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 76

Chương 5. Thiết kế, Thi công mạch

Chương trình con “NHẬN DỮ LIỆU” được gọi khi Vi điều khiển muốn nhận dữ liệu từ Modem GSM

Trước khi gọi chương trình con “NHẬN DỮ LIỆU” thì phải biết số ký tự LF mà Modem GSM gửi cho VĐK để kết thúc chương trình “NHẬN DỮ LIỆU”

Dữ liệu sẽ được lưu theo Byte vào 30H, 31H, 32H…..

Ví dụ: Modem GSM gửi dữ liệu: <CR><LF>+CMTI: “SM”, 1<CR><LF>

thì các lệnh ASM là: MOV KTULF,#2 CALL NHANDULIEU Dấu “CR” được lưu vào ô nhớ 30H Dấu “+” được lưu vào ô nhớ 31H Chữ “C” được lưu vào ô nhớ 32H …

Page 90: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 77

Chương 5. Thiết kế, Thi công mạch

Hình 5-13 Lưu đồ chương trình nhận dữa liệu

- Gửi dữ liệu:

Chương trình con GỬI DỮ LIỆU được gọi khi muốn gửi dữ liệu cho Modem GSM

Page 91: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 78

Chương 5. Thiết kế, Thi công mạch

Dữ liệu luôn kết thúc bằng dấu “#” có mã ASCII là 35 (HỆ THẬP PHÂN). Đây cũng là đánh dấu kết thúc việc gửi dữ liệu

Mỗi lần truyền 1 Byte

GỬI DỮ LIỆU

RET

TI=1?

A=’#’?

S

Đ

S

Đ

TANG THU TU GUI

XOÁ CỜ RI XOÁ CỜ TI

SBUF=A

A=THU TU GUI

THU TU GUI =0

A=@A+DPTR

Hình 5-14 Lưu đồ chương trình gửi dữ liệu

- Lấy địa chỉ:

Chương trình con “LẤY ĐỊA CHỈ” được gọi sau khi VĐK nhận tin nhắn, giúp ta biết vị trí ô nhớ đầu tiên chứa số điện thoại, vị trí ô nhớ chứa địa chỉ cuối của tin nhắn, vị trí ô nhớ đầu tiên chứa nội dung tin nhắn

Page 92: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 79

Chương 5. Thiết kế, Thi công mạch

Ví dụ: Tin nhắn mà Modem GSM gửi cho VĐK: <CR><LF>+CMGR: "REC UNREAD","+84973230369",,"07/05/ 15,09:32:05+28" <CR><LF>*0714* TH<CR><LF> <CR><LF>OK<CR><LF> Ô nhớ 51H 52H 53H 54H 55H 56H 57H 58H …

Nội dung “ + 8 4 9 7 3 2 …

Ô nhớ 65H 66H 67H 68H 69H 6AH 6BH 6CH 6DH 6EH

Nội dung * 0 7 1 4 * T H

Thì sau khi gọi: Chương con LẤY ĐỊA CHỈ, kết quả là: -Địa chỉ số điện thoại: DCSODT=51H

-Địa chỉ dữ liệu: DCDULIEU=65H -Địa chỉ cuối: DCCUOI=6EH

Page 93: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 80

Chương 5. Thiết kế, Thi công mạch

LẤY ĐỊA CHỈ

RET

@R0=’’?

@R0=+?

DCSODT=R0

DCCUOI=R0

S

Đ

S

Đ

R0 = 31H

INC R0

DEC R0

@R0=CR?

INC R0

DCDULIEU=R0

INC R0

INC R0

@R0=CR?

Đ

S

S

Đ

Hình 5-15 Lưu đồ chương trình lấy địa chỉ

- So sánh:

Page 94: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 81

Chương 5. Thiết kế, Thi công mạch

Chương trình con SO SÁNH dùng để so sánh dữ liệu cần so sánh (ví dụ dữ liệu nhận được từ Modem GSM) với dữ liệu lưu trong VĐK (các DB). Nếu giống nhau thì CHECK=1, còn ngược lại: CHECK=0

Hình 5-16 Lưu đồ chương trình so sánh

- Gửi tin nhắn:

Page 95: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 82

Chương 5. Thiết kế, Thi công mạch

Hình 5-17 Lưu đồ chương trình gửi tin nhắn

Muốn Modem gửi tin nhắn đã lưu trong SIM thì VĐK gửi cho Modem:’AT+CMSS=<vị trí tin nhắn>,<số điện thoại><CR>’ Ví dụ: Gửi tin nhắn ở vị trí 3 trong bộ nhớ SIM tới số 0908010801, ta thực hiện như sau: AT+CMSS=3,”+84908010801”<CR>

5.4 TESTING

-Gắn SIM, Ăng ten cho Modem GSM -Kết nối Modem GSM với mạch vi điều khiển

+Relay màu đen: Relay 1: Đèn +Relay màu xanh: Relay 2: Quạt

Hình 5-18 Hệ thống sau khi kết nối

Page 96: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 83

Chương 5. Thiết kế, Thi công mạch

-Cấp nguồn cho mạch vi điều khiển và modem GSM: LCD xuất hiện dòng chữ: “ĐIỀU KHIỂN THIẾT BỊ DIỆN QUA SMS”, Led báo nguồn sáng, 2 led báo 2 relay ngắt

Hình 5-19 Hệ thống ở chế độ chờ

-Nhắn tin theo cú pháp tới Modem GSM, Ví dụ: *0714* MD, có nghĩa mở đèn

Hình 5-20 Gửi tin nhắn mở đèn

-LCD xuất hiện dòng chữ “CÓ TIN NHẮN”, sau đó khoảng 1s xuất hiện 2 dòng: dòng trên hiển thị số điện thoại điều khiển: “+841227684024”; dòng 2 hiển thị nội dung tin nhắn:*0714* MD

Page 97: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 84

Chương 5. Thiết kế, Thi công mạch

Hình 5-21 LCD hiện thị có tin nhắn đến

Hình 5-22 LCD hiển thị số điện thoại và nội dung tin nhắn

-Kết quả relay 1 ngắt, relay 2 gửi trạng thái cũ: Đèn ON, QUẠT gữi nguyên trạng thái cũ

Page 98: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 85

Chương 5. Thiết kế, Thi công mạch

Hình 5-23 Đèn mở, quạt tắt

-Tin nhắn trả lời có nội dung như sau: DEN: ON, QUAT: OFF

Hình 5-24 Tin nhắn trả về

-Tiếp tục nhắn tin theo cú pháp tới GSM Modem, Ví dụ: *0714* TD MQ, có nghĩa là tắt đèn, mở quạt

-LCD xuất hiện:

Page 99: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

“Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn” T r a n g | 86

Chương 5. Thiết kế, Thi công mạch

Hình 5-25 LCD hiển thị số điện thoại và nội dung tin nhắn

-Kết quả: relay 1 ngắt, relay 2 đóng: ĐÈN TẮT, QUẠT MỞ

Hình 5-26Đèn tắt, quạt mở

Page 100: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 87

Chương 6. Kết luận, hướng phát triển đề tài

CHƯƠNG 6. KẾT LUẬN, HƯỚNG PHÁT TRIỂN ĐỀ TÀI

6.1 KẾT LUẬN

Qua thời gian nghiên cứu, thi công đồ án đã cơ bản được hoàn thành. Bằng sự nỗ lực cố gắng của bản thân mỗi cá nhân và sự phân chia, phối hợp công việc hợp lí, chặt chẽ, nhịp nhàng giữa mỗi thành viên của nhóm, bên cạnh đó còn là sự hướng dẫn nhiệt tình, tận tâm của thầy Trần Văn Phát, đồ án này đã được hoàn thành đúng thời gian như đã định và đã đạt được yêu cầu đặt ra theo yêu cầu là Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn SMS. Trong quá trình thực hiện đề tài, chúng em đã thu được những kết quả nhất định như sau:

- Có kiến thức về Modem WAVECOM, GSM Modem - Gửi, đọc, xoá tin nhắn thông qua tập lệnh AT - Giao tiếp GSM Modem với PC qua cổng COM với Visual C# - Kết nốivới cơ sở dữ liệu, Xử lý tìm kiếm trong cơ sở dữ liệu - Lập trình tự động trả lời khi có tin nhắn tới GSM Modem - Giao tiếp giữa modem GSM và VĐK AT89S52 - Chương trình assembly cho VĐK giao tiếp, Điều khiển modem GSM, Điều khiển

thiết bị điện - Mô phỏng truyền nhận dữ liệu giữa VDK và GSM Modem - Thi công mạch mạch giao tiếp giữa GSM Modem và VĐK, mạch điều khiển thiết

bị (Relay)

Với sự hướng dẫn tận tình của Thầy Đinh Quốc Hùng, sự giúp đỡ của bạn bè, sự động viên của gia đình và sự nỗ lực, cố gắng của bản thân, Nhóm chúng em đã thiết kế thành công 2 hệ thống có thể áp dụng vào thực tế:

- Hệ thống Tra cứu thông tin qua tin nhắn SMS: ứng dụng cho một trường THPT Học sinh hay phụ huynh có thể tra cứu điểm thi qua một tin nhắn Học sinh hay phụ huynh có thể tra cứu thông tin giáo viên qua tin nhắn Nhà trường có thể gửi thông báo đến PHHS qua tin nhắn Nhà trường có thể gửi thông báo đến các giáo viên trong trường qua tin nhắn

- Hệ thống Điều khiển từ xa Thiết bị điện (Đèn, Quạt) qua Tin nhắn SMS Điều khiển tắt hoặc mởđèn qua tin nhắn Điều khiển tắt hoặc mởquạt qua tin nhắn Kiểm tra trạng thái của đèn và quạt qua tin nhắn Có tính bảo mật: đúng mật khẩu mới điều khiển thiết bị Điều khiển từ xa với thời gian không khác gì điều khiển bằng công tắc ở nhà

6.2 HƯỚNG PHÁT TRIỂN ĐỀ TÀI

Do thời gian thực hiện đề tài có hạn và lượng kiến thức cá nhân mỗi thành viên của nhóm là nhất định nên đề tài thực hiện xong chỉ đáp ứng được một phần nhỏ của một hệ thống hoàn chỉnh. Vì vậy, để đề tài này thêm phong phú hơn, mang nhiều tính thực tế hơn nữa, có khả năng ứng dụng cao hơn thì đề tài cần đưa thêm vào những yêu cầu như sau:

- Hệ thống điều khiển được nhiều thiết bị điện hơn - Cảnh báo sự cố hệ thống bằng cách nhắn tin tới người quản trị

Page 101: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 88

Chương 6. Kết luận, hướng phát triển đề tài

- Kết nối với cảm biến nhiệt độ: khi nhiệt độ lên cao thì ngắt relay và nhắn tin tới người quản trị; người điều khiển có thể kiểm tra nhiệt độ bằng tin nhắn

- Nâng cấp phần cơ sở dữ liệu: có nhiều thông tin truy vấn hơn như thông tin điểm nhiều học kỳ, đăng ký lớp học và môn học chỉ bằng một tin nhắn

Hy vọng với những hướng phát triển nêu trên cùng với những ý tưởng khác của các bạn, của người đọc- những người đi sau - sẽ phát triển hơn nữa đề tài này, khắc phục những hạn chế, tồn tại của đề tài, làm cho đề tài trở nên phong phú hơn, mang tính ứng dụng cao hơn vào trong thực tế cuộc sống, phục vụ cho những lợi ích của con người trong tương lai.

Page 102: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 89

PHỤ LỤC

A. BẢNG MÃ ASCII

Có 95 kí tự ASCII in được, được đánh số từ 32 đến 126.

ASCII (American Standard Code for Information Interchange - Chuẩn mã trao đổi thông tin Hoa Kì), thường được

phát âm là át-xơ-ki, là bộ kí tự và bộ mã kí tự dựa trên bảng chữ cái La Tinh được dùng trong tiếng Anh hiện đại

và các ngôn ngữ Tây Âu khác. Nó thường được dùng để hiển thị văn bản trong máy tính và các thiết bị thông tin

khác. Nó cũng được dùng bởi các thiết bị điều khiển làm việc với văn bản.

Các chữ cái in được theo thứ tự trong ASCII là

␠!"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_

`abcdefghijklmnopqrstuvwxyz{|}~

với kí tự đầu tiên là khoảng trắng.

1. Tổng quát Cũng như các mã máy tính biểu diễn kí tự khác, ASCII quy định mối tương quan giữa kiểu bit số với kí hiệu/biểu tượng trong ngôn ngữ viết, vì vậy cho phép các thiết bị số liên lạc với nhau và xử lí, lưu trữ, trao đổi thông tin hướng kí tự. Bảng mã kí tự ASCII, hoặc các mở rộng tương thích, được dùng trong hầu hết các máy tính thông thường, đặc biệt là máy tính cá nhân và máy trạm làm việc. Tên MIME thường dùng cho bảng mã này là "US-ASCII".

ASCII chính xác là mã 7-bit, tức là nó dùng kiểu bit biểu diễn với 7 số nhị phân (thập phân từ 0 đến 127) để biểu diễn thông tin về kí tự. Vào lúc ASCII được giới thiệu, nhiều máy tính dùng nhóm 8-bit (byte hoặc, chuyên biệt hơn, bộ tám) làm đơn vị thông tin nhỏ nhất; bit thứ tám thường được dùng bit chẵn-lẻ (parity) để kiểm tra lỗi trên các đường thông tin hoặc kiểm tra chức năng đặc hiệu theo thiết bị. Các máy không dùng chẵn-lẻ thường thiết lập bit thứ tám là zero, nhưng một số thiết bị như máy PRIME chạy PRIMOS thiết lập bit thứ tám là một.

ASCII được công bố làm tiêu chuẩn lần đầu vào năm 1963 bởi Hiệp hội tiêu chuẩn Hoa Kì (American Standards Association, ASA), sau này đổi thành ANSI. Có nhiều biến thể của ASCII, hiện tại phổ biến nhất là ANSI X3.4-1986, cũng được tiêu chuẩn hoá bởi Hiệp hội nhà sản xuất máy tính châu Âu (European Computer Manufacturers Association) ECMA-6, ISO/IEC 646:1991 Phiên bản tham khảo quốc tế, ITU-T Khuyến cáo T.50 (09/92), và RFC 20 (Request for Comments). Nó được dùng trong Unicode, một thay thế có thể xảy ra của nó,

Page 103: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 90

Đồ án tốt nghiệp

như là 128 kí tự 'thấp nhất'. ASCII được xem là tiêu chuẩn phần mềm thành công nhất từng được công bố từ trước tới nay.

1.1 Kí tự điều khiển ASCII

Hệ 2 (Nhị

phân)

Hệ 10 (Thập phân)

Hệ 16 (Thập lục

phân) Viết tắt

Biểu diễn

in được Truy nhập bàn phím

Tên/Ý nghĩa tiếng Anh

Tên/Ý nghĩa tiếng Việt

000 0000 0 00 NUL ␀ ^@ Null character Kí tự rỗng

000 0001 1 01 SOH ␁ ^A Start of Header Bắt đầu Header

000 0010 2 02 STX ␂ ^B Start of Text Bắt đầu văn bản

000 0011 3 03 ETX ␃ ^C End of Text Kết thúc văn bản

000 0100 4 04 EOT ␄ ^D End of Transmission

Kết thúc truyền

000 0101 5 05 ENQ ␅ ^E Enquiry Truy vấn

000 0110 6 06 ACK ␆ ^F Acknowledgement

000 0111 7 07 BEL ␇ ^G Bell Chuông

000 1000 8 08 BS ␈ ^H Backspace Xoá ngược

000 1001 9 09 HT ␉ ^I Horizontal Tab Tab ngang

000 1010 10 0A LF ␊ ^J New Line Xuống dòng

000 1011 11 0B VT ␋ ^K Vertical Tab Tab dọc

Page 104: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 91

Đồ án tốt nghiệp

000 1100 12 0C FF ␌ ^L Form feed

000 1101 13 0D CR ␍ ^M Carriage return

000 1110 14 0E SO ␎ ^N Shift Out

000 1111 15 0F SI ␏ ^O Shift In

001 0000 16 10 DLE ␐ ^P Data Link Escape

001 0001 17 11 DC1 ␑ ^Q Device Control 1 — oft. XON

001 0010 18 12 DC2 ␒ ^R Device Control 2

001 0011 19 13 DC3 ␓ ^S Device Control 3 — oft. XOFF

001 0100 20 14 DC4 ␔ ^T Device Control 4

001 0101 21 15 NAK ␕ ^U Negative Acknowledgement

001 0110 22 16 SYN ␖ ^V Synchronous Idle

001 0111 23 17 ETB ␗ ^W End of Trans. Block

001 1000 24 18 CAN ␘ ^X Cancel

001 1001 25 19 EM ␙ ^Y End of Medium

001 1010 26 1A SUB ␚ ^Z Substitute

001 1011 27 1B ESC ␛ ^[ hay ESC Escape

Page 105: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 92

Đồ án tốt nghiệp

001 1100 28 1C FS ␜ ^\ File Separator

001 1101 29 1D GS ␝ ^] Group Separator

001 1110 30 1E RS ␞ ^^ Record Separator

001 1111 31 1F US ␟ ^_ Unit Separator

111 1111 127 7F DEL ␡ DEL hay Backspace Delete

1.2 Kí tự ASCII in được

Hệ 2 (Nhị phân)

Hệ 10 (Thập phân)

Hệ 16 (Thập lục phân)

Đồ hoạ (Hiển thị ra được)

010 0000 32 20 Khoảng trống (␠)

010 0001 33 21 !

010 0010 34 22 "

010 0011 35 23 #

010 0100 36 24 $

010 0101 37 25 %

010 0110 38 26 &

010 0111 39 27 '

010 1000 40 28 (

010 1001 41 29 )

Page 106: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 93

Đồ án tốt nghiệp

010 1010 42 2A *

010 1011 43 2B +

010 1100 44 2C ,

010 1101 45 2D -

010 1110 46 2E .

010 1111 47 2F /

011 0000 48 30 0

011 0001 49 31 1

011 0010 50 32 2

011 0011 51 33 3

011 0100 52 34 4

011 0101 53 35 5

011 0110 54 36 6

011 0111 55 37 7

011 1000 56 38 8

011 1001 57 39 9

011 1010 58 3A :

011 1011 59 3B ;

Page 107: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 94

Đồ án tốt nghiệp

011 1100 60 3C <

011 1101 61 3D =

011 1110 62 3E >

011 1111 63 3F ?

100 0000 64 40 @

100 0001 65 41 A

100 0010 66 42 B

100 0011 67 43 C

100 0100 68 44 D

100 0101 69 45 E

100 0110 70 46 F

100 0111 71 47 G

100 1000 72 48 H

100 1001 73 49 I

100 1010 74 4A J

100 1011 75 4B K

100 1100 76 4C L

100 1101 77 4D M

Page 108: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 95

Đồ án tốt nghiệp

100 1110 78 4E N

100 1111 79 4F O

101 0000 80 50 P

101 0001 81 51 Q

101 0010 82 52 R

101 0011 83 53 S

101 0100 84 54 T

101 0101 85 55 U

101 0110 86 56 V

101 0111 87 57 W

101 1000 88 58 X

101 1001 89 59 Y

101 1010 90 5A Z

101 1011 91 5B [

101 1100 92 5C \

101 1101 93 5D ]

101 1110 94 5E ^

101 1111 95 5F _

Page 109: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 96

Đồ án tốt nghiệp

110 0000 96 60 ̀

110 0001 97 61 a

110 0010 98 62 b

110 0011 99 63 c

110 0100 100 64 d

110 0101 101 65 e

110 0110 102 66 f

110 0111 103 67 g

110 1000 104 68 h

110 1001 105 69 i

110 1010 106 6A j

110 1011 107 6B k

110 1100 108 6C l

110 1101 109 6D m

110 1110 110 6E n

110 1111 111 6F o

111 0000 112 70 p

111 0001 113 71 q

Page 110: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 97

Đồ án tốt nghiệp

111 0010 114 72 r

111 0011 115 73 s

111 0100 116 74 t

111 0101 117 75 u

111 0110 118 76 v

111 0111 119 77 w

111 1000 120 78 x

111 1001 121 79 y

111 1010 122 7A z

111 1011 123 7B {

111 1100 124 7C |

111 1101 125 7D }

111 1110 126 7E ~

2. Mở rộng Các kí tự từ không đến ba mươi hai theo hệ thập phân có thể in ra màn hinh. Các kí tự đó chỉ có thể in được trong môi trường dos gồm một số hình như trái tim, mặt cười, hình tam giác,...Một số ký tự đặc biệt khi in ra màn hình sẽ thực hiện lệnh như: kêu tiếng bip với kí tự BEL, xuống hàng với kí tự LF,...

Trong bảng mã ASCII chuẩn có 128 kí tự. Trong bảng mã ASCII mở rộng có 255 kí tự bao gồm cả 128 kí tự trong mã ASCII chuẩn. Các kí tự sau là các phép toán, các chử có dấu và các kí tự để trang trí.

Page 111: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 98

Đồ án tốt nghiệp

B. GSM EQUIPMENT AND NETWORK ERROR CODES Khi sử dụng các lệnh AT để điều khiển thiết bị GSM, thiết bị có thể đáp ứng "ERROR" hoặc "OK". Đôi khi bạn sẽ nhận được một lỗi và bạn không biết nguyên nhân của lỗi này.

Đó là lý do tại sao hầu hết các thiết bị GSM tiên tiến hỗ trợ“extended errors”. Thay vì chỉ hiển thị các thông báo lỗi cụ thể, nó hiện thị một mã lỗi. Cú pháp của “extended errors” là "+ CMS ERROR: xxx" hoặc "+ CME ERROR: xxx". Khi lỗi này bắt đầu với "+ CME ERROR", có nghĩa là lỗi thiết bị. Ví dụ, bạn đang cố gắng đọc một mục danh bạ điện thoại trước khi nhập vào pincode.

Khi có một lỗi mạng, ví dụ, khi bạn cố gắng gửi một tin nhắn SMS khi không có vùng phủ sóng, bạn sẽ nhận được một lỗi bắt đầu với "+ CMS ERROR". Để kích hoạt, thực hiện các lệnh sau đây: AT+CMEE=1 AT&W Dưới đây bạn có thể tìm thấy một danh sách có chứa hầu hết các mã lỗi được hỗ trợ bởi các thiết bị GSM.

CME ERROR's (GSM Equipment related codes)

Error Description CME ERROR: 0 Phone failure CME ERROR: 1 No connection to phone CME ERROR: 2 Phone adapter link reserved CME ERROR: 3 Operation not allowed CME ERROR: 4 Operation not supported CME ERROR: 5 PH_SIM PIN required CME ERROR: 6 PH_FSIM PIN required CME ERROR: 7 PH_FSIM PUK required CME ERROR: 10 SIM not inserted CME ERROR: 11 SIM PIN required CME ERROR: 12 SIM PUK required CME ERROR: 13 SIM failure CME ERROR: 14 SIM busy CME ERROR: 15 SIM wrong CME ERROR: 16 Incorrect password CME ERROR: 17 SIM PIN2 required CME ERROR: 18 SIM PUK2 required CME ERROR: 20 Memory full CME ERROR: 21 Invalid index CME ERROR: 22 Not found CME ERROR: 23 Memory failure CME ERROR: 24 Text string too long CME ERROR: 25 Invalid characters in text string CME ERROR: 26 Dial string too long CME ERROR: 27 Invalid characters in dial string CME ERROR: 30 No network service CME ERROR: 31 Network timeout CME ERROR: 32 Network not allowed, emergency calls only CME ERROR: 40 Network personalization PIN required CME ERROR: 41 Network personalization PUK required CME ERROR: 42 Network subset personalization PIN required

Page 112: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 99

Đồ án tốt nghiệp

CME ERROR: 43 Network subset personalization PUK required CME ERROR: 44 Service provider personalization PIN required CME ERROR: 45 Service provider personalization PUK required CME ERROR: 46 Corporate personalization PIN required CME ERROR: 47 Corporate personalization PUK required CME ERROR: 48 PH-SIM PUK required CME ERROR: 100 Unknown error CME ERROR: 103 Illegal MS CME ERROR: 106 Illegal ME CME ERROR: 107 GPRS services not allowed CME ERROR: 111 PLMN not allowed CME ERROR: 112 Location area not allowed CME ERROR: 113 Roaming not allowed in this location area CME ERROR: 126 Operation temporary not allowed CME ERROR: 132 Service operation not supported CME ERROR: 133 Requested service option not subscribed CME ERROR: 134 Service option temporary out of order CME ERROR: 148 Unspecified GPRS error CME ERROR: 149 PDP authentication failure CME ERROR: 150 Invalid mobile class CME ERROR: 256 Operation temporarily not allowed CME ERROR: 257 Call barred CME ERROR: 258 Phone is busy CME ERROR: 259 User abort CME ERROR: 260 Invalid dial string CME ERROR: 261 SS not executed CME ERROR: 262 SIM Blocked CME ERROR: 263 Invalid block CME ERROR: 772 SIM powered down

CMS ERROR's (GSM Network related codes)

Error Description CMS ERROR: 1 Unassigned number CMS ERROR: 8 Operator determined barring CMS ERROR: 10 Call bared CMS ERROR: 21 Short message transfer rejected CMS ERROR: 27 Destination out of service CMS ERROR: 28 Unindentified subscriber CMS ERROR: 29 Facility rejected CMS ERROR: 30 Unknown subscriber CMS ERROR: 38 Network out of order CMS ERROR: 41 Temporary failure CMS ERROR: 42 Congestion CMS ERROR: 47 Recources unavailable CMS ERROR: 50 Requested facility not subscribed CMS ERROR: 69 Requested facility not implemented CMS ERROR: 81 Invalid short message transfer reference value CMS ERROR: 95 Invalid message unspecified CMS ERROR: 96 Invalid mandatory information

Page 113: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 100

Đồ án tốt nghiệp

Error Description CMS ERROR: 97 Message type non existent or not implemented CMS ERROR: 98 Message not compatible with short message protocol CMS ERROR: 99 Information element non-existent or not implemente CMS ERROR: 111 Protocol error, unspecified CMS ERROR: 127 Internetworking , unspecified CMS ERROR: 128 Telematic internetworking not supported CMS ERROR: 129 Short message type 0 not supported CMS ERROR: 130 Cannot replace short message CMS ERROR: 143 Unspecified TP-PID error CMS ERROR: 144 Data code scheme not supported CMS ERROR: 145 Message class not supported CMS ERROR: 159 Unspecified TP-DCS error CMS ERROR: 160 Command cannot be actioned CMS ERROR: 161 Command unsupported CMS ERROR: 175 Unspecified TP-Command error CMS ERROR: 176 TPDU not supported CMS ERROR: 192 SC busy CMS ERROR: 193 No SC subscription CMS ERROR: 194 SC System failure CMS ERROR: 195 Invalid SME address CMS ERROR: 196 Destination SME barred CMS ERROR: 197 SM Rejected-Duplicate SM CMS ERROR: 198 TP-VPF not supported CMS ERROR: 199 TP-VP not supported CMS ERROR: 208 D0 SIM SMS Storage full CMS ERROR: 209 No SMS Storage capability in SIM CMS ERROR: 210 Error in MS CMS ERROR: 211 Memory capacity exceeded CMS ERROR: 212 Sim application toolkit busy CMS ERROR: 213 SIM data download error CMS ERROR: 255 Unspecified error cause CMS ERROR: 300 ME Failure CMS ERROR: 301 SMS service of ME reserved CMS ERROR: 302 Operation not allowed CMS ERROR: 303 Operation not supported CMS ERROR: 304 Invalid PDU mode parameter CMS ERROR: 305 Invalid Text mode parameter CMS ERROR: 310 SIM not inserted CMS ERROR: 311 SIM PIN required CMS ERROR: 312 PH-SIM PIN required CMS ERROR: 313 SIM failure CMS ERROR: 314 SIM busy CMS ERROR: 315 SIM wrong

Page 114: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 101

Đồ án tốt nghiệp

Error Description CMS ERROR: 316 SIM PUK required CMS ERROR: 317 SIM PIN2 required CMS ERROR: 318 SIM PUK2 required CMS ERROR: 320 Memory failure CMS ERROR: 321 Invalid memory index CMS ERROR: 322 Memory full CMS ERROR: 330 SMSC address unknown CMS ERROR: 331 No network service CMS ERROR: 332 Network timeout CMS ERROR: 340 No +CNMA expected CMS ERROR: 500 Unknown error CMS ERROR: 512 User abort CMS ERROR: 513 Unable to store CMS ERROR: 514 Invalid Status CMS ERROR: 515 Device busy or Invalid Character in string CMS ERROR: 516 Invalid length CMS ERROR: 517 Invalid character in PDU CMS ERROR: 518 Invalid parameter CMS ERROR: 519 Invalid length or character CMS ERROR: 520 Invalid character in text CMS ERROR: 521 Timer expired CMS ERROR: 522 Operation temporary not allowed CMS ERROR: 532 SIM not ready CMS ERROR: 534 Cell Broadcast error unknown CMS ERROR: 535 Protocol stack busy CMS ERROR: 538 Invalid parameter

Page 115: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 102

Đồ án tốt nghiệp

C. CÚ PHÁP TIN NHẮN

*Tra cứu thông tin: +Điểm thi học sinh: DT_<MSHS>

DT: Từ khoá viết tắt của Điểm Thi

_: khoảng trắng

<MSHS>: Mã số học sinh: gồm 4 chữ số:

chữ số thứ nhất là khối (A=khối 12, B=khối 11, C=khối 10)

chữ số thứ 2 là lớp (1=A1, 2=A2…)

chữ số thứ 3,4 là số thứ tự của học sinh

A103: học sinh có số thứ tự 03 trong lớp 12A1

Ví dụ: DT A101; DT A203;

+Thông tin giáo viên: TT_<MSGV>

TT: Từ khoá viết tắt của Thông Tin

_: khoảng trắng

<MSGV>: Mã số giáo viên: gồm 5 chữ số:

chữ thứ 1,2 là GV: viết tắt của Giáo Viên

chữ số thứ 3 là môn dạy (T=Toán, L=Lý, H=Hoá)

chữ số thứ 4,5 là số thứ tự của giáo viên

T03: Giáo viên Toán có số thứ tự 03

Ví dụ: TT GVT01; TT GVL02;

*Điều khiển thiết bị:

+Điều khiển 1 thiết bị: *<Mật khẩu>*_ XY

<Mật khẩu>: Mật khẩu

_: khoảng trắng

X=T/M: T viết tắt của Tắt, M viết tắt của Mở

Y=D/Q: D viết tắt của Đèn, Q viết tắt của Quạt

Ví dụ: *0714* MD; *0714* TD; *0714* MQ; *0714* TQ;

+Điều khiển 2 thiết bị: *<Mật khẩu>*_ XY_XY

Page 116: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 103

Đồ án tốt nghiệp

<Mật khẩu>: Mật khẩu

_: khoảng trắng

X=T/M: T viết tắt của Tắt, M viết tắt của Mở

Y=D/Q: D viết tắt của Đèn, Q viết tắt của Quạt

Ví dụ: *0714* MD TQ; *0714* TD MQ; *0714* MQ TD;

+Điều khiển kiểm tra trạng thái thiết bị: *<Mật khẩu>*_ KT

<Mật khẩu>: Mật khẩu

_: khoảng trắng

KT: Viết tắt của Kiểm Tra

Bảng tóm tắt cú pháp tin nhắn:

Cú pháp Ghi chú Ví dụ

Tra cứu

DT_<MSHS> <MSHS>: Mã số học sinh _= Khoảng trắng

DT A101 DT A203

TTGV_<MSGV> <MSGV>: Mã số giáo viên _= Khoảng trắng

TT GVT01 TT GVL02

Điều khiển

*<Mật khẩu>*_ XY X=T/M; Y=D,Q _= Khoảng trắng

*0714*MD *0714* TD *0714* MQ *0714* TQ

*<Mật khẩu>*_XY_XY

X=T/M, Y=D/Q _= Khoảng trắng

*0714* MD TQ *0714* TD MQ

*<Mật khẩu>*_ KT Kiểm tra trạng thái thiết bị *0714* KT

Page 117: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 104

Đồ án tốt nghiệp

D. HƯỚNG DẪN KẾT NỐI VÀ SỬ DỤNG Hướng dẫn sử dụng Hệ thống tra cứu thông tin qua tin nhắn

- Cài đặt kết nối:

COM-Port : cổng COM mà GSM Modem kết nối với máy vi tính Baud rate: 9600 Timeout : 300ms Test: kiểm tra kết nối

Thông báo kết nối thành công

Click OK tại cửa sổ Conection Settings => xuất hiện màn hình chính Màn hình chính gồm 3 Tab: Message, Help: Hướng dẫn sử dụng, About: Thông tin chương trình

Trong Tab Message gồm 4 menu: Send, Send Multiple, Read, Delete

Page 118: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 105

Đồ án tốt nghiệp

Menu Send: Chức năng gửi tin với nội dung và số điện thoại cần gửi do người sử dụng nhập vào. Gồm các thành phần: Destination Number: Số điện thoại người nhận tin Nút Clear: Xóa nội dung tin nhắn đang soạn thảo Nút Send: Thực hiện gửi tin nhắn Option:

Nếu khi nhấn nút Send mà chưa kết nối với modem sẽ thông báo lỗi “No phone connected”

Page 119: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 106

Đồ án tốt nghiệp

Menu Send Multiple: Chức năng gửi thông báo cho phụ huynh hoặc giáo viên

Có thể chọn gửi theo khối, lớp, toàn bộ giáo viên, giáo viên từng bộ môn

Page 120: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 107

Đồ án tốt nghiệp

Menu Read: Chức năng đọc tất cả tin nhắn lưu trong Sim và Modem

Khi nhấn nút Read All Message thì hiển thị danh sách các tin nhắn

Nếu modem GSM chưa kết nối được với máy vi tính, nhấn Read all messages sẽ

Page 121: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 108

Đồ án tốt nghiệp

xuất hiện thông báo lỗi: ”No phone connected”

Menu Delete: Chức năng xóa tin nhắn

Nếu chưa chọn tin cần xoá mà nhấn nút xoá thì có thông báo

Nếu modem GSM chưa kết nối được với máy vi tính, nhấn Delete sẽ xuất hiện thông báo lỗi: ”No phone connected”

Page 122: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 109

Đồ án tốt nghiệp

Nếu chọn Delete All ssex có thông báo, nếu thực sự muốn xoá hết chọn Yes, không muốn xoá hết thì chọn No.

Page 123: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 110

Đồ án tốt nghiệp

E. CODE CHƯƠNG TRÌNH ĐIỀU KHIỂN THIẾT BỊ ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;KHOI TAO CAC BIEN ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CHECK BIT 00H DEN BIT P2.7 HTDEN BIT P2.6 QUAT BIT P2.4 HTQUAT BIT P2.5 NHO EQU 21H DCSODT EQU 22H DCDULIEU EQU 23H KYTU1 EQU 24H KYTU2 EQU 25H DCCUOI EQU 26H KT126 EQU 27H KTRATB EQU 28H CONTRO EQU 29H TTGUI EQU 2AH TNTLOI EQU 2BH KTGUI EQU 2CH KTULF EQU 2DH BYTEOUT EQU P1 RS BIT P2.0 RW BIT P2.1 E BIT P2.2 BF BIT P1.7 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;MAIN PROGRAM ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ORG 0000H CALL KTAO_LCD MOV SCON, #01010010B ;Che do noi tiep 1(8data, start, stop) MOV TMOD,#00100000B ;Timer1, mode 2 MOV TH1,#-3 ;Toc do Baud 9600 SETB TR1 CLR CHECK CALL TEN_DATN ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> X0: MOV KTULF,#2 CALL NHANDL ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MOV DPTR,#CMTI MOV R0,#030H CALL SOSANH JNB CHECK,X0 CALL CLR_DISP MOV CONTRO,#07FH MOV DPTR,#CO_TIN CALL WRITE CALL DELAY1S

Page 124: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 111

Đồ án tốt nghiệp

MOV DPTR,#CMGR1 MOV TTGUI,#0 CALL GUIDL ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MOV KTULF,#5 CALL NHANDL CALL LAYDC ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CALL CLR_DISP MOV CONTRO,#07FH ;HIEN THI SO DT MOV R1,DCSODT MOV A,@R1 MOV NHO,A CALL HIENTHI D1: INC R1 MOV A,@R1 MOV NHO,A CALL HIENTHI CJNE @R1,#34,D1 MOV CONTRO,#0BFH ;HIEN THI TIN NHAN MOV R1,DCDULIEU D3: MOV A,@R1 CJNE A,#13,D2 JMP TIEP D2: MOV NHO,A CALL HIENTHI INC R1 JMP D3 TIEP: MOV R0,DCDULIEU MOV DPTR,#MABAOVE CALL SOSANH ;kiem tra ma bao ve JNB CHECK,LBT ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;XU LY TIN NHAN DIEU KHIEN THIET BI ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MOV DCDULIEU,R0 MOV A,DCCUOI CLR C SUBB A,R0 CJNE A,#3,DK1 MOV R0,DCDULIEU MOV DPTR,#DKKIEMTRA CALL SOSANH JNB CHECK,DK2 JMP X3 DK2: MOV R0,DCDULIEU

Page 125: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 112

Đồ án tốt nghiệp

MOV DPTR,#DKTATHET CALL SOSANH JNB CHECK,DK3 CALL TATDEN CALL TATQUAT JMP X3 DK3: MOV R0,DCDULIEU MOV DPTR,#DKMOHET CALL SOSANH JNB CHECK,DK4 CALL MODEN CALL MOQUAT JMP X3 LBT: JMP X1 DK1: JC X2 DK4: MOV R0,DCDULIEU MOV DPTR,#DKTATDEN CALL SOSANH JNB CHECK,DK5 CALL TATDEN JMP X4 DK5: MOV R0,DCDULIEU MOV DPTR,#DKTATQUAT CALL SOSANH JNB CHECK,DK6 CALL TATQUAT JMP X4 DK6: MOV R0,DCDULIEU MOV DPTR,#DKMODEN CALL SOSANH JNB CHECK,DK7 CALL MODEN JMP X4 DK7: MOV R0,DCDULIEU MOV DPTR,#DKMOQUAT CALL SOSANH JNB CHECK,X2 CALL MOQUAT JMP X4 X1: ;BAO SAI MAT KHAU MOV TNTLOI,#51 CALL GUITN JMP XOATIN X2: ;BAO SAI CU PHAP DIEU KHIEN MOV TNTLOI,#52 CALL GUITN JMP XOATIN X3: ;BAO KET QUA DIEU KHIEN CALL KTRATBI MOV TNTLOI,KTRATB CALL GUITN

Page 126: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 113

Đồ án tốt nghiệp

JMP XOATIN X4: MOV A,DCCUOI MOV DCDULIEU,R0 CLR C SUBB A,R0 CJNE A,#0,DK4 JMP X3 XOATIN: MOV KTULF,#4 CALL NHANDL CALL DELAY20MS MOV DPTR,#CMGD1 MOV TTGUI,#0 CALL GUIDL JMP X0 ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;CT CON HIEN THI TEN DATN TEN_DATN: CALL CLR_DISP MOV A,#80H CALL MADK MOV DPTR,#DKTB1 CALL WRITE MOV A,#0C0H CALL MADK MOV DPTR,#DKTB2 CALL WRITE RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; NHAN DU LIEU ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> NHANDL: MOV R1,#0 MOV R0,#30H NH0: JNB RI,$ MOV A,SBUF CJNE A,#0AH,NH1 ;kiem tra co nhan ky tu Line Feed hay ko? CLR RI INC R1 MOV A,R1 CJNE A,KTULF,NH0 JMP NH2 NH1: CJNE R0,#126,NH3 MOV KT126,A NH3: MOV @R0,A INC R0 CLR RI JMP NH0 NH2: CLR RI

Page 127: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 114

Đồ án tốt nghiệp

MOV DCCUOI,R0 RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;GUI DU LIEU ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> GUIDL: GUI0: JNB TI,$ MOV A,TTGUI MOVC A,@A+DPTR ;gan dl gui vao thanh ghi A INC TTGUI ;tang de gui ky tu ke tiep CJNE A,#35,GUI1 ;35 LA MA ASCII CUA KY TU # JMP GUI2 GUI1: CLR TI MOV SBUF,A ;chep dl tu A vao SBUF de gui CALL DELAY20MS JMP GUI0 GUI2: CLR RI RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;GUI KY TU ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> GUIKT: JNB TI,$ CLR TI MOV SBUF,KTGUI MOV A,KTGUI CALL DELAY20MS CLR RI RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;LAY DIA CHI ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> LAYDC: MOV R0,#31H LAY0: CJNE @R0,#34,LAY2 INC R0 CJNE @R0,#43,LAY0 DEC R0 MOV DCSODT,R0 LAY1: INC R0 JMP LAY0 LAY2: CJNE @R0,#13,LAY1 INC R0 MOV DCDULIEU,R0 LAY3: INC R0 CJNE @R0,#13,LAY3

Page 128: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 115

Đồ án tốt nghiệp

MOV DCCUOI,R0 RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;SO SANH ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SOSANH: MOV KYTU2,#0 SS0: MOV A,KYTU2 MOVC A,@A+DPTR CJNE A,#35,SS3 ;35 LA MA ASCII CUA KY TU # JMP SS1 SS3: MOV KYTU1,@R0 CJNE A,KYTU1,SS2 INC R0 INC KYTU2 JMP SS0 SS1: SETB CHECK RET SS2: CLR CHECK RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;DIEU KHIEN THIET BI ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MODEN: CLR DEN CALL DELAY1MS JNB HTDEN,MOD1 RET MOD1: SETB DEN RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TATDEN: SETB DEN CALL DELAY1MS JB HTDEN,TATD1 RET TATD1: CLR DEN RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MOQUAT: CLR QUAT CALL DELAY10MS JNB HTQUAT,MOQ1 RET MOQ1: SETB QUAT RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> TATQUAT:

Page 129: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 116

Đồ án tốt nghiệp

SETB QUAT CALL DELAY10MS JB HTQUAT,TATQ1 RET TATQ1: CLR QUAT RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;KIEM TRA THIET BI ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> KTRATBI: JNB HTDEN,KTRA1 JMP KTRA3 KTRA1: JB HTQUAT,KTRA2 MOV KTRATB,#53 RET KTRA2: MOV KTRATB,#54 RET KTRA3: JB HTQUAT,KTRA4

MOV KTRATB,#55 RET KTRA4: MOV KTRATB,#56 RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;GUI TIN NHAN TRA LOI ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> GUITN: MOV DPTR,#CMSS MOV TTGUI,#0 CALL GUIDL MOV KTGUI,TNTLOI CALL GUIKT MOV KTGUI,#44 ;GUI DAU PHAY "," CALL GUIKT MOV R1,DCSODT MOV KTGUI,@R1 CALL GUIKT TN1: INC R1 MOV KTGUI,@R1 CALL GUIKT CJNE @R1,#34,TN1 MOV KTGUI,#13 ;GUI KY TU ENTER (CARRIAGE RETURN)

Page 130: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 117

Đồ án tốt nghiệp

CALL GUIKT RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;CT CON KHOI TAO LCD KTAO_LCD: CALL DELAY40ms ;DELAY CHO ON DINH NGUON LCD MOV A,#38H ;2 LINE, 5x8, 8BIT CALL MADK ;GHI LENH RA LCD, CALL DELAY4ms ;MA LENH NAM TRONG THANH GHI A MOV A,#38H CALL MADK CALL DELAY120US MOV A,#38H CALL MADK MOV A,#0CH ;HIEN THI CON TRO, KO NHAY CALL MADK MOV A,#06H ;TANG AC MOI LAN DOC GHI DDRAM, CALL MADK ; KO DICH ND CLR_DISP: MOV A,#01H ;XOA MAN HINH LCD CALL MADK RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> WRITE: MOV R5,#0 WRITEX: MOV R4,#17 ;DO LCD 16x2 CHI CO 16 COT WRITEXX: ;MOI LAN HIEN THI LA 16 KTU MOV A,R5 MOVC A,@A+DPTR DJNZ R4,WRT RET WRT: CALL MADL ;GHI DU LIEU RA LCD INC DPTR JMP WRITEXX ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;chuong trinh con hien thi LCD ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> HIENTHI: INC CONTRO MOV A,CONTRO CJNE A,#090H,KTRA MOV CONTRO,#0C0H JMP HTHI KTRA: CJNE A,#0D0H,HTHI MOV CONTRO,#0CFH RET HTHI: MOV A,CONTRO CALL MADK

Page 131: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 118

Đồ án tốt nghiệp

CALL DELAY10MS MOV A,NHO CALL MADL CALL DELAY10MS RET MADK: CALL KT_BF CLR RS CLR RW SETB E MOV BYTEOUT,A CLR E RET MADL: CALL KT_BF SETB RS CLR RW SETB E MOV BYTEOUT,A CLR E RET ;CT CON KIEM TRA CO BAN BF KT_BF: CLR RS SETB RW MOV BYTEOUT,#0FFH RE_KT: CLR E SETB E JB BF,RE_KT RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;CT CON DELAY VOI Tosc=1US DELAY120US: MOV R7,#60 DJNZ R7,$ RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DELAY1MS: ;DUNG CHO KHOI TAO LCD MOV R7,#2 DE1: MOV R6,#250 DJNZ R6,$ DJNZ R7,DE1 RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DELAY4MS: ;DUNG CHO KHOI TAO LCD MOV R7,#8 DE4: MOV R6,#250 DJNZ R6,$ DJNZ R7,DE4

Page 132: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 119

Đồ án tốt nghiệp

RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;CHUONG TRINH CON DELAY 10 MILI GIAY DELAY10MS: MOV R7,#20 DEL10MS: MOV R6,#250 DJNZ R6,$ DJNZ R7,DEL10MS RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DELAY20MS: MOV R7,#40 DE20: MOV R6,#250 DJNZ R6,$ DJNZ R7,DE20 RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> DELAY40MS: ;DUNG CHO KHOI TAO LCD MOV R7,#80 DE40: MOV R6,#250 DJNZ R6,$ DJNZ R7,DE40 RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;CHUONG TRINH CON DELAY 50 MILI GIAY DELAY50MS: MOV 7EH,#100 DEL50MS: MOV 7FH,#250 DJNZ 7FH,$ DJNZ 7EH,DEL50MS RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;CHUONG TRINH CON DELAY 100MS DELAY100MS: MOV 7DH,#2 DEL100MS: CALL DELAY50MS DJNZ 7DH,DEL100MS RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;CHUONG TRINH CON DELAY 500MS DELAY500MS: MOV 7DH,#10 DEL500MS: CALL DELAY50MS DJNZ 7DH,DEL100MS RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;CHUONG TRINH CON DELAY 1 GIAY DELAY1S :

Page 133: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 120

Đồ án tốt nghiệp

MOV 7DH,#20 DEL1S: CALL DELAY50MS DJNZ 7DH,DEL1S RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> CMTI: DB 13,'+CMTI:','#' CMGR1: DB 'AT+CMGR=1',0DH,'#' CMGD1: DB 'AT+CMGD=1',0DH,'#' CMSS: DB 'AT+CMSS=','#' MABAOVE: DB '*0714*','#' DKMOHET: DB ' MH','#' DKTATHET: DB ' TH','#' DKMODEN: DB ' MD','#' DKMOQUAT: DB ' MQ','#' DKTATDEN: DB ' TD','#' DKTATQUAT: DB ' TQ','#' DKKIEMTRA: DB ' KT','#' CO_TIN: DB 'CO TIN NHAN! ' DKTB1: DB 'DIEU KHIEN THIET' DKTB2: DB 'BI DIEN QUA SMS ' ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> END

Page 134: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 121

Đồ án tốt nghiệp

F. CODE CHƯƠNG TRÌNH TRA CỨU

1. Connection settings

using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using GsmComm.GsmCommunication; namespace SMS { ///<summary> /// Summary description for frmConnection. ///</summary> publicclassfrmConnection : System.Windows.Forms.Form { private System.Windows.Forms.Label lblTimeout; private System.Windows.Forms.Label lblBaudRate; private System.Windows.Forms.ComboBox cboTimeout; private System.Windows.Forms.Label lblPort; private System.Windows.Forms.ComboBox cboPort; private System.Windows.Forms.ComboBox cboBaudRate; private System.Windows.Forms.Button btnOK; private System.Windows.Forms.Button btnCancel; private System.Windows.Forms.Button btnTest; ///<summary> /// Required designer variable. ///</summary> private System.ComponentModel.Container components = null; privateint port; privateint baudRate; privateint timeout; public frmConnection() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } ///<summary> /// Clean up any resources being used. ///</summary> protectedoverridevoid Dispose( bool disposing )

Page 135: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 122

Đồ án tốt nghiệp

{ if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code ///<summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. ///</summary> privatevoid InitializeComponent() { this.lblTimeout = new System.Windows.Forms.Label(); this.lblBaudRate = new System.Windows.Forms.Label(); this.cboTimeout = new System.Windows.Forms.ComboBox(); this.lblPort = new System.Windows.Forms.Label(); this.cboPort = new System.Windows.Forms.ComboBox(); this.cboBaudRate = new System.Windows.Forms.ComboBox(); this.btnOK = new System.Windows.Forms.Button(); this.btnCancel = new System.Windows.Forms.Button(); this.btnTest = new System.Windows.Forms.Button(); this.SuspendLayout(); // // lblTimeout // this.lblTimeout.Location = new System.Drawing.Point(33, 64); this.lblTimeout.Name = "lblTimeout"; this.lblTimeout.Size = new System.Drawing.Size(100, 23); this.lblTimeout.TabIndex = 4; this.lblTimeout.Text = "Ti&meout (ms):"; this.lblTimeout.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // lblBaudRate // this.lblBaudRate.Location = new System.Drawing.Point(33, 40); this.lblBaudRate.Name = "lblBaudRate"; this.lblBaudRate.Size = new System.Drawing.Size(100, 23); this.lblBaudRate.TabIndex = 2; this.lblBaudRate.Text = "&Baud rate:"; this.lblBaudRate.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // cboTimeout // this.cboTimeout.Location = new System.Drawing.Point(145, 64); this.cboTimeout.Name = "cboTimeout"; this.cboTimeout.Size = new System.Drawing.Size(104, 21); this.cboTimeout.TabIndex = 5; // // lblPort // this.lblPort.Location = new System.Drawing.Point(33, 16); this.lblPort.Name = "lblPort"; this.lblPort.Size = new System.Drawing.Size(88, 23); this.lblPort.TabIndex = 0; this.lblPort.Text = "&COM-Port:"; this.lblPort.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // cboPort //

Page 136: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 123

Đồ án tốt nghiệp

this.cboPort.Location = new System.Drawing.Point(145, 16); this.cboPort.Name = "cboPort"; this.cboPort.Size = new System.Drawing.Size(104, 21); this.cboPort.TabIndex = 1; // // cboBaudRate // this.cboBaudRate.Location = new System.Drawing.Point(145, 40); this.cboBaudRate.Name = "cboBaudRate"; this.cboBaudRate.Size = new System.Drawing.Size(104, 21); this.cboBaudRate.TabIndex = 3; // // btnOK // this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; this.btnOK.FlatStyle = System.Windows.Forms.FlatStyle.System; this.btnOK.Location = new System.Drawing.Point(104, 112); this.btnOK.Name = "btnOK"; this.btnOK.Size = new System.Drawing.Size(75, 23); this.btnOK.TabIndex = 7; this.btnOK.Text = "OK"; this.btnOK.Click += new System.EventHandler(this.btnOK_Click); // // btnCancel // this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.btnCancel.FlatStyle = System.Windows.Forms.FlatStyle.System; this.btnCancel.Location = new System.Drawing.Point(192, 112); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(75, 23); this.btnCancel.TabIndex = 8; this.btnCancel.Text = "Cancel"; // // btnTest // this.btnTest.FlatStyle = System.Windows.Forms.FlatStyle.System; this.btnTest.Location = new System.Drawing.Point(16, 112); this.btnTest.Name = "btnTest"; this.btnTest.Size = new System.Drawing.Size(75, 23); this.btnTest.TabIndex = 6; this.btnTest.Text = "&Test"; this.btnTest.Click += new System.EventHandler(this.btnTest_Click); // // frmConnection // this.AcceptButton = this.btnOK; this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.CancelButton = this.btnCancel; this.ClientSize = new System.Drawing.Size(282, 152); this.Controls.Add(this.btnTest); this.Controls.Add(this.btnCancel); this.Controls.Add(this.btnOK); this.Controls.Add(this.lblTimeout); this.Controls.Add(this.lblBaudRate); this.Controls.Add(this.cboTimeout); this.Controls.Add(this.lblPort); this.Controls.Add(this.cboPort); this.Controls.Add(this.cboBaudRate); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "frmConnection"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Text = "Connection settings"; this.Load += new System.EventHandler(this.frmConnection_Load); this.ResumeLayout(false);

Page 137: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 124

Đồ án tốt nghiệp

} #endregion publicvoid SetData(int port, int baudRate, int timeout) { this.port = port; this.baudRate = baudRate; this.timeout = timeout; } publicvoid GetData(outint port, outint baudRate, outint timeout) { port = this.port; baudRate = this.baudRate; timeout = this.timeout; } privatebool EnterNewSettings() { int newPort; int newBaudRate; int newTimeout; try { newPort = int.Parse(cboPort.Text); } catch(Exception) { MessageBox.Show(this, "Invalid port number.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); cboPort.Focus(); returnfalse; } try { newBaudRate = int.Parse(cboBaudRate.Text); } catch(Exception) { MessageBox.Show(this, "Invalid baud rate.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); cboBaudRate.Focus(); returnfalse; } try { newTimeout = int.Parse(cboTimeout.Text); } catch(Exception) { MessageBox.Show(this, "Invalid timeout value.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); cboTimeout.Focus(); returnfalse; } SetData(newPort,newBaudRate,newTimeout); returntrue; } privatevoid btnOK_Click(object sender, System.EventArgs e) { if (!EnterNewSettings()) DialogResult = DialogResult.None; } privatevoid frmConnection_Load(object sender, System.EventArgs e) { cboPort.Items.Add("1"); cboPort.Items.Add("2");

Page 138: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 125

Đồ án tốt nghiệp

cboPort.Items.Add("3"); cboPort.Items.Add("4"); cboPort.Items.Add("5"); cboPort.Items.Add("6"); cboPort.Items.Add("7"); cboPort.Items.Add("8"); cboPort.Items.Add("9"); cboPort.Items.Add("10"); cboPort.Items.Add("11"); cboPort.Items.Add("12"); cboPort.Items.Add("13"); cboPort.Items.Add("14"); cboPort.Items.Add("15"); cboPort.Items.Add("16"); cboPort.Items.Add("17"); cboPort.Items.Add("18"); cboPort.Items.Add("19"); cboPort.SelectedIndex = 6;//PORT 7 cboPort.Text = port.ToString(); cboBaudRate.Items.Add("9600"); cboBaudRate.Items.Add("19200"); cboBaudRate.Items.Add("38400"); cboBaudRate.Items.Add("57600"); cboBaudRate.Items.Add("115200"); cboBaudRate.SelectedIndex = 0; //9600 cboBaudRate.Text = baudRate.ToString(); cboTimeout.Items.Add("150"); cboTimeout.Items.Add("300"); cboTimeout.Items.Add("600"); cboTimeout.Items.Add("900"); cboTimeout.Items.Add("1200"); cboTimeout.Items.Add("1500"); cboTimeout.Items.Add("1800"); cboTimeout.Items.Add("2000"); cboTimeout.SelectedIndex = 1; cboTimeout.Text = timeout.ToString(); } privatevoid btnTest_Click(object sender, System.EventArgs e) { if (!EnterNewSettings()) return; Cursor.Current = Cursors.WaitCursor; GsmCommMain comm = newGsmCommMain(port, baudRate, timeout); try { comm.Open(); while (!comm.IsConnected()) { Cursor.Current = Cursors.Default; if (MessageBox.Show(this, "No phone connected.", "Connection setup", MessageBoxButtons.RetryCancel, MessageBoxIcon.Exclamation) == DialogResult.Cancel) { comm.Close(); return; } Cursor.Current = Cursors.WaitCursor; } comm.Close(); }

Page 139: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 126

Đồ án tốt nghiệp

catch(Exception ex) { MessageBox.Show(this, "Connection error: " + ex.Message, "Connection setup", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } MessageBox.Show(this, "Successfully connected to the phone.", "Connection setup", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }

2. SMS Server

using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using GsmComm.Interfaces; using GsmComm.GsmCommunication; using GsmComm.PduConverter; using System.Threading; //using System.Runtime.Remoting.Channels; //using GsmComm.PduConverter.SmartMessaging; using GsmComm.Server; using System.Data.OleDb; namespace SMS { ///<summary> /// Summary description for Form1. ///</summary>

Page 140: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 127

Đồ án tốt nghiệp

publicclassForm1 : System.Windows.Forms.Form { private System.Windows.Forms.Label lbl_phone_status; private System.Windows.Forms.TextBox txtOutput; private System.Windows.Forms.Label label1; privatedelegatevoidSetTextCallback(string text); privateCommSetting comm_settings = newCommSetting(); //private bool registerMessageReceived = true; string xNumber, noidungTN; string NoiDungTra; string xMessage; int index; privateDataSet dataSet1; privatePictureBox pictureBox1; privateMenuStrip menuStrip1; privateToolStripMenuItem messageToolStripMenuItem; privateToolStripMenuItem sendToolStripMenuItem; privateToolStripMenuItem sendMultipleToolStripMenuItem; privateToolStripMenuItem readToolStripMenuItem; privateToolStripMenuItem deleteToolStripMenuItem; privateToolStripMenuItem aboutToolStripMenuItem; privatePictureBox pictureBox2; private System.ComponentModel.Container components = null; public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } ///<summary> /// Clean up any resources being used. ///</summary> protectedoverridevoid Dispose(bool disposing) { if (disposing) { if (components != null) { components.Dispose(); } } base.Dispose(disposing); } #region Windows Form Designer generated code ///<summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. ///</summary> privatevoid InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); this.lbl_phone_status = new System.Windows.Forms.Label(); this.txtOutput = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.dataSet1 = new System.Data.DataSet(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.menuStrip1 = new System.Windows.Forms.MenuStrip();

Page 141: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 128

Đồ án tốt nghiệp

this.messageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.sendToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.sendMultipleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.readToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.pictureBox2 = new System.Windows.Forms.PictureBox(); ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.menuStrip1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); this.SuspendLayout(); // // lbl_phone_status // this.lbl_phone_status.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.lbl_phone_status.BackColor = System.Drawing.Color.White; this.lbl_phone_status.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; this.lbl_phone_status.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.lbl_phone_status.ForeColor = System.Drawing.Color.Red; this.lbl_phone_status.Location = new System.Drawing.Point(282, 432); this.lbl_phone_status.Name = "lbl_phone_status"; this.lbl_phone_status.Size = new System.Drawing.Size(196, 23); this.lbl_phone_status.TabIndex = 54; this.lbl_phone_status.Text = "NO PHONE CONNECTED"; this.lbl_phone_status.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.lbl_phone_status.UseMnemonic = false; // // txtOutput // this.txtOutput.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.txtOutput.Location = new System.Drawing.Point(37, 162); this.txtOutput.Multiline = true; this.txtOutput.Name = "txtOutput"; this.txtOutput.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; this.txtOutput.Size = new System.Drawing.Size(467, 236); this.txtOutput.TabIndex = 55; // // label1 // this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label1.Location = new System.Drawing.Point(34, 135); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(104, 24); this.label1.TabIndex = 56; this.label1.Text = "Received SMS :"; // // dataSet1 // this.dataSet1.DataSetName = "NewDataSet"; //

Page 142: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 129

Đồ án tốt nghiệp

// pictureBox1 // this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Top; this.pictureBox1.ErrorImage = null; this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); this.pictureBox1.InitialImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.InitialImage"))); this.pictureBox1.Location = new System.Drawing.Point(0, 0); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(504, 59); this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; this.pictureBox1.TabIndex = 58; this.pictureBox1.TabStop = false; // // menuStrip1 // this.menuStrip1.Anchor = System.Windows.Forms.AnchorStyles.Left; this.menuStrip1.BackColor = System.Drawing.SystemColors.ScrollBar; this.menuStrip1.Dock = System.Windows.Forms.DockStyle.None; this.menuStrip1.Font = new System.Drawing.Font("Segoe UI", 9F); this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.messageToolStripMenuItem, this.aboutToolStripMenuItem}); this.menuStrip1.Location = new System.Drawing.Point(0, 62); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Size = new System.Drawing.Size(125, 24); this.menuStrip1.TabIndex = 59; this.menuStrip1.Text = "menuStrip1"; // // messageToolStripMenuItem // this.messageToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.sendToolStripMenuItem, this.sendMultipleToolStripMenuItem, this.readToolStripMenuItem, this.deleteToolStripMenuItem}); this.messageToolStripMenuItem.Name = "messageToolStripMenuItem"; this.messageToolStripMenuItem.Size = new System.Drawing.Size(65, 20); this.messageToolStripMenuItem.Text = "Message"; // // sendToolStripMenuItem // this.sendToolStripMenuItem.Name = "sendToolStripMenuItem"; this.sendToolStripMenuItem.Size = new System.Drawing.Size(147, 22); this.sendToolStripMenuItem.Text = "Send"; this.sendToolStripMenuItem.Click += new System.EventHandler(this.sendToolStripMenuItem_Click); // // sendMultipleToolStripMenuItem // this.sendMultipleToolStripMenuItem.Name = "sendMultipleToolStripMenuItem"; this.sendMultipleToolStripMenuItem.Size = new System.Drawing.Size(147, 22); this.sendMultipleToolStripMenuItem.Text = "Send Multiple"; this.sendMultipleToolStripMenuItem.Click += new System.EventHandler(this.sendMultipleToolStripMenuItem_Click); // // readToolStripMenuItem // this.readToolStripMenuItem.Name = "readToolStripMenuItem"; this.readToolStripMenuItem.Size = new System.Drawing.Size(147, 22); this.readToolStripMenuItem.Text = "Read"; this.readToolStripMenuItem.Click += new System.EventHandler(this.readToolStripMenuItem_Click);

Page 143: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 130

Đồ án tốt nghiệp

// // deleteToolStripMenuItem // this.deleteToolStripMenuItem.Name = "deleteToolStripMenuItem"; this.deleteToolStripMenuItem.Size = new System.Drawing.Size(147, 22); this.deleteToolStripMenuItem.Text = "Delete"; this.deleteToolStripMenuItem.Click += new System.EventHandler(this.deleteToolStripMenuItem_Click); // // aboutToolStripMenuItem // this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; this.aboutToolStripMenuItem.Size = new System.Drawing.Size(52, 20); this.aboutToolStripMenuItem.Text = "About"; this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); // // pictureBox2 // this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image"))); this.pictureBox2.Location = new System.Drawing.Point(255, 61); this.pictureBox2.Name = "pictureBox2"; this.pictureBox2.Size = new System.Drawing.Size(249, 88); this.pictureBox2.TabIndex = 60; this.pictureBox2.TabStop = false; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(6, 13); this.BackColor = System.Drawing.SystemColors.Control; this.ClientSize = new System.Drawing.Size(504, 478); this.Controls.Add(this.pictureBox2); this.Controls.Add(this.pictureBox1); this.Controls.Add(this.label1); this.Controls.Add(this.txtOutput); this.Controls.Add(this.lbl_phone_status); this.Controls.Add(this.menuStrip1); this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.Name = "Form1"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "SMS Server"; this.Load += new System.EventHandler(this.Form1_Load); this.Closing += new System.ComponentModel.CancelEventHandler(this.Form1_Closing); ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.menuStrip1.ResumeLayout(false); this.menuStrip1.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); } #endregion ///<summary> /// The main entry point for the application. ///</summary> [STAThread] staticvoid Main() {

Page 144: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 131

Đồ án tốt nghiệp

Application.Run(newForm1()); } privatevoid Form1_Load(object sender, System.EventArgs e) { // Prompt user for connection settings int port = GsmCommMain.DefaultPortNumber; int baudRate = 9600; // We Set 9600 as our Default Baud Rate int timeout = GsmCommMain.DefaultTimeout; PortAccess.Output(888, 0); frmConnection dlg = newfrmConnection(); dlg.StartPosition = FormStartPosition.CenterScreen; dlg.SetData(port, baudRate, timeout); if (dlg.ShowDialog(this) == DialogResult.OK) { dlg.GetData(out port, out baudRate, out timeout); CommSetting.Comm_Port = port; CommSetting.Comm_BaudRate = baudRate; CommSetting.Comm_TimeOut = timeout; } else { Close(); return; } Cursor.Current = Cursors.WaitCursor; CommSetting.comm = newGsmCommMain(port, baudRate, timeout); Cursor.Current = Cursors.Default; CommSetting.comm.PhoneConnected += newEventHandler(comm_PhoneConnected); //thông báo khi có tin nhắn mới CommSetting.comm.MessageReceived += newMessageReceivedEventHandler(comm_MessageReceived); //comm.MessageReceived += new MessageReceivedEventHandler(comm_MessageReceived) //CommSetting.comm.EnableMessageNotifications(); //CommSetting.comm.EnableMessageNotifications(); //CommSetting.comm.EnableMessageRouting(); Output("Message notifications activated."); Output(""); Cursor.Current = Cursors.Default; bool retry; do { retry = false; try { Cursor.Current = Cursors.WaitCursor; CommSetting.comm.Open(); Cursor.Current = Cursors.Default; } catch (Exception) { Cursor.Current = Cursors.Default; if (MessageBox.Show(this, "Unable to open the port.", "Error", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning) == DialogResult.Retry) retry = true; else { Close(); return; }

Page 145: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 132

Đồ án tốt nghiệp

} } while (retry); } privatedelegatevoidConnectedHandler(bool connected); privatevoid OnPhoneConnectionChange(bool connected) { lbl_phone_status.Text = "CONNECTED"; } privatevoid comm_MessageReceived(object sender, GsmComm.GsmCommunication.MessageReceivedEventArgs e) { Cursor.Current = Cursors.WaitCursor; try { IMessageIndicationObject obj = e.IndicationObject; MemoryLocation loc = (MemoryLocation)obj; //Output(string.Format("New message received in storage \"{0}\", index {1}.", // loc.Storage, loc.Index)); index = loc.Index; } catch (Exception E) { MessageBox.Show("Error occured: " + E.Message); } MessageReceived(); XuLyTinNhan(); GuiTinTraLoi(); noidungTN = ""; DecodedShortMessage[] msgs = CommSetting.comm.ReadMessages(PhoneMessageStatus.ReceivedUnread, PhoneStorageType.Sim); foreach (DecodedShortMessage msg in msgs) { Output(string.Format("Message status = {0}, Location = {1}/{2}", StatusToString(msg.Status), msg.Storage, msg.Index)); ShowMessage(msg.Data); Output(""); if (!(noidungTN == "")) { XuLyTinNhan(); GuiTinTraLoi(); } } Cursor.Current = Cursors.Default; } privatevoid MessageReceived() { DecodedShortMessage message = CommSetting.comm.ReadMessage(index, PhoneStorageType.Sim); Output(string.Format("Message status = {0}, Location = {1}/{2}", StatusToString(message.Status), message.Storage, message.Index)); ShowMessage(message.Data); SmsDeliverPdu data = (SmsDeliverPdu)message.Data; xNumber = data.OriginatingAddress; noidungTN = data.UserDataText; } privatevoid XuLyTinNhan() { if (noidungTN.Length>=4) {

Page 146: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 133

Đồ án tốt nghiệp

string noidung = noidungTN.Substring(0,3); string TTGV = noidungTN.Substring(0,5); if (noidung == "DT " || TTGV=="TT GV") { if (noidung == "DT ") { TraDatabaseHS(); } if (TTGV=="TT GV") { TraDatabaseGV(); } } else { xMessage = "Cu phap khong dung!"; } } else { xMessage = "Cu phap khong dung!"; } } ///<summary> /// Tra database lấy du lieu. ///</summary> privatevoid TraDatabaseHS() { NoiDungTra = noidungTN.Substring(3, 4); string conString = @"Provider=Microsoft.JET.OLEDB.4.0;" + @"data source=D:\DATA.mdb"; OleDbConnection conn = newOleDbConnection(conString); try { // create an open the connection conn.Open(); // create the adapter and fill the DataSet OleDbDataAdapter adapter1 = newOleDbDataAdapter("SELECT MSHS, Name, Toan, Ly, Hoa FROM Pupils WHERE MSHS = \'" + NoiDungTra + "\'", conn); dataSet1.Clear(); int numberOfRowsFeched = adapter1.Fill(dataSet1, "Pupils"); if (numberOfRowsFeched > 0) { DataTable dt = dataSet1.Tables["Pupils"]; xMessage = "MSHS:" + " " + dt.Rows[0][0] + ", " + dt.Rows[0][1] + ": Toan: " + dt.Rows[0][2].ToString() + ", Ly: " + dt.Rows[0][3].ToString() + ", Hoa: " + dt.Rows[0][4].ToString(); } else { xMessage = "ID not found."; } } catch (Exception E) { MessageBox.Show("Error occured: " + E.Message); } finally { conn.Close(); }

Page 147: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 134

Đồ án tốt nghiệp

} privatevoid TraDatabaseGV() { NoiDungTra = noidungTN.Substring(3, 5); string conString = @"Provider=Microsoft.JET.OLEDB.4.0;" + @"data source=D:\DATA.mdb"; OleDbConnection conn = newOleDbConnection(conString); try { // create an open the connection conn.Open(); // create the adapter and fill the DataSet OleDbDataAdapter adapter1 = newOleDbDataAdapter("SELECT MSGV, Name, HocVi, Mobile, Email FROM Teachers WHERE MSGV = \'" + NoiDungTra + "\'", conn); dataSet1.Clear(); int numberOfRowsFeched = adapter1.Fill(dataSet1, "Teachers"); if (numberOfRowsFeched > 0) { DataTable dt = dataSet1.Tables["Teachers"]; xMessage = "MSGV:" + dt.Rows[0][0] + ", " + dt.Rows[0][1] + ", Hoc vi: " + dt.Rows[0][2] + ", Mobile: " + dt.Rows[0][3] + ", Email: " + dt.Rows[0][4]; } else { xMessage = "ID not found."; } } catch (Exception E) { MessageBox.Show("Error occured: " + E.Message); } finally { conn.Close(); } } ///<summary> /// Gửi tin nhắn trả lời. ///</summary> privatevoid GuiTinTraLoi() { try { // Send an SMS message SmsSubmitPdu pdu; string smsc = "+84900000022"; pdu = newSmsSubmitPdu(xMessage, xNumber, smsc); CommSetting.comm.SendMessage(pdu); Output("1 Message sent to " + xNumber); Output(""); if (index == 10) { int index_del; index_del = 1; // Delete the message with the specified index from storage CommSetting.comm.DeleteMessage(index_del, PhoneStorageType.Sim); index_del = 2; // Delete the message with the specified index from storage CommSetting.comm.DeleteMessage(index_del, PhoneStorageType.Sim); index_del = 9;

Page 148: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 135

Đồ án tốt nghiệp

// Delete the message with the specified index from storage CommSetting.comm.DeleteMessage(index_del, PhoneStorageType.Sim); index_del = 10; // Delete the message with the specified index from storage CommSetting.comm.DeleteMessage(index_del, PhoneStorageType.Sim); //MessageBox.Show("Message With Index " + index_del + " Deleted", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); } //} } catch (Exception ex) { MessageBox.Show(ex.Message); } } privatevoid comm_PhoneConnected(object sender, EventArgs e) { this.Invoke(newConnectedHandler(OnPhoneConnectionChange), newobject[] { true }); } privatestring StatusToString(PhoneMessageStatus status) { // Map a message status to a string string ret; switch (status) { casePhoneMessageStatus.All: ret = "All"; break; casePhoneMessageStatus.ReceivedRead: ret = "Read"; break; casePhoneMessageStatus.ReceivedUnread: ret = "Unread"; break; casePhoneMessageStatus.StoredSent: ret = "Sent"; break; casePhoneMessageStatus.StoredUnsent: ret = "Unsent"; break; default: ret = "Unknown (" + status.ToString() + ")"; break; } return ret; } privatevoid Output(string text) { if (this.txtOutput.InvokeRequired) { SetTextCallback stc = newSetTextCallback(Output); this.Invoke(stc, newobject[] { text }); } else { txtOutput.AppendText(text); txtOutput.AppendText("\r\n"); } }

Page 149: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 136

Đồ án tốt nghiệp

privatevoid ShowMessage(SmsPdu pdu) { if (pdu isSmsSubmitPdu) { // Stored (sent/unsent) message SmsSubmitPdu data = (SmsSubmitPdu)pdu; Output("SENT/UNSENT MESSAGE"); Output("Recipient: " + data.DestinationAddress); Output("Message text: " + data.UserDataText); Output("-----------------------); return; } if (pdu isSmsDeliverPdu) { // Received message SmsDeliverPdu data = (SmsDeliverPdu)pdu; Output("RECEIVED MESSAGE"); Output("Sender: " + data.OriginatingAddress); Output("Sent: " + data.SCTimestamp.ToString()); Output("Message text: " + data.UserDataText); xNumber = data.OriginatingAddress; noidungTN = data.UserDataText; Output("-----------------------------------------"); return; } if (pdu isSmsStatusReportPdu) { // Status report SmsStatusReportPdu data = (SmsStatusReportPdu)pdu; Output("STATUS REPORT"); Output("Recipient: " + data.RecipientAddress); Output("Status: " + data.Status.ToString()); Output("Timestamp: " + data.DischargeTime.ToString()); Output("Message ref: " + data.MessageReference.ToString()); Output("-----------------------------------------"); return; } Output("Unknown message type: " + pdu.GetType().ToString()); } privatevoid mnu_send_click(object sender, System.EventArgs e) { Send send_sms = newSend(); send_sms.Show(); } privatevoid mnu_read_click(object sender, System.EventArgs e) { Receive receice_sms = newReceive(); receice_sms.Show(); } privatevoid Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e) { // Clean up comm object if (CommSetting.comm != null) { // Unregister events CommSetting.comm.PhoneConnected -= newEventHandler(comm_PhoneConnected); CommSetting.comm.MessageReceived -= newMessageReceivedEventHandler(comm_MessageReceived); // Close connection to phone

Page 150: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 137

Đồ án tốt nghiệp

if (CommSetting.comm != null&&CommSetting.comm.IsOpen()) CommSetting.comm.Close(); CommSetting.comm = null; } } publicvoid ExitApplication() { // Display a message box asking users if they // want to exit the application. if (MessageBox.Show("Do you want to exit?", "My Application", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { Application.Exit(); } } privatevoid aboutToolStripMenuItem1_Click(object sender, EventArgs e) { MessageBox.Show("Trường Đại học Sư phạm Kỹ thuật TPHCM\nKhoa Điện - Điện tử\nĐồ án tốt nghiệp ngành Điện tử viễn thông\n'Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn SMS'\nGiáo viên hướng dẫn: ThS. Đinh Quốc Hùng\nSinh viên thực hiện: Lưu Văn Đại, Trần Hoàng Lê Chuyên\nTháng 1 năm 2011\nContact Us: [email protected]", "About", MessageBoxButtons.OK, MessageBoxIcon.Information); } privatevoid sendToolStripMenuItem_Click(object sender, EventArgs e) { Send send_sms = newSend(); send_sms.Show(); } privatevoid sendMultipleToolStripMenuItem_Click(object sender, EventArgs e) { SendMulti sendMulti_sms = newSendMulti(); sendMulti_sms.Show(); } privatevoid readToolStripMenuItem_Click(object sender, EventArgs e) { Receive receice_sms = newReceive(); receice_sms.Show(); } privatevoid deleteToolStripMenuItem_Click(object sender, EventArgs e) { Delete delete = newDelete(); delete.Show(); } privatevoid aboutToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show("Trường Đại học Sư phạm Kỹ thuật TPHCM\nKhoa Điện - Điện tử\nĐồ án tốt nghiệp ngành Điện tử viễn thông\n'Tra cứu thông tin và Điều khiển thiết bị điện qua tin nhắn SMS'\nGiáo viên hướng dẫn: ThS. Đinh Quốc Hùng\nSinh viên thực hiện: Lưu Văn Đại, Trần Hoàng Lê Chuyên\nTháng 1 năm 2011\nContact Us: [email protected]", "About", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }

3. Send Multiple SMS

Page 151: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 138

Đồ án tốt nghiệp

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Collections; using GsmComm.PduConverter; using GsmComm.GsmCommunication; namespace SMS { publicpartialclassSendMulti : Form { privatedelegatevoidSetTextCallback(string text); string timlop, xNumber, xlop, ten, lop; int numberOfRowsFeched; DataTable dt; public SendMulti() { InitializeComponent(); cmbk12.Items.Add("12A1"); cmbk12.Items.Add("12A2"); cmbk12.Items.Add("12A3"); cmbk12.Items.Add("Ca khoi 12"); cmbk11.Items.Add("11A1"); cmbk11.Items.Add("11A2"); cmbk11.Items.Add("11A3"); cmbk11.Items.Add("Ca khoi 11"); cmbk10.Items.Add("10A1"); cmbk10.Items.Add("10A2"); cmbk10.Items.Add("10A3"); cmbk10.Items.Add("Ca khoi 10"); cmbgv.Items.Add("GVT"); cmbgv.Items.Add("GVL"); cmbgv.Items.Add("GVH"); cmbgv.Items.Add("All GV"); } privatevoid SendMulti_Load(object sender, System.EventArgs e) {

Page 152: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 139

Đồ án tốt nghiệp

chkMultipleTimes.Checked = true; } privatevoid cmbk12_SelectedIndexChanged(object sender, EventArgs e) { timlop = cmbk12.SelectedItem.ToString(); kiemtraHS(); textBox1.Text = "Chọn gửi tới: " + cmbk12.SelectedItem + "\r\nTổng số: " + numberOfRowsFeched.ToString(); } privatevoid cmbk11_SelectedIndexChanged(object sender, EventArgs e) { timlop = cmbk11.SelectedItem.ToString(); kiemtraHS(); textBox1.Text = "Chọn gửi tới: " + cmbk11.SelectedItem + "\r\nTổng số: " + numberOfRowsFeched.ToString(); } privatevoid cmbk10_SelectedIndexChanged(object sender, EventArgs e) { timlop = cmbk10.SelectedItem.ToString(); kiemtraHS(); textBox1.Text = "Chọn gửi tới: " + cmbk10.SelectedItem + "\r\nTổng số: " + numberOfRowsFeched.ToString(); } privatevoid cmbgv_SelectedIndexChanged(object sender, EventArgs e) { timlop = cmbgv.SelectedItem.ToString(); kiemtraGV(); textBox1.Text = "Chọn gửi tới: " + cmbgv.SelectedItem + "\r\nTổng số: " + numberOfRowsFeched.ToString(); } privatevoid btnbochon_Click(object sender, EventArgs e) { textBox1.Text = ""; timlop = ""; } privatevoid BtnClear_Click(object sender, System.EventArgs e) { txt_message.Text = ""; txt_message.Focus(); } privatevoid textBox1_TextChanged(object sender, System.EventArgs e) { int remaining = int.Parse(txt_text_remaining.Text.Trim()); remaining -= 1; txt_text_remaining.Text = remaining.ToString(); } privatevoid kiemtraHS() { Cursor.Current = Cursors.WaitCursor; string conString = @"Provider=Microsoft.JET.OLEDB.4.0;" + @"data source=D:\DATA.mdb"; OleDbConnection conn = newOleDbConnection(conString); try { // create an open the connection conn.Open(); // create the adapter and fill the DataSet if (timlop == "Ca khoi 12") { timlop = "12A"; xlop = "HS"; OleDbDataAdapter adapter1 = newOleDbDataAdapter("SELECT Mobile, Name, Class FROM Pupils WHERE LEFT(Class ,3) = \'" + timlop + "\'", conn); dataSet1.Clear(); numberOfRowsFeched = adapter1.Fill(dataSet1, "Pupils");

Page 153: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 140

Đồ án tốt nghiệp

dt = dataSet1.Tables["Pupils"]; } elseif (timlop == "Ca khoi 11") { timlop = "11A"; xlop = "HS"; OleDbDataAdapter adapter1 = newOleDbDataAdapter("SELECT Mobile, Name, Class FROM Pupils WHERE LEFT(Class ,3) = \'" + timlop + "\'", conn); dataSet1.Clear(); numberOfRowsFeched = adapter1.Fill(dataSet1, "Pupils"); dt = dataSet1.Tables["Pupils"]; } elseif (timlop == "Ca khoi 10") { timlop = "10A"; xlop = "HS"; OleDbDataAdapter adapter1 = newOleDbDataAdapter("SELECT Mobile, Name, Class FROM Pupils WHERE LEFT(Class ,3) = \'" + timlop + "\'", conn); dataSet1.Clear(); numberOfRowsFeched = adapter1.Fill(dataSet1, "Pupils"); dt = dataSet1.Tables["Pupils"]; } else { xlop = "HS"; OleDbDataAdapter adapter1 = newOleDbDataAdapter("SELECT Mobile, Name, Class FROM Pupils WHERE Class = \'" + timlop + "\'", conn); dataSet1.Clear(); numberOfRowsFeched = adapter1.Fill(dataSet1, "Pupils"); dt = dataSet1.Tables["Pupils"]; } } catch (Exception E) { MessageBox.Show("Error occured: " + E.Message); } finally { conn.Close(); } } privatevoid kiemtraGV() { Cursor.Current = Cursors.WaitCursor; string conString = @"Provider=Microsoft.JET.OLEDB.4.0;" + @"data source=D:\DATA.mdb"; OleDbConnection conn = newOleDbConnection(conString); try { // create an open the connection conn.Open(); // create the adapter and fill the DataSet if (timlop == "All GV") { timlop = "GV"; xlop = "GV"; OleDbDataAdapter adapter1 = newOleDbDataAdapter("SELECT Mobile, Name FROM Teachers WHERE Left(MSGV ,2)= \'" + timlop + "\'", conn); dataSet1.Clear(); numberOfRowsFeched = adapter1.Fill(dataSet1, "Teachers"); dt = dataSet1.Tables["Teachers"]; } else

Page 154: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 141

Đồ án tốt nghiệp

{ xlop = "GV"; OleDbDataAdapter adapter1 = newOleDbDataAdapter("SELECT Mobile, Name, ChuyenMon FROM Teachers WHERE Left(MSGV ,3)= \'" + timlop + "\'", conn); dataSet1.Clear(); numberOfRowsFeched = adapter1.Fill(dataSet1, "Teachers"); dt = dataSet1.Tables["Teachers"]; } } catch (Exception E) { MessageBox.Show("Error occured: " + E.Message); } finally { conn.Close(); } } privatevoid btnSendMessage_Click(object sender, System.EventArgs e) { Cursor.Current = Cursors.WaitCursor; for (int i = 0; i < numberOfRowsFeched; i++) { xNumber = dt.Rows[i][0].ToString(); ten = dt.Rows[i][1].ToString(); //Output(xNumber); GuiTinNhan(); if (xlop == "HS") { lop = dt.Rows[i][2].ToString(); ten = dt.Rows[i][1].ToString(); Output("Đã gửi thông báo đến Phụ huynh em: " + ten + ", Lớp" + lop); Output(""); } else { lop = dt.Rows[i][2].ToString(); Output("Đã gửi thông báo đến giáo viên : " + ten + ", Chuyên môn: "+ dt.Rows[i][2].ToString()); Output(""); } } Cursor.Current = Cursors.Default; } privatevoid GuiTinNhan() { // Send an SMS message SmsSubmitPdu pdu; bool alert = chkAlert.Checked; bool unicode = chkUnicode.Checked; string smsc = "+84900000022";//smscMobifone if (!alert && !unicode) { // The straightforward version pdu = newSmsSubmitPdu(txt_message.Text, xNumber, smsc); // "" indicate SMSC No } else { // The extended version with dcs byte dcs;

Page 155: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 142

Đồ án tốt nghiệp

if (!alert && unicode) dcs = DataCodingScheme.NoClass_16Bit; elseif (alert && !unicode) dcs = DataCodingScheme.Class0_7Bit; elseif (alert && unicode) dcs = DataCodingScheme.Class0_16Bit; else dcs = DataCodingScheme.NoClass_7Bit; // should never occur here pdu = newSmsSubmitPdu(txt_message.Text, xNumber, smsc, dcs); } // Send the same message multiple times if this is set int times = chkMultipleTimes.Checked ? int.Parse(txtSendTimes.Text) : 1; // Send the message the specified number of times for (int i = 0; i < times; i++) { CommSetting.comm.SendMessage(pdu); } } privatevoid Output(string text) { if (this.txtOutput.InvokeRequired) { SetTextCallback stc = newSetTextCallback(Output); this.Invoke(stc, newobject[] { text }); } else { txtOutput.AppendText(text); txtOutput.AppendText("\r\n"); } } } }

4. Send

using System; using System.Drawing; using System.Collections; using System.ComponentModel;

Page 156: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 143

Đồ án tốt nghiệp

using System.Windows.Forms; using GsmComm.PduConverter; using GsmComm.GsmCommunication; namespace SMS { ///<summary> /// Summary description for Send. ///</summary> publicclassSend : System.Windows.Forms.Form { private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox txt_destination_numbers; private System.Windows.Forms.Label label2; private System.Windows.Forms.TextBox txt_text_remaining; private System.Windows.Forms.Button btnSendMessage; private System.Windows.Forms.Button BtnClear; private System.Windows.Forms.TextBox txt_message; private System.Windows.Forms.TextBox txtOutput; private System.Windows.Forms.CheckBox chkUnicode; private System.Windows.Forms.CheckBox chkAlert; private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.Label label19; private System.Windows.Forms.TextBox txtSendTimes; private System.Windows.Forms.CheckBox chkMultipleTimes; ///<summary> /// Required designer variable. ///</summary> private System.ComponentModel.Container components = null; privatedelegatevoidSetTextCallback(string text); public Send() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } ///<summary> /// Clean up any resources being used. ///</summary> protectedoverridevoid Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code ///<summary> /// Required method for Designer support - do not modify

Page 157: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 144

Đồ án tốt nghiệp

/// the contents of this method with the code editor. ///</summary> privatevoid InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Send)); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.label1 = new System.Windows.Forms.Label(); this.txt_destination_numbers = new System.Windows.Forms.TextBox(); this.label2 = new System.Windows.Forms.Label(); this.txt_message = new System.Windows.Forms.TextBox(); this.txt_text_remaining = new System.Windows.Forms.TextBox(); this.btnSendMessage = new System.Windows.Forms.Button(); this.BtnClear = new System.Windows.Forms.Button(); this.txtOutput = new System.Windows.Forms.TextBox(); this.chkUnicode = new System.Windows.Forms.CheckBox(); this.chkAlert = new System.Windows.Forms.CheckBox(); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.txtSendTimes = new System.Windows.Forms.TextBox(); this.chkMultipleTimes = new System.Windows.Forms.CheckBox(); this.label19 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.groupBox1.SuspendLayout(); this.SuspendLayout(); // // pictureBox1 // this.pictureBox1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage"))); this.pictureBox1.Location = new System.Drawing.Point(0, 2); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(371, 104); this.pictureBox1.TabIndex = 0; this.pictureBox1.TabStop = false; // // label1 // this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label1.Location = new System.Drawing.Point(0, 112); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(144, 24); this.label1.TabIndex = 1; this.label1.Text = "Destination Number :"; // // txt_destination_numbers // this.txt_destination_numbers.Location = new System.Drawing.Point(0, 136); this.txt_destination_numbers.Name = "txt_destination_numbers"; this.txt_destination_numbers.Size = new System.Drawing.Size(224, 20); this.txt_destination_numbers.TabIndex = 2; this.txt_destination_numbers.Text = "+84"; // // label2 // this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label2.Location = new System.Drawing.Point(0, 168); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(72, 16); this.label2.TabIndex = 3; this.label2.Text = "Message:";

Page 158: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 145

Đồ án tốt nghiệp

// // txt_message // this.txt_message.Location = new System.Drawing.Point(0, 192); this.txt_message.Multiline = true; this.txt_message.Name = "txt_message"; this.txt_message.ScrollBars = System.Windows.Forms.ScrollBars.Both; this.txt_message.Size = new System.Drawing.Size(224, 112); this.txt_message.TabIndex = 4; this.txt_message.TextChanged += new System.EventHandler(this.textBox1_TextChanged); // // txt_text_remaining // this.txt_text_remaining.BackColor = System.Drawing.SystemColors.Control; this.txt_text_remaining.Enabled = false; this.txt_text_remaining.Location = new System.Drawing.Point(224, 288); this.txt_text_remaining.Name = "txt_text_remaining"; this.txt_text_remaining.Size = new System.Drawing.Size(40, 20); this.txt_text_remaining.TabIndex = 5; this.txt_text_remaining.Text = "160"; // // btnSendMessage // this.btnSendMessage.FlatStyle = System.Windows.Forms.FlatStyle.System; this.btnSendMessage.Location = new System.Drawing.Point(144, 320); this.btnSendMessage.Name = "btnSendMessage"; this.btnSendMessage.Size = new System.Drawing.Size(80, 24); this.btnSendMessage.TabIndex = 16; this.btnSendMessage.Text = "Send"; this.btnSendMessage.Click += new System.EventHandler(this.btnSendMessage_Click); // // BtnClear // this.BtnClear.FlatStyle = System.Windows.Forms.FlatStyle.System; this.BtnClear.Location = new System.Drawing.Point(56, 320); this.BtnClear.Name = "BtnClear"; this.BtnClear.Size = new System.Drawing.Size(80, 24); this.BtnClear.TabIndex = 17; this.BtnClear.Text = "Clear"; this.BtnClear.Click += new System.EventHandler(this.BtnClear_Click); // // txtOutput // this.txtOutput.Location = new System.Drawing.Point(0, 352); this.txtOutput.Multiline = true; this.txtOutput.Name = "txtOutput"; this.txtOutput.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; this.txtOutput.Size = new System.Drawing.Size(504, 120); this.txtOutput.TabIndex = 56; // // chkUnicode // this.chkUnicode.FlatStyle = System.Windows.Forms.FlatStyle.System; this.chkUnicode.Location = new System.Drawing.Point(16, 56); this.chkUnicode.Name = "chkUnicode"; this.chkUnicode.Size = new System.Drawing.Size(208, 24); this.chkUnicode.TabIndex = 58; this.chkUnicode.Text = "Send as Unicode (UCS2)"; // // chkAlert // this.chkAlert.FlatStyle = System.Windows.Forms.FlatStyle.System; this.chkAlert.Location = new System.Drawing.Point(16, 24); this.chkAlert.Name = "chkAlert";

Page 159: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 146

Đồ án tốt nghiệp

this.chkAlert.Size = new System.Drawing.Size(176, 24); this.chkAlert.TabIndex = 57; this.chkAlert.Text = "Request immediate display (alert)"; // // groupBox1 // this.groupBox1.Controls.Add(this.chkUnicode); this.groupBox1.Controls.Add(this.chkAlert); this.groupBox1.Controls.Add(this.txtSendTimes); this.groupBox1.Controls.Add(this.chkMultipleTimes); this.groupBox1.Controls.Add(this.label19); this.groupBox1.Location = new System.Drawing.Point(240, 112); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(264, 128); this.groupBox1.TabIndex = 59; this.groupBox1.TabStop = false; this.groupBox1.Text = "Option"; // // txtSendTimes // this.txtSendTimes.Location = new System.Drawing.Point(120, 88); this.txtSendTimes.Name = "txtSendTimes"; this.txtSendTimes.Size = new System.Drawing.Size(48, 20); this.txtSendTimes.TabIndex = 61; this.txtSendTimes.Text = "1"; // // chkMultipleTimes // this.chkMultipleTimes.FlatStyle = System.Windows.Forms.FlatStyle.System; this.chkMultipleTimes.Location = new System.Drawing.Point(16, 88); this.chkMultipleTimes.Name = "chkMultipleTimes"; this.chkMultipleTimes.Size = new System.Drawing.Size(104, 24); this.chkMultipleTimes.TabIndex = 60; this.chkMultipleTimes.Text = "Send message"; // // label19 // this.label19.FlatStyle = System.Windows.Forms.FlatStyle.System; this.label19.Location = new System.Drawing.Point(176, 88); this.label19.Name = "label19"; this.label19.Size = new System.Drawing.Size(72, 23); this.label19.TabIndex = 62; this.label19.Text = "times"; this.label19.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; // // Send // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(504, 478); this.Controls.Add(this.groupBox1); this.Controls.Add(this.txtOutput); this.Controls.Add(this.BtnClear); this.Controls.Add(this.btnSendMessage); this.Controls.Add(this.txt_text_remaining); this.Controls.Add(this.txt_message); this.Controls.Add(this.label2); this.Controls.Add(this.txt_destination_numbers); this.Controls.Add(this.label1); this.Controls.Add(this.pictureBox1); this.Name = "Send"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Send SMS"; this.Load += new System.EventHandler(this.Send_Load); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.groupBox1.ResumeLayout(false);

Page 160: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 147

Đồ án tốt nghiệp

this.groupBox1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); } #endregion privatevoid textBox1_TextChanged(object sender, System.EventArgs e) { int remaining=int.Parse(txt_text_remaining.Text.Trim()); remaining-=1; txt_text_remaining.Text=remaining.ToString(); } privatevoid BtnClear_Click(object sender, System.EventArgs e) { txt_message.Text=""; txt_message.Focus(); } privatevoid btnSendMessage_Click(object sender, System.EventArgs e) { Cursor.Current = Cursors.WaitCursor; try { // Send an SMS message SmsSubmitPdu pdu; bool alert = chkAlert.Checked; bool unicode = chkUnicode.Checked; string smsc = "+84900000022"; if (!alert && !unicode) { // The straightforward version pdu = newSmsSubmitPdu(txt_message.Text, txt_destination_numbers.Text,smsc); // "" indicate SMSC No } else { // The extended version with dcs byte dcs; if (!alert && unicode) dcs = DataCodingScheme.NoClass_16Bit; elseif (alert && !unicode) dcs = DataCodingScheme.Class0_7Bit; elseif (alert && unicode) dcs = DataCodingScheme.Class0_16Bit; else dcs = DataCodingScheme.NoClass_7Bit; // should never occur here pdu = newSmsSubmitPdu(txt_message.Text, txt_destination_numbers.Text, smsc, dcs); } // Send the same message multiple times if this is set int times = chkMultipleTimes.Checked ? int.Parse(txtSendTimes.Text) : 1; // Send the message the specified number of times for (int i=0;i<times;i++) { CommSetting.comm.SendMessage(pdu);

Page 161: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 148

Đồ án tốt nghiệp

Output("Message {0} of {1} sent.", i+1, times); Output(""); } } catch(Exception ex) { MessageBox.Show(ex.Message); } Cursor.Current = Cursors.Default; } privatevoid Output(string text) { if (this.txtOutput.InvokeRequired) { SetTextCallback stc = newSetTextCallback(Output); this.Invoke(stc, newobject[] { text }); } else { txtOutput.AppendText(text); txtOutput.AppendText("\r\n"); } } privatevoid Send_Load(object sender, System.EventArgs e) { chkMultipleTimes.Checked=true; } privatevoid Output(string text, paramsobject[] args) { string msg = string.Format(text, args); Output(msg); } } }

5. Receive

Page 162: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 149

Đồ án tốt nghiệp

using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Data.OleDb; using GsmComm.PduConverter; using GsmComm.GsmCommunication; namespace SMS { ///<summary> /// Summary description for Receive. ///</summary> publicclassReceive : System.Windows.Forms.Form { private System.Windows.Forms.Button btnReadMessage; private System.Windows.Forms.RadioButton rbMessagePhone; private System.Windows.Forms.RadioButton rbMessageSIM; private System.Windows.Forms.TextBox txtOutput; private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.DataGrid dataGrid1; ///<summary> /// Required designer variable. ///</summary> private System.ComponentModel.Container components = null; privateDataTable dt=newDataTable(); privatedelegatevoidSetTextCallback(string text); public Receive() { //

Page 163: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 150

Đồ án tốt nghiệp

// Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } ///<summary> /// Clean up any resources being used. ///</summary> protectedoverridevoid Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code ///<summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. ///</summary> privatevoid InitializeComponent() { this.btnReadMessage = new System.Windows.Forms.Button(); this.rbMessagePhone = new System.Windows.Forms.RadioButton(); this.rbMessageSIM = new System.Windows.Forms.RadioButton(); this.txtOutput = new System.Windows.Forms.TextBox(); this.groupBox1 = new System.Windows.Forms.GroupBox(); this.dataGrid1 = new System.Windows.Forms.DataGrid(); this.groupBox1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit(); this.SuspendLayout(); // // btnReadMessage // this.btnReadMessage.FlatStyle = System.Windows.Forms.FlatStyle.System; this.btnReadMessage.Location = new System.Drawing.Point(192, 80); this.btnReadMessage.Name = "btnReadMessage"; this.btnReadMessage.Size = new System.Drawing.Size(112, 24); this.btnReadMessage.TabIndex = 17; this.btnReadMessage.Text = "Read All Messages"; this.btnReadMessage.Click += new System.EventHandler(this.btnReadMessage_Click); // // rbMessagePhone // this.rbMessagePhone.FlatStyle = System.Windows.Forms.FlatStyle.System; this.rbMessagePhone.Location = new System.Drawing.Point(16, 56); this.rbMessagePhone.Name = "rbMessagePhone"; this.rbMessagePhone.Size = new System.Drawing.Size(64, 24); this.rbMessagePhone.TabIndex = 25; this.rbMessagePhone.TabStop = true; this.rbMessagePhone.Text = "Phone"; // // rbMessageSIM //

Page 164: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 151

Đồ án tốt nghiệp

this.rbMessageSIM.Checked = true; this.rbMessageSIM.FlatStyle = System.Windows.Forms.FlatStyle.System; this.rbMessageSIM.Location = new System.Drawing.Point(16, 24); this.rbMessageSIM.Name = "rbMessageSIM"; this.rbMessageSIM.Size = new System.Drawing.Size(64, 24); this.rbMessageSIM.TabIndex = 24; this.rbMessageSIM.TabStop = true; this.rbMessageSIM.Text = "SIM"; // // txtOutput // this.txtOutput.Location = new System.Drawing.Point(6, 304); this.txtOutput.Multiline = true; this.txtOutput.Name = "txtOutput"; this.txtOutput.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; this.txtOutput.Size = new System.Drawing.Size(492, 144); this.txtOutput.TabIndex = 57; // // groupBox1 // this.groupBox1.Controls.Add(this.rbMessageSIM); this.groupBox1.Controls.Add(this.rbMessagePhone); this.groupBox1.Location = new System.Drawing.Point(8, 8); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(176, 96); this.groupBox1.TabIndex = 58; this.groupBox1.TabStop = false; this.groupBox1.Text = "Message Storage"; // // dataGrid1 // this.dataGrid1.DataMember = ""; this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText; this.dataGrid1.Location = new System.Drawing.Point(7, 120); this.dataGrid1.Name = "dataGrid1"; this.dataGrid1.RowHeadersVisible = false; this.dataGrid1.SelectionBackColor = System.Drawing.Color.CornflowerBlue; this.dataGrid1.Size = new System.Drawing.Size(492, 176); this.dataGrid1.TabIndex = 59; // // Receive // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(504, 478); this.Controls.Add(this.dataGrid1); this.Controls.Add(this.groupBox1); this.Controls.Add(this.txtOutput); this.Controls.Add(this.btnReadMessage); this.Name = "Receive"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Read Messages"; this.Load += new System.EventHandler(this.Receive_Load); this.groupBox1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); } #endregion privatevoid btnReadMessage_Click(object sender, System.EventArgs e) { Cursor.Current = Cursors.WaitCursor; string storage = GetMessageStorage();

Page 165: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 152

Đồ án tốt nghiệp

try { // Read all SMS messages from the storage DecodedShortMessage[] messages = CommSetting.comm.ReadMessages(PhoneMessageStatus.All, storage); foreach (DecodedShortMessage message in messages) { Output(string.Format("Message status = {0}, Location = {1}/{2}", StatusToString(message.Status), message.Storage, message.Index)); ShowMessage(message.Data); Output(""); } Output(string.Format("{0,9} messages read.", messages.Length.ToString())); Output(""); } catch (Exception ex) { MessageBox.Show(ex.Message); } } privatevoid BindGrid(SmsPdu pdu) { DataRow dr = dt.NewRow(); SmsDeliverPdu data = (SmsDeliverPdu)pdu; dr[0] = data.OriginatingAddress.ToString(); dr[1] = data.SCTimestamp.ToString(); dr[2] = data.UserDataText; dt.Rows.Add(dr); dataGrid1.DataSource = dt; } privatevoid ShowMessage(SmsPdu pdu) { if (pdu isSmsSubmitPdu) { // Stored (sent/unsent) message SmsSubmitPdu data = (SmsSubmitPdu)pdu; Output("SENT/UNSENT MESSAGE"); Output("Recipient: " + data.DestinationAddress); Output("Message text: " + data.UserDataText); Output("------------------------------"); return; } if (pdu isSmsDeliverPdu) { // Received message SmsDeliverPdu data = (SmsDeliverPdu)pdu; Output("RECEIVED MESSAGE"); Output("Sender: " + data.OriginatingAddress); Output("Sent: " + data.SCTimestamp.ToString()); Output("Message text: " + data.UserDataText); Output("---------------------------------"); BindGrid(pdu); return; }

Page 166: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 153

Đồ án tốt nghiệp

if (pdu isSmsStatusReportPdu) { // Status report SmsStatusReportPdu data = (SmsStatusReportPdu)pdu; Output("STATUS REPORT"); Output("Recipient: " + data.RecipientAddress); Output("Status: " + data.Status.ToString()); Output("Timestamp: " + data.DischargeTime.ToString()); Output("Message ref: " + data.MessageReference.ToString()); Output("-----------------------------------"); return; } Output("Unknown message type: " + pdu.GetType().ToString()); } privatestring StatusToString(PhoneMessageStatus status) { // Map a message status to a string string ret; switch(status) { casePhoneMessageStatus.All: ret = "All"; break; casePhoneMessageStatus.ReceivedRead: ret = "Read"; break; casePhoneMessageStatus.ReceivedUnread: ret = "Unread"; break; casePhoneMessageStatus.StoredSent: ret = "Sent"; break; casePhoneMessageStatus.StoredUnsent: ret = "Unsent"; break; default: ret = "Unknown (" + status.ToString() + ")"; break; } return ret; } privatestring GetMessageStorage() { string storage = string.Empty; if (rbMessageSIM.Checked) storage = PhoneStorageType.Sim; if (rbMessagePhone.Checked) storage = PhoneStorageType.Phone; if (storage.Length == 0) thrownewApplicationException("Unknown message storage."); else return storage; } privatevoid Output(string text) { if (this.txtOutput.InvokeRequired)

Page 167: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 154

Đồ án tốt nghiệp

{ SetTextCallback stc = newSetTextCallback(Output); this.Invoke(stc, newobject[] { text }); } else { txtOutput.AppendText(text); txtOutput.AppendText("\r\n"); } } privatevoid Receive_Load(object sender, System.EventArgs e) { dt.Columns.Add("Sender",typeof(string)); dt.Columns.Add("Time",typeof(string)); dt.Columns.Add("Message",typeof(string)); } privatevoid Output(string text, paramsobject[] args) { string msg = string.Format(text, args); Output(msg); } } }

6. Delete

using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data;

Page 168: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 155

Đồ án tốt nghiệp

using GsmComm.PduConverter; using GsmComm.GsmCommunication; namespace SMS { ///<summary> /// Summary description for Delete. ///</summary> publicclassDelete : System.Windows.Forms.Form { private System.Windows.Forms.DataGrid dataGrid1; ///<summary> /// Required designer variable. ///</summary> private System.ComponentModel.Container components = null; private System.Windows.Forms.Button btn_delete; private System.Windows.Forms.Button btn_delete_all; private System.Windows.Forms.TextBox txt_message_index; privateDataTable dt=newDataTable(); privatedelegatevoidSetTextCallback(string text); public Delete() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } ///<summary> /// Clean up any resources being used. ///</summary> protectedoverridevoid Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code ///<summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. ///</summary> privatevoid InitializeComponent() { this.dataGrid1 = new System.Windows.Forms.DataGrid(); this.btn_delete = new System.Windows.Forms.Button(); this.btn_delete_all = new System.Windows.Forms.Button(); this.txt_message_index = new System.Windows.Forms.TextBox(); ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit(); this.SuspendLayout(); // // dataGrid1 //

Page 169: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 156

Đồ án tốt nghiệp

this.dataGrid1.DataMember = ""; this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText; this.dataGrid1.Location = new System.Drawing.Point(8, 40); this.dataGrid1.Name = "dataGrid1"; this.dataGrid1.Size = new System.Drawing.Size(484, 284); this.dataGrid1.TabIndex = 60; this.dataGrid1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.dataGrid1_MouseDown); // // btn_delete // this.btn_delete.FlatStyle = System.Windows.Forms.FlatStyle.System; this.btn_delete.Location = new System.Drawing.Point(56, 8); this.btn_delete.Name = "btn_delete"; this.btn_delete.Size = new System.Drawing.Size(75, 23); this.btn_delete.TabIndex = 62; this.btn_delete.Text = "Delete"; this.btn_delete.Click += new System.EventHandler(this.btn_delete_Click); // // btn_delete_all // this.btn_delete_all.FlatStyle = System.Windows.Forms.FlatStyle.System; this.btn_delete_all.Location = new System.Drawing.Point(136, 8); this.btn_delete_all.Name = "btn_delete_all"; this.btn_delete_all.Size = new System.Drawing.Size(75, 23); this.btn_delete_all.TabIndex = 63; this.btn_delete_all.Text = "Delete All"; this.btn_delete_all.Click += new System.EventHandler(this.btn_delete_all_Click); // // txt_message_index // this.txt_message_index.Location = new System.Drawing.Point(8, 8); this.txt_message_index.Name = "txt_message_index"; this.txt_message_index.Size = new System.Drawing.Size(40, 20); this.txt_message_index.TabIndex = 64; // // Delete // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(504, 478); this.Controls.Add(this.txt_message_index); this.Controls.Add(this.btn_delete_all); this.Controls.Add(this.btn_delete); this.Controls.Add(this.dataGrid1); this.Name = "Delete"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Delete"; this.Load += new System.EventHandler(this.Delete_Load); ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); } #endregion privatevoid Delete_Load(object sender, System.EventArgs e) { dataGrid1.PreferredColumnWidth=100; dt.Columns.Add("Index",typeof(int)); dt.Columns.Add("Sender",typeof(string)); dt.Columns.Add("Time",typeof(string)); dt.Columns.Add("Message",typeof(string));

Page 170: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 157

Đồ án tốt nghiệp

ReadMessage(); } privatevoid ReadMessage() { Cursor.Current = Cursors.WaitCursor; string storage = GetMessageStorage(); try { // Read all SMS messages from the storage DecodedShortMessage[] messages = CommSetting.comm.ReadMessages(PhoneMessageStatus.All, storage); foreach(DecodedShortMessage message in messages) { ShowMessage(message.Data,message.Index); } } catch(Exception ex) { MessageBox.Show(ex.Message); } Cursor.Current = Cursors.Default; } privatevoid BindGrid(SmsPdu pdu,int index) { DataRow dr=dt.NewRow(); SmsDeliverPdu data = (SmsDeliverPdu)pdu; dr[0]=index.ToString(); dr[1]=data.OriginatingAddress.ToString(); dr[2]=data.SCTimestamp.ToString(); dr[3]=data.UserDataText; dt.Rows.Add(dr); dataGrid1.DataSource=dt; } privatevoid ShowMessage(SmsPdu pdu,int index) { if (pdu isSmsSubmitPdu) { // Stored (sent/unsent) message SmsSubmitPdu data = (SmsSubmitPdu)pdu; return; } if (pdu isSmsDeliverPdu) { // Received message SmsDeliverPdu data = (SmsDeliverPdu)pdu; BindGrid(pdu,index); return; } if (pdu isSmsStatusReportPdu) { // Status report SmsStatusReportPdu data = (SmsStatusReportPdu)pdu;

Page 171: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 158

Đồ án tốt nghiệp

return; } } privatestring StatusToString(PhoneMessageStatus status) { // Map a message status to a string string ret; switch(status) { casePhoneMessageStatus.All: ret = "All"; break; casePhoneMessageStatus.ReceivedRead: ret = "Read"; break; casePhoneMessageStatus.ReceivedUnread: ret = "Unread"; break; casePhoneMessageStatus.StoredSent: ret = "Sent"; break; casePhoneMessageStatus.StoredUnsent: ret = "Unsent"; break; default: ret = "Unknown (" + status.ToString() + ")"; break; } return ret; } privatestring GetMessageStorage() { string storage = PhoneStorageType.Sim; return storage; } privatevoid btn_delete_all_Click(object sender, System.EventArgs e) { if (!Confirmed()) return; Cursor.Current = Cursors.WaitCursor; string storage = GetMessageStorage(); try { // Delete all messages from phone memory CommSetting.comm.DeleteMessages(DeleteScope.All, storage); dt.Clear(); dataGrid1.DataSource=dt; } catch(Exception ex) { MessageBox.Show(ex.Message); } Cursor.Current = Cursors.Default; } privatebool Confirmed() {

Page 172: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 159

Đồ án tốt nghiệp

return (MessageBox.Show(this, "Really?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes); } privatevoid dataGrid1_MouseDown (object sender, System.Windows.Forms.MouseEventArgs e) { System.Windows.Forms.DataGrid.HitTestInfo myHitTest; // Use the DataGrid control's HitTest method with the x and y properties. myHitTest = dataGrid1.HitTest(e.X,e.Y); txt_message_index.Text=dataGrid1[myHitTest.Row ,0].ToString(); } privatevoid btn_delete_Click(object sender, System.EventArgs e) { if( txt_message_index.Text.Equals("")==true) { MessageBox.Show("Please Click on Grid","Message",MessageBoxButtons.OK,MessageBoxIcon.Information); return; } int index; try { index = int.Parse(txt_message_index.Text); } catch(Exception ex) { MessageBox.Show(ex.Message); return; } if (!Confirmed()) return; Cursor.Current = Cursors.WaitCursor; string storage = GetMessageStorage(); try { // Delete the message with the specified index from storage CommSetting.comm.DeleteMessage(index, storage); MessageBox.Show("Message With Index " + index + " Deleted","Message",MessageBoxButtons.OK,MessageBoxIcon.Information); } catch(Exception ex) { MessageBox.Show(ex.Message); } Cursor.Current = Cursors.Default; dt.Clear(); dataGrid1.DataSource=null; ReadMessage(); } } }

Page 173: DATN-tra Cuu Thong Tin Va Dieu Khien Thiet Bi Qua Mang GSM1

T r a n g | 160

Đồ án tốt nghiệp

TÀI LIỆU THAM KHẢO [1] Nguyễn Trung Chính, “Tập lệnh AT của module SIM508 dùng cho SMS”, 2009

[2] Nguyễn Trọng Kiên - Phạm Văn Nam, “Điều khiển thiết bị từ xa qua tin nhắn SMS bằng máy tính”,Đại học Sư Phạm Kỹ Thuật TPHCM, 2009

[3] Nguyễn Quang Ninh, “Nghiên cứu công nghệ SMS – Xây dựng hệ thống tra cứu điểm qua mạng điện thoại di động”,Đại học Sư Phạm TPHCM, 2005

[4]Nguyễn Đình Phú, “Giáo trình Vi xử lý 1”,Đại học Sư Phạm Kỹ Thuật TPHCM, 2006

[5] Trần Phạm Thanh Tùng, C# Fast Food, Năm 2008

[6] “AT Command Interface Guide”,WAVECOM, 2006

[7]GSM 07.05, ver 5.5.0 - Use of Data Terminal Equipment - Data Circuit Terminating Equipment (DTE - DCE) interface for Short Message Service (SMS) and Cell Broadcast Service (CBS)

[8] GSM07.07, ver 5.0.0 - AT command set for GSM Mobile Equipment (ME)

[9] SMS source samples (for GSM phones), http://www.scampers.org

[10] How To Send and Receive SMS using GSM Modem, www.codeproject.com.vn

[11] GSM Modem Userguide, www.inet.vn

[12] Bảng mãASCCII, http://vi.wikipedia.org/wiki/ASCII

Website: www.pcworld.com.vn, www.codeproject.com.vn