Tài liệu OBEX LÀ GÌ? pptx

14 844 1
Tài liệu OBEX LÀ GÌ? pptx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

OBEX GÌ? OBEX (OBject EXchange) giao thức trao đổi dữ liệu giữa các thiết bị dùng cổng hồng ngoại được hiệp hội IrDA (Infrared Data Association) đưa ra lần đầu tiên năm 1997. Ban đầu, giao thức này chỉ giới hạn cho các thiết bị sử dụng môi trường ánh sáng hồng ngoại, nhưng rất nhanh sau đó nó được tổ chức Bluetooth SIG (Bluetooth Special Interest Group) đưa vào hầu hết các thiết bị Bluetooth của mình. 1. Vị trí OBEX trong mô hình OSI Cũng giống như các giao thức khác, giao thức OBEX được xây dựng trên nền mô hình OSI (Open Systems Interconnection) bao gồm hai thành phần chính: • OBEX session protocol (giao thức phiên OBEX): mô tả cấu trúc gói tin trong phiên làm việc giữa hai thiết bị. • OBEX application framework: tập các dịch vụ OBEX cung cấp cho các ứng dụng đầu cuối như truyền file, in ảnh . OBEX Application Ù T ầng ứng dụng ication OBEX Framework OBEX Session Tầng phiên Tầng trình diễn Tiny TP RFCOMM Tầng giao vận IrLMP L2CAP Tầng mạng IrLAP Link Manager Tầng liên kết dữ liệu IrPHY Baseband Tầng vật lý IrDA Bluetooth OSI H n mô hình OSI ình 1: Giao thức OBEX tro g 2. Cấu trúc gói tin trong giao thức phiên OBEX Giao thức OBEX n kiểu "đẩy" (Push) hoặc "kéo" (Pull), cho phép m y" dữ liệu l r) hoặc "kéo" dữ liệu từ server xuống. Đ hiện i t nt server phải tuân thủ chặt chẽ cấu trúc đề ra. Dưới đây một vài cấu rong quá trình truyền file giữa cl erve X1.3 trên website http://www.hitekgroup.net). 2.1 Gói tin yêu cầu Mọi gói tin yêu cầu cấu trúc như sau: đ á ược sử dụ y khách (client) " g chủ yếu trong các đẩ ứ ê ng dụng n máy chủ (serve rao đổi giữa clie ể thực điều này, các gó in t và trúc được sử dụng t khảo tài liệu IrOB ient và s r (chi tiết có thể tham E đều có Byte 0 Byte 1, 2 Byte 3 đến n opcode packet length Headers Opcode: Mã lệnh ừ ầu (Bản ). Bit ca ọi F al bit. Packet length: Độ Header: Thông tin đầu có cấu trúc như sau: ứng với t ng yêu c g 1 o nhất g in dài của gói tin Byte 0 Byte 1, 2 Byte 3 đến n header identifier length (tuỳ chọn) value Bảng 1: Mã lệnh yêu cầu Mã lệnh Kiểu Mô tả 0x80 CONNECT Thiết lập phiên giao dịch 0x81 DISCONNECT Ngừ ng phiên giao dịch 0x02 (0x82) PUT Gửi dữ liệu lên server 0x03 (0x83) GET Lấy dữ liệu từ server 0xFF ABORT Hủy bỏ phiên giao dịch Bảng 2: Thông tin đầu Định danh Tên Mô tả 0x01 NAME Tên file (mã Unicode) 0xC3 LENGTH Kích thước file theo byte 0x48 BODY Đoạn dữ liệu của file 0x49 END OF BODY Đoạn dữ liệu cuối cùng của file 2.2 Gói tin trả lời Giống như gói tin yêu cầu, gói tin tr ả lời có cấu trúc như sau: Byte 0 Byte 1, 2 Byte 3 to n response opcode response length response data Một số mã trả lời (response opcode) thường gặp: Bản trả lời g 3: Mã Mã trả lời Mô tả 0x10 (0x90) Tiếp tục yêu cầ ời u hoặc trả l 0x20 (0xA0) Xác nhận kết thúc yêu cầu hoặc trả lời 0x40 (0xC0) Lỗi yêu cầu 0x41 (0xC1) Lỗi do không có quyền 0x43 (0xC3) Phiên giao dịch bị huỷ bỏ 0x44 (0xC4) Không tìm thấy file 3 Quá trình trao đổi file giữa client và server được chia làm 3 giai đoạn: • . Cùng giải quyết • Ngừng phiên: DISCONNECT 3.1 Thiết lập phiên (CONNECT Gói tin CONNEC có cấu trúc nh Thiết lập phiên: CONNECT • Nhận/gửi file: GET/PUT ) T ư sau: Byte 0 0 Byte 1, 2 Byte 3 Byte 4 Byte 5, 6 Byte 7 to n 0x80 packet length OBEX version number flags maximum OBEX packet length optional head s er OBEX version num o thức OBEX gồm major number lưu tại 4 bit cao, minor number lưu t hấp. Phiên bản hiện tại 1.0, do đó giá trị này 0x10. Flags: Giá trị này luôn 0x00 trong phiên b Maximum OBEX ket len tr g giao ức OBEX mà thiết bị có thể nhận hoặc gử này hau. Do đó khi thiết lập phiên, client cần g để kiểm tra xem kích thước gói tin lớn nhất mà server có thể nhận hoặc gửi b Optional headers: Thông tin đầu được tù ch của mỗi phiên giao dịch. Trong ví dụ dưới đây, giá trị này có thể bỏ qua. ber: Phiên bản gia ại 4 bit t ản hiện tại. pac gth: Giá ị lớn nhất của gói tin tron th i. Giá tr ửi ị iá trị này lên server ở client và server có thể khác n g ao nhiêu? y chọn ứng với mục đí Yêu cầu từ client byte Ý nghĩa 0x80 CONNECT 0x000 7 Độ dài gói tin = 7 bytes 0x10 Phiên bản OBEX 1.0 Mã yêu cầu 0x00 Flags đối với phiên bản hiện tại 0x200 0 Kích thước lớn nhất của gói tin 8K Trả lời từ server Mã trả lời 0xA0 SUCCESS 0x0007 Độ dài gói tin = 7 bytes 0x10 Phiên bản OBEX 1.0 0x00 Flags đối với phiên bản hiện tại 0x0200 Kích thước lớn nhất của gói tin mà server có thể nhận hoặc gửi 512 bytes 3.2 Gửi file (PUT) Không giống như gói tin CONNECT, gói tin PU in đầu sau: NAME: Thông tin về tên file LENGTH: Thông tin về kích BODY: Đoạn dữ liệu file END OF BODY Đoạn dữ liệu cu ủa l Dưới đây ví gửi 1 file hello.gif có kích th PC lên server (ĐTDĐ). Do kích thước của file n hơn kích th rver có thể nhận (với Sony ricsson T61 ytes) i gói tin để gửi. Gói tin 1 có mã yêu cầu PUT 0x02 (khôn tin 2 có mã yêu cầu PUT 0x82 (thiết lập Fi T có thêm một số thông t thước file : ối cùng c fi e dụ ước 721 bytes từ client ( ) lớ ước gói tin lớn nhất mà se client sẽ chia file thành h g thiết lập Final bit). E 0 512 b nên a Gói nal bit). Yêu cầu từ client byte Ý nghĩa 0x02 PUT, Final bit không thiết lập để chỉ cho server biết client còn gửi yêu cầu tiếp theo 0x01E2 Độ dài gói tin = 482 bytes Mã yêu cầu 0x01 Định danh thông tin đầu NAME (tên file) 0x0017 Độ dài của thông tin đầu NAME = 20+3 = 23 bytes hello.gif Tên file (unicode) có ký tự kết thúc NULL (20 bytes) 0xC3 Định danh thông tin đầu LENGTH (kích thước file) 0x000002D 1 Kích thước file = 721 bytes 0x48 Định danh thông tin đầu BODY (dữ liệu file) 0x01C3 Độ dài của thông tin đầu BODY = 448+3 = 451 bytes 0x . Đoạn dữ liệu file có kích thước 448 bytes Trả lời từ server Mã trả lời 0x90 CONTINUE, tiếp tục nhận yêu cầu từ client 0x0003 độ dài gói tin = 3 bytes Yêu cầu từ client Mã yêu cầu 0x82 PUT, Final bit được thiết lập để chỉ cho server biết đây gói tin cuối cùng 0x0117 Độ dài gói tin = 279 bytes 0x49 Định danh thông tin đầu END OF BODY 0x0114 Độ dài của thông tin đầu END OF BODY = 276 bytes 0x . Đoạn dữ liệu file có kích thước 721-448 = 273 bytes Trả lời từ server Mã trả lời 0xA0 SUCCESS 0x0003 độ dài gói tin = 3 bytes 3.3 Nhận file (GET) Khác với gói tin PUT, gói tin GET chỉ có thông tin đầu NAME. Ví dụ sau sẽ mô tả quá trình nhận file hello.gif có kích th 21 lie t (PC) sẽ gửi yêu cầu GET đ server (ĐTD ôn ile. Do ích thước của file yêu cầu lớn hơn 512 bytes (với Sony Eri lời đầu tiên có mã trả lời 0x90 ( ONTINUE) c i nhậ được mã trả lời CONTINUE, client biết rằng đây chưa đoạn dữ liệu cuối cùng của file nên tiếp tục gửi yêu cầ u (không cần thông tin đầu n được mã trả lời 0xA0 (SUCCESS). ước 7 với th b g y t tes từ server. Trước tiên c in đầu NAME tên f n k ến Đ) csson T610) nên gói tin trả hần dữ liệu của file. Kh phải C ùng với một p n NAME) cho đến khi nhậ Yêu cầu từ client byte Ý nghĩa 0x83 GET, Final bit được thiết lập 0x001A Độ dài gói tin = 26 bytes 0x01 Định danh thông tin đầu NAME (tên file) 0x0017 Độ dài của thông tin đầu NAME = 20+3 = 23 bytes Mã yêu cầu hello.gi f Tên file (unicode) có ký tự kết thúc NULL (20 bytes) Trả lời từ server 0x90 CONTINUE, còn dữ liệu trên server 0x01C6 Độ dài gói tin = 454 bytes 0x48 Định danh thông tin đầu BODY (dữ liệu file) 0x01C3 Độ dài của thông tin đầu BODY = 448+3 = 451 bytes Mã trả lời 0x . Đoạn dữ liệu file có kích thước 448 bytes Yêu cầu từ client 0x83 PUT, tiếp tục yêu cầu nhận file Mã yêu cầu 0x0003 Độ dài gói tin = 3 bytes Trả lời từ server 0xA0 SUCCESS, đoạn dữ liệu cuối cùng 0x0117 Độ dài gói tin = 279 bytes 0x49 Định danh thông tin đầu END OF BODY Mã trả lời 0x0114 Độ dài của thông tin đầu END OF BODY = 276 bytes 0x . Đoạn dữ liệu file có kích thước 273 bytes 3.4 Ngừng phiên (DISCONNECT) nt cần gửi gói tin DISCONNECT tới server. Để kết thúc phiên giao dịch, clie Yêu cầu từ client byte Ý nghĩa Mã yêu cầu 0x81 DISCONNECT 0x0003 Độ dài gói tin = 3 bytes Trả lời từ server Mã trả lời 0xA0 SUCCESS 0x0003 Độ dài gói tin = 3 bytes OBEX trong điện thoại di Ngày nay, ĐTDĐ không chỉ phương tiện liên lạc đơn thuần mà còn một thiết bị giải trí với nhiều chức năng như nghe nhạc, chụp ảnh, v hoặc lưu lại những khoảnh khắc đ xin giới thiệu hai kiểu kết nối phổ biến nhất trên hầu hế cổng hồng ngoại và Bluetooth; đồng thời hướng dẫn các PC động chơi game. Điều này đồng nghĩa với iệc người dùng luôn có nhu cầu cập nhật những bản nhạc hay, những trò chơi yêu thích áng nhớ trên chiếc điện thoại của mình. Dưới đây tôi t các ĐTDĐ đời mới hiện nay h lập trình trao đổi dữ liệu giữa và ĐTDĐ sử dụng giao thức OBEX qua hai loại kết nối này. ằng C#1. Kết nối qua hồng ngoại b Giao thức IrDA đư tiên năm 1994 v không dâ phạm vi hoạt động lên tới 1 m, góc mở từ tốc độ có thể đạt 4Mbps, cổng h được đưa vào trong hầu hết các ĐTD Trước đây, việc lập trình với cổng hồng cản Int Framewo chóng hơ bằng việc chỉ ra địa chỉ của server (tương t ự như địa chỉ IP) và tê (tươ ợc hiệp hội IrDA giới thiệu lần đầu ới mục đích tăng cường khả năng kết nối y giữa các thiết bị qua ánh sáng hồng ngoại. Với 15 đến 30 độ, ồng ngoại nhanh chóng thiết bị không dây như Đ, PDA . ngoại một rào đối với những ai chưa quen với giao diện lập trình API (Application Programming erface) của Windows, còn ngày nay, với phiên bản .NET 2.0, Microsoft đã đưa vào bộ rk này lớp thư viện IrDA, cho phép người lập trình viết mã dễ dàng và nhanh n. Giống như giao thức TCP/IP, client có thể thiết lập kết nối IrDA tới server n dịch vụ trên server ng tự như TCP Port). Mỗi chiếc g với cổng hồng ngoại t đó. Đoạn m void Form1_Load(object sender, EventArgs e) { /* Ir /* IrDADeviceInfo[] irDevices = irClient.DiscoverDevices(2); /* In thông báo khi không tìm thấy thiết bị nào */ if (irDevices.Length == 0) { ĐTDĐ đều đượ rên ã sau cho phép xác định địa chỉ này: using System.Net.Sockets; Khởi tạo client */ DAClient irClient = new IrDAClient(); Tìm kiếm tối đa 2 thiết bị */ Không tìm thấy thiết bị hồng ngoại"); /* In tên và địa chỉ của từng thiết bị tìm thấy */ for (int i = 0; i < irDevices.Length; i++) { Name:{0}",irDevices[i].DeviceName); ong ĐTDĐ có thể khác nhau mỗi nhà Đ hiện nay đều cung cấp hai dịch vụ EX. Trong phạm vi bài viết này tôi chỉ đề cập đến h vụ IrDA:OBEX, dịch vụ cho phép PC và ĐTDĐ trao đổi dữ liệu qua giao thức EX. Việc kết nối tới dịch vụ này được thực hiện thông qua đoạn mã dướ i đây: sing System.Net.Sockets; oid Form1_Load(object sender, EventArgs e) c gắn một địa chỉ duy nhất tương ứn Console.WriteLine(" } else { Console.WriteLine("Device Console.WriteLine("Device ID:{0}",irDevices[i].DeviceID); } } } Các dịch vụ IrDA được xây dựng sẵn (built-in) tr sản xuất. Tuy nhiên, nhìn chung hầu hết các ĐTD chính là: IrDA:IrCOMM và IrDA:OB dịc OB using System.Net; u v { . /* Thiết lập EndPoint */ IrDAEndPoint irEndPoint = new IrDAEndPoint(irDevices[0].Dev iceID, "IrDA:OBEX"); /* Khởi tạo socket */ Socket irSocket = new Socket(AddressFamily.Irda, SocketType.Stream, ProtocolType.Unspecified); /* Kết nối tới ĐTDĐ qua dịch vụ OBEX*/ irSocket.Connect(irEndPoint); } Như vậy, từ giờ chúng ta có thể trao đổi dữ liệu giữa PC và ĐTDĐ qua irSocket bằng việc push/pull những gói tin OBEX thích hợp như đã đề cập ở phần trên. 2. Kết nối qua Bluetooth bằng VC++ Năm 1994, hãng cung cấp thiết bị viễn thông hàng đầu thế giới Ericsson đã nghiên cứu thành công công nghệ không dây cho phép ĐTDĐ có thể kết nối với các phụ kiện như tai nghe, microphone qua sóng radio. Sau đó 4 năm, tổ chức Bluetooth SIG được thành lập (bao gồm Ericsson, Intel, I phiên bản 1.0A cho công ng IEEE 802.15.1 hoạt động ở t độ có thể đạt 3Mpbs đối v Kể từ phiên bản Windows XP SP1 lập trình Microsoft Bluetooth Stack cho phé Bluetooth socket. Một vấn đề nảy sinh không ph trợ Microsoft Bluetooth Stack, mà phần lớn p (Software Development Kit) riê Bluetooth hỗ trợ Microsoft Blue trong khi dòng IBM lại hỗ tr ợ W Để lập trình với Bluetooth socket chúng ta ph ( BM, Nokia và Toshiba) đã chính thức đưa ra đặc tả kỹ thuật hệ Bluetooth vào năm 1999. Bluetooth hay còn có cái tên ần số 2,4 GHz, phạm vi phủ sóng lên tới 100 m (Class 1), tốc ới phiên bản 2.0+EDR (Enhanced Data Rate). , Microsoft đã đưa vào hệ điều hành của mình mô hình p kết nối với thiết bị Bluetooth thông qua ải tất cả các chipset Bluetooth đều hỗ hải có driver đi kèm cũng như bộ SDK ng để phát triển. Chúng ta có thể tìm thấy chipset tooth Stack trên các máy tính xách tay SONY VAIO, idcomm Bluetooth Stack (bộ SDK có giá tới 1400 USD). ải cài bộ SDK for Windows XP SP2 ://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.ht Bộ SDK này sẽ cung cấp một số file header cũng như các thư viện cần thiết trong quá ưa hỗ trợ Bluetooth nên việc viết mã phải hoàn ền thư viện API có sẵn của Windows. toàn giống như thiết bị hồng ngoại, chỉ có điều, bạn phải tự thân vận động. D ưới đây đoạn mã thời in ra tên và địa chỉ http m ). trình lập trình. Do phiên bản .NET 2.0 ch toàn thực hiện trên n Cách tiếp cận thiết bị Bluetooth hoàn thay vì sử dụng hàm có sẵn của .NET, viết bằng VC++ 2005 cho phép tìm kiếm thiết bị Bluetooth, đồng [...]... tìm thấy ở trên */ sin.btAddr = bts->btAddr; /* định danh dịch vụ OBEX Object Push */ sin.serviceClassId = OBEXObjectPushServiceClass_UUID; sin.port = 0; /* Kết nối tới dịch vụ OBEX Object Push */ int result = connect(s, (SOCKADDR*) &sin, sizeof(sin)); WSACleanup(); } } Như vậy bằng việc sử dụng các hàm send() và recv() cùng với giao thức OBEX, chúng ta có thể dễ dàng gửi và nhận file giữa PC và ĐTDĐ... như: truyền file, in ảnh, tai nghe Những dịch vụ này đều có một định danh duy nhất (UUID) và được định nghĩa sẵn trong file header bthdef.h Trong đó dịch vụ OBEX Object Push có vai trò tương tự như dịch vụ IrDA :OBEX của thiết bị hồng ngoại Dưới đây đoạn mã cho phép kết nối tới dịch vụ này: #include void main() { /* Khởi tạo Windows Socket */ if (WSAStartup(wVersionRequested, &m_data) ==... hiện nay phục vụ nhu cầu trao đổi dữ liệu giữa PC và ĐTDĐ Để thuận tiện cho việc phát triển ứng dụng trên nền NET, tôi đã viết lớp thư viện Bluetooth cho phép dễ dàng kết nối tới thiết bị Bluetooth tương tự như lớp thư viện IrDA của Microsoft (có thể tải về tại website www.hitekgroup.net) Chương trình demo do được viết riêng cho ĐTDĐ Sony Ericsson T610 nên có thể làm việc không hiệu quả trên các dòng... Ericsson T610 nên có thể làm việc không hiệu quả trên các dòng máy khác Hy vọng qua bài viết này, các bạn có thể tự xây dựng cho mình một ứng dụng quản lý file phù hợp với chiếc điện thoại của mình HT TH Tài liệu và chương trình demo có thể tải tại website www.hitekgroup.net hoặc http://hitekgroup.cabspace.com/ HT HT TH TH ... (WSAStartup(wVersionRequested, &m_data) == 0) { /* Thiết lập thông số tìm kiếm */ WSAQUERYSET querySet; memset(&querySet, 0, sizeof(querySet)); querySet.dwSize = sizeof(querySet); /* Xác lập phạm vi tìm kiếm các thiết bị Bluetooth */ querySet.dwNameSpace = NS_BTH; HANDLE hLookup; /* Thiết lập các thông tin trả về */ DWORD flags = LUP_RETURN_NAME | LUP_CONTAINERS | LUP_RETURN_ADDR | LUP_FLUSHCACHE | LUP_RETURN_BLOB; . OBEX LÀ GÌ? OBEX (OBject EXchange) là giao thức trao đổi dữ liệu giữa các thiết bị dùng cổng hồng ngoại được. Phiên bản hiện tại là 1.0, do đó giá trị này là 0x10. Flags: Giá trị này luôn là 0x00 trong phiên b Maximum OBEX ket len tr g giao ức OBEX mà thiết bị có

Ngày đăng: 10/12/2013, 04:15

Hình ảnh liên quan

1. Vị trí OBEX trong mô hình OSI - Tài liệu OBEX LÀ GÌ? pptx

1..

Vị trí OBEX trong mô hình OSI Xem tại trang 1 của tài liệu.
Hình 1: Giao thức OBEX tro gn mô hình OSI - Tài liệu OBEX LÀ GÌ? pptx

Hình 1.

Giao thức OBEX tro gn mô hình OSI Xem tại trang 2 của tài liệu.
2. Cấu trúc gói tin trong giao thức phiên OBEX - Tài liệu OBEX LÀ GÌ? pptx

2..

Cấu trúc gói tin trong giao thức phiên OBEX Xem tại trang 2 của tài liệu.
Hình 2: Lựa chọn kết nối Bluetooth - Tài liệu OBEX LÀ GÌ? pptx

Hình 2.

Lựa chọn kết nối Bluetooth Xem tại trang 12 của tài liệu.
Hình 3: Các file trong thư mục điện thoại - Tài liệu OBEX LÀ GÌ? pptx

Hình 3.

Các file trong thư mục điện thoại Xem tại trang 14 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan