Điện thoại di động với C #
Số trang: 6
Loại file: doc
Dung lượng: 130.50 KB
Lượt xem: 18
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Điện thoại di động còn được biết tới như một modemdây hay GSM Modem. Nếunhư modem là thiết bị truyền nhận dữ liệu qua dây (wire) thì ĐTDĐ là thiết bị truyền nhận dữliệu qua sóng vô tuyến (wireless). Cũng như modem, chúng ta hoàn toàn có thể điều khiển đượcĐTDĐ qua tập lệnh AT do Viện Tiêu Chuẩn Viễn Thông Châu Âu (European TelecommunicationStandards Institute - ETSI) đưa ra.
Nội dung trích xuất từ tài liệu:
Điện thoại di động với C #Điện thoại di động (ĐTDĐ) còn được biết tới như một modem không dây hay GSM Modem. N ếunhư modem là thiết bị truyền nhận dữ liệu qua dây (wire) thì ĐTDĐ là thiết b ị truy ền nh ận d ữliệu qua sóng vô tuyến (wireless). Cũng như modem, chúng ta hoàn toàn có thể đi ều khi ển đ ượcĐTDĐ qua tập lệnh AT do Viện Tiêu Chuẩn Viễn Thông Châu Âu (European TelecommunicationStandards Institute - ETSI) đưa ra.Dưới đây là một số tài liệu về tập lệnh thao tác với ĐTDĐ được sử dụng trong quá trình vi ết ứngdụng:[1]. GSM 07.05, ver 5.5.0 - Use of Data Terminal Equipment - Data Circuit TerminatingEquipment (DTE - DCE) interface for Short Message Service (SMS) and Cell Broadcast Service(CBS).[2]. GSM 03.40, ver 5.3.0 - Technical realization of the Short Message Service (SMS) Point-to-Point (PP).[3]. GSM 03.38, ver 5.3.0 - Alphabets and language-specific information.[4]. GSM 07.07, ver 5.0.0 - AT command set for GSM Mobile Equipment (ME).Trong đó, tài liệu [1] mô tả về các kiểu định dạng của tin nhắn (text, binary) và các l ệnh AT thaotác với tin nhắn; tài liệu [2], [3] mô t ả về cấu trúc và ki ểu mã hoá c ủa tin nh ắn (binary); tài li ệu [4]mô tả tập lệnh thao tác với ĐTDĐ.Khởi đầu Hình1:CápdữliệucủađiệnthoạiC55Thiết bị được sử dụng ở đây là điện thoại Siemens C55, giao ti ếp với máy tính qua cáp nối ti ếpRS232, chương trình thử nghiệm là HyperTerminal (có sẵn trong Windows).Mọi thông tin về điện thoại (tên sản phẩm, s ố IMEI, bộ nhớ, sổ đi ện thoại...) đều đ ược l ưu tr ữtrong máy; các thông tin khác như nội dung tin nhắn, dung lượng SIM đ ược l ưu tr ữ trên SIM. Cácthông tin này đều có thể truy xuất được qua tập lệnh AT. Hình 2 cho th ấy vi ệc truy xuất thông tincủa điện thoại Siemens C55 bằng chương trình HyperTerminal.Nhập cuộcNhư vậy chỉ bằng việc gửi lệnh AT thích hợp đến điện thoại, bạn có thể truy xuất đ ược thông tinbạn mong muốn. Dưới đây trình bày cách viết một chương trình quản lý ĐTDĐ qua c ổng COMbằng ngôn ngữ C# trên nền .NET 2.0. Kể từ phiên bản .NET Framework 2.0, Microsoft đã cungcấp thêm lớp SerialPort cho phép người lập trình có th ể giao ti ếp v ới các thi ết b ị ngo ại vi quacổng COM. Việc sử dụng thư viện này khá đơn giản.using System.IO.Ports;void Form1_Load(object sender, EventArgs e){/* Khởi tạo cổng COM1 với *//* tốc độ 9600 bps, 0 bit chẵn lẻ, 8 bit dữ liệu, 1 bit d ừng */SerialPort ComPort = new SerialPort(COM1, 9600, Parity.None, 8, StopBits.One);/* Gửi lệnh AT tới điện thoại */ComPort.Write(AT+CGSN );/* Khởi tạo sự kiện xử lý dữ liệu nhận được từ điện thoại */ComPort.DataReceived += new SerialDataReceivedEventHandler(ProcessReceivedData);} Hình2:SửdụngHyperTerminalđểtruyxuấtthôngtinĐTDĐ/* Hàm xử lý dữ liệu nhận được từ điện thoại */void ProcessReceivedData(object sender, SerialDataReceivedEventArgs e){String ReceivedData = ComPort.ReadLine();...}Một điểm quan trọng trong quá trình lập trình với cổng COM là làm sao đ ể đ ồng b ộ hoá đ ượcviệc nhận và gửi dữ liệu giữa máy tính và thiết bị ngoại vi. Nếu bạn g ửi nhiều l ệnh AT t ới đi ệnthoại cùng một lúc trong khi chưa kịp xử lý thông tin trả về trước đó thì s ẽ d ẫn t ới vi ệc tràn b ộđệm.Để giải quyết vấn đề này, bạn sử dụng lớp AutoResetEvent cho phép t ạm d ừng m ột ti ến trìnhcho đến khi nhận được thông báo tiếp tục.AutoResetEvent Wait = new AutoResetEvent(false); Hình3:SơđồgửilệnhvàxửlýdữliệuDưới đây là sơ đồ xử lý tuần tự từng lệnh AT gửi đến cổng COM: Sau khi g ửi l ệnh cmd1,chương trình sẽ tạm dừng (bằng hàm WaitOne()) trước khi gửi lệnh cmd2 cho đến khi nh ậnđược thông báo đã xử lý xong dữ liệu (bằng lệnh hàm Set()).using System.Threading;void Form1_Load(object sender, EventArgs e){...AutoResetEvent Wait = new AutoResetEvent(false);for (int i = 0; i < 3; i++ ){/* Gửi lệnh AT tới điện thoại */ComPort.Write(cmd);/* Chờ cho tới khi xử lý xong dữ liệu */ Hình4:CửasổchínhchươngtrìnhWait.WaitOne();}}void ProcessReceivedData(object sender, SerialDataReceivedEventArgs e){...switch(cmd){/* Xử lý lệnh cmd1 */Case cmd1:... Hình5:CửasổPhonebook/* Thiết lập thông báo */Wait.Set();break;/* Xử lý lệnh cmd2 */Case cmd2:...Wait.Set();break;...}} Hình6:Cửasổ MessagesCác tin nhắn được lưu trong ĐTDĐ dưới 2 định dạng: text và binary (PDU mode). Đ ịnh d ạngbinary là mặc định trong tất cả các máy điện thoại, ngoài ra trong m ột s ố máy còn h ỗ tr ợ thêmđịn ...
Nội dung trích xuất từ tài liệu:
Điện thoại di động với C #Điện thoại di động (ĐTDĐ) còn được biết tới như một modem không dây hay GSM Modem. N ếunhư modem là thiết bị truyền nhận dữ liệu qua dây (wire) thì ĐTDĐ là thiết b ị truy ền nh ận d ữliệu qua sóng vô tuyến (wireless). Cũng như modem, chúng ta hoàn toàn có thể đi ều khi ển đ ượcĐTDĐ qua tập lệnh AT do Viện Tiêu Chuẩn Viễn Thông Châu Âu (European TelecommunicationStandards Institute - ETSI) đưa ra.Dưới đây là một số tài liệu về tập lệnh thao tác với ĐTDĐ được sử dụng trong quá trình vi ết ứngdụng:[1]. GSM 07.05, ver 5.5.0 - Use of Data Terminal Equipment - Data Circuit TerminatingEquipment (DTE - DCE) interface for Short Message Service (SMS) and Cell Broadcast Service(CBS).[2]. GSM 03.40, ver 5.3.0 - Technical realization of the Short Message Service (SMS) Point-to-Point (PP).[3]. GSM 03.38, ver 5.3.0 - Alphabets and language-specific information.[4]. GSM 07.07, ver 5.0.0 - AT command set for GSM Mobile Equipment (ME).Trong đó, tài liệu [1] mô tả về các kiểu định dạng của tin nhắn (text, binary) và các l ệnh AT thaotác với tin nhắn; tài liệu [2], [3] mô t ả về cấu trúc và ki ểu mã hoá c ủa tin nh ắn (binary); tài li ệu [4]mô tả tập lệnh thao tác với ĐTDĐ.Khởi đầu Hình1:CápdữliệucủađiệnthoạiC55Thiết bị được sử dụng ở đây là điện thoại Siemens C55, giao ti ếp với máy tính qua cáp nối ti ếpRS232, chương trình thử nghiệm là HyperTerminal (có sẵn trong Windows).Mọi thông tin về điện thoại (tên sản phẩm, s ố IMEI, bộ nhớ, sổ đi ện thoại...) đều đ ược l ưu tr ữtrong máy; các thông tin khác như nội dung tin nhắn, dung lượng SIM đ ược l ưu tr ữ trên SIM. Cácthông tin này đều có thể truy xuất được qua tập lệnh AT. Hình 2 cho th ấy vi ệc truy xuất thông tincủa điện thoại Siemens C55 bằng chương trình HyperTerminal.Nhập cuộcNhư vậy chỉ bằng việc gửi lệnh AT thích hợp đến điện thoại, bạn có thể truy xuất đ ược thông tinbạn mong muốn. Dưới đây trình bày cách viết một chương trình quản lý ĐTDĐ qua c ổng COMbằng ngôn ngữ C# trên nền .NET 2.0. Kể từ phiên bản .NET Framework 2.0, Microsoft đã cungcấp thêm lớp SerialPort cho phép người lập trình có th ể giao ti ếp v ới các thi ết b ị ngo ại vi quacổng COM. Việc sử dụng thư viện này khá đơn giản.using System.IO.Ports;void Form1_Load(object sender, EventArgs e){/* Khởi tạo cổng COM1 với *//* tốc độ 9600 bps, 0 bit chẵn lẻ, 8 bit dữ liệu, 1 bit d ừng */SerialPort ComPort = new SerialPort(COM1, 9600, Parity.None, 8, StopBits.One);/* Gửi lệnh AT tới điện thoại */ComPort.Write(AT+CGSN );/* Khởi tạo sự kiện xử lý dữ liệu nhận được từ điện thoại */ComPort.DataReceived += new SerialDataReceivedEventHandler(ProcessReceivedData);} Hình2:SửdụngHyperTerminalđểtruyxuấtthôngtinĐTDĐ/* Hàm xử lý dữ liệu nhận được từ điện thoại */void ProcessReceivedData(object sender, SerialDataReceivedEventArgs e){String ReceivedData = ComPort.ReadLine();...}Một điểm quan trọng trong quá trình lập trình với cổng COM là làm sao đ ể đ ồng b ộ hoá đ ượcviệc nhận và gửi dữ liệu giữa máy tính và thiết bị ngoại vi. Nếu bạn g ửi nhiều l ệnh AT t ới đi ệnthoại cùng một lúc trong khi chưa kịp xử lý thông tin trả về trước đó thì s ẽ d ẫn t ới vi ệc tràn b ộđệm.Để giải quyết vấn đề này, bạn sử dụng lớp AutoResetEvent cho phép t ạm d ừng m ột ti ến trìnhcho đến khi nhận được thông báo tiếp tục.AutoResetEvent Wait = new AutoResetEvent(false); Hình3:SơđồgửilệnhvàxửlýdữliệuDưới đây là sơ đồ xử lý tuần tự từng lệnh AT gửi đến cổng COM: Sau khi g ửi l ệnh cmd1,chương trình sẽ tạm dừng (bằng hàm WaitOne()) trước khi gửi lệnh cmd2 cho đến khi nh ậnđược thông báo đã xử lý xong dữ liệu (bằng lệnh hàm Set()).using System.Threading;void Form1_Load(object sender, EventArgs e){...AutoResetEvent Wait = new AutoResetEvent(false);for (int i = 0; i < 3; i++ ){/* Gửi lệnh AT tới điện thoại */ComPort.Write(cmd);/* Chờ cho tới khi xử lý xong dữ liệu */ Hình4:CửasổchínhchươngtrìnhWait.WaitOne();}}void ProcessReceivedData(object sender, SerialDataReceivedEventArgs e){...switch(cmd){/* Xử lý lệnh cmd1 */Case cmd1:... Hình5:CửasổPhonebook/* Thiết lập thông báo */Wait.Set();break;/* Xử lý lệnh cmd2 */Case cmd2:...Wait.Set();break;...}} Hình6:Cửasổ MessagesCác tin nhắn được lưu trong ĐTDĐ dưới 2 định dạng: text và binary (PDU mode). Đ ịnh d ạngbinary là mặc định trong tất cả các máy điện thoại, ngoài ra trong m ột s ố máy còn h ỗ tr ợ thêmđịn ...
Tìm kiếm theo từ khóa liên quan:
thủ thuật lập trình lập trình căn bản điện thoại di động cáp dữ liệu cổng COMGợi ý tài liệu liên quan:
-
114 trang 227 2 0
-
Thủ thuật giúp giải phóng dung lượng ổ cứng
4 trang 208 0 0 -
80 trang 203 0 0
-
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 192 0 0 -
Hướng dẫn lập trình với Android part 4
5 trang 152 0 0 -
142 trang 128 0 0
-
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 121 0 0 -
150 trang 102 0 0
-
78 trang 99 0 0
-
124 trang 99 3 0