Bảng 3.5. Các tham số trong PDU yêu cầu gửi tin
MMS PDU: Các đơn vị truyền thông (bao gồm MMSC và máy khách MMS) giao tiếp bởi tập các chuyển tác trên 8 giao diện MMS. Mỗi chuyển tác bao gồm một yêu cầu dịch vụ và một báo cáo kết quả giao dịch . Một gói dữ liệu giao thức (PDU) được liên kết với mỗi yêu cầu hay phản hồi của dịch vụ, PDP có thể xuất hiện nhiều hơn một lần với các giao diện MMS. Một PDU được tạo thành bởi một tập ủy quyền, tùy chọn hay các tham số quy định.
Cấu trúc SMIL MMS: Synchronized Multimedia Integration Language – Ngôn ngữ tích hợp đa phương tiện đồng bộ(SMIL), là một ngôn ngữ dựa trên XML được đưa ra bởi W3C. Một phiên bản phổ biến của ngôn ngữ này, SMIL 2.0 được dùng để thiết lập các slide đa phương tiện. SMIL không phải là một định dạng phương
Tên trƣờng Mô tả
X-Mms-Message-Type Xác định loại PDU
X-Mms-Transaction-ID Định danh cho chuyển tác X-Mms-MMS-Version Phiên bản MMS
Date Thời gian thông điệp đến MMSC
From Địa chỉ người gửi
To Địa chỉ người nhận
Cc Địa chỉ người nhận
Bcc Địa chỉ của người nhận
Subject Chủ đề của thông điệp
X-Mms-Message-Class Lớp của thông điệp (Auto/Personal) X-Mms-Expiry Thời gian hiệu lực của thông điệp MMS X-Mms-Delivery-Time Thời gian yêu cầu chuyển thông điệp X-Mms-Priority ưu tiên của thông điệp
X-Mms-Sender-Visibility Tùy chọn ẩn địa chỉ người gửi (Hide/Show) X-Mms-Delivery-Report Yêu cầu thông báo đã gửi(Yes/No)
X-Mms-Read-Report Yêu cầu thông báo đọc (Yes/No) X-Mms-Reply-Charging Yêu cầu thông báo phản hồi thay đổi X-Mms-Reply-Charging-Deadline Thông báo thời hạn cuối phản hồi thay đổi X-Mms-Reply-Charging-Size Cỡ lớn nhất của phản hồi thay đổi
X-Mms-Reply-Charging-ID Định danh phản hồi thay đổi X-Mms-Store Yêu cầu lưu trữ MMBox X-Mms-MM-State Trạng thái lưu trữ MMBox X-Mms-MM-Flags Cờ thông điệp MMSBox Content-Type Nội dung đa phương tiện
tiện truyền thông hay một dạng mã hóa mà là một công nghệ cho phép tích hợp phương tiện truyền thông. SMIL cung cấp một tập các đối tượng phương tiện truyền thông có thể được đồng bộ theo thời gian và tổ chức linh động. Do hạn chế thiết bị nhỏ, việc triển khai hồ sơ cơ bản SMIL là tương đối khó khăn. Để khắc phục, một nhóm các nhà sản xuất đã thiết kế một hồ sơ SMIL nhỏ gọn hơn, được gọi là SMIL MMS, hỗ trợ bởi hầu hết các điện thoại MMS. Open Mobile Alliance hiện tại là tổ chức trong chịu trách nhiệm duy trì và xuất bản các đặc điểm kỹ thuật MMS SMIL như một phần của [OMAMMS- Conf] (có từ MMS 1.1). Các mục tiêu thiết kế các slide đa phương tiện trong SMIL:
Mô tả các hành vi thời gian của các slide thuyết trình.
Mô tả cách bố trí của trình bày trên một màn hình.
Các hyper link liên kết với các đối tượng phương tiện truyền thông.
Xác định các ràng buộc với hệ thống mạng.
3.3.3. Lập trình gửi/nhận SMS với tập lênh AT
Có hai cách để gửi tin nhắn SMS từ một máy tính đến điện thoại di động:
Kết nối một điện thoại di động hoặc một modem với máy tính. Sau đó sử dụng máy tính và AT lệnh để điều khiển điện thoại di động hoặc modem GSM / GPRS để gửi tin nhắn SMS.
Kết nối máy tính với trung tâm tin nhắn SMS (SMSC) hoặc gateway SMS của một của nhà cung cấp dịch vụ tin nhắn SMS. Sau đó gửi tin nhắn SMS bằng cách sử dụng một giao thức và giao diện được hỗ trợ bởi các SMSC hoặc gateway SMS.
Để gửi tin nhắn SMS phải sử dụng một thẻ SIM hợp lệ từ các nhà cung cấp dịch vụ mạng không dây cắm vào một điện thoại di động hoặc modem và kết nối với máy tính. Kết nối một điện thoại di động, modem với máy tính thông qua cổng nối tiếp, một cáp USB, Bluetooth hoặc liên kết hồng ngoại phụ thuộc vào khả năng hỗ trợ của điện thoại di động, modem. Ví dụ, nếu một điện thoại di động không hỗ trợ Bluetooth thì nó không thể kết nối với máy tính thông qua liên kết Bluetooth.
Sau khi kết nối một điện thoại di động hoặc modem với máy tính người lập trình sử dụng các lệnh AT để điều khiển việc gửi tin nhắn. Ngoài các lệnh AT chuẩn, điện thoại di động và modem hỗ trợ một bộ mở rộng các lệnh AT. Sử dụng các lệnh AT mở rộng cho phép kiểm soát việc gửi và nhận tin nhắn SMS. Dưới đây là các lệnh AT cơ bản làm việc với tin nhắn [13]:
Lệnh AT+CMGF: Được sử dụng để hướng dẫn cho modem hoạt động ở chế độ văn bản SMS hoặc PDU.
Cú pháp của lệnh là AT + CMGF = <mode>, trong đó mode có hai giá trị, 0 là chế độ PDU, 1 chỉ định modem hoạt động ở chế độ văn bản.
Để xác định xem modem hỗ chế độ gửi tin nhắn nào sử dụng lệnh AT + CMGF =?. Nếu kết quả trả về là "+ CMGF: (0,1)" thì 0 là chế độ PDU và 1 chế độ văn bản. Nếu kết quả trả về là "+ CMGF: (0)", thì modem không hỗ trợ gửi SMS trong chế độ văn bản.
Lệnh AT+CMGW: Lệnh AT + CMGW được sử dụng để ghi một tin nhắn SMS trong chế độ văn bản vào bộ nhớ lưu trữ của modem và chỉ định số điện thoại người nhận. Cú pháp: AT+CMGW = <number> number là số điện thoại di động của người nhận. Nếu thành công, các modem sẽ trả về một dấu nhắn ">" cho phép bắt đầu nhập nội dung tin nhắn SMS . Để kết thúc việc nhập tin nhắn SMS người lập trình cần nhập chuỗi kết thúc, thường là Ctrl + Z. Nếu thành công kết quả trả về sẽ là: +CMGW: <index> cho biết tin nhắn được gắn với chỉ số index trên bộ nhớ của modem.
Lệnh AT+CMSS: Được sử dụng để gửi tin nhắn từ bộ nhớ của modem. Cú pháp của lệnh là AT+CMSS=<index>, trong đó là vị trí của tin nhắn trên bộ nhớ của modem. Ví dụ: AT+CMSS=1 gửi tin nhắn số 1 trong bộ nhớ của modem.
Lệnh AT+CMGD: Lệnh này được sử dụng để xóa một tin nhắn tại một vị trí trong bộ nhớ. Cú pháp: AT+CMGD=<index>, trong đó index là chỉ số của tin nhắn cần xóa trên bộ nhớ của modem.
Lệnh AT+CMGS: Cho phép gửi một tin nhắn tới một thuê bao GSM. Lệnh này tương tự như AT+CMGW. Tuy nhiên, thay vì lưu trữ tin nhắn, AT+CMGS sẽ cho phép gửi trực tiếp tin nhắn.
Lệnh AT+CMGR: Cho phép đọc một tin nhắn. AT+CMGR=<index>, Trong đó index là vị trí của thông điệp được lưu trong bộ nhớ. Chuỗi trả về có định dạng như sau:
+CMGR:<message type>, <sender number>, <time> <CR><LF> [<content>] <CR><LF>
OK
3.3.4. Lập trình kết nối mạng Internet với tập lênh AT
Nhóm lệnh đăng ký mạng: Trước khi bắt đầu phiên GPRS, thiết bị hay thuê bao cần phải đăng ký mạng. [13].
Lệnh AT+COPS: Lệnh này được dùng để lựa chọn mạng. Việc lựa chọn mạng có thể được thực hiện bằng tay hoặc tự động.
AT+COPS=1,2, “MCC MNC”: Tự thiết lập mạng, nếu không thành công, modem sẽ được đặt trong chế độ thiết lập bằng tay.
AT+COPS=4,2, “MCC, MNC”: Tự thiết lập mạng, Nếu không thành công, modem sẽ được đặt trong chế độ thiết lập tự động.
Trong đó:
MCC: Mobile Country Code – Mã quốc gia.
MNC: Mobile Network Code – Mã mạng di động.
Lệnh AT+CREG: Lệnh này dùng để đăng ký mạng, và kiểm tra trạng thái mạng GSM. Với đăng ký GSM, người dùng không nên cố gắng để đăng ký GPRS hoặc thực hiện chức năng quay số. Mặc định, một modem sẽ tự động đăng ký với một mạng mà người dùng không cần có bất kỳ hành động nào.
Trước khi thực hiện đăng ký GPRS, phải đảm bảo đăng ký GSM đã thành công. AT+CREG=1: Chỉ cho phép hiển thị tình trạng mạng đã đăng ký.
AT+CREG=2: Cho biết tình trạng đăng ký của mạng, xác định dịch vụ và cell.
Lệnh AT+CGATT: Đính kèm GPRS. Lệnh này cho phép đính kèm GPRS sau khi đã đăng ký GSM. Nếu trạng thái đã được xác định trước thì lệnh sẽ bị bỏ qua và thông điệp trả vế sẽ là OK. Nếu trạng thái yêu cầu không đáp ứng được thì một lỗi sẽ được trả về. Các bối cảnh PDP sẽ được tự động ngừng khi trạng thái đính kèm được chuyển sang trạng thái loại bỏ.
AT+CGATT=<state>.
Trong đó state có thể là một trong hai giá trị:
0: loại bỏ.
1: kích hoạt.
AT+CGATT=1: Đăng ký GPRS. Nếu kết quả trả về là OK có nghĩa là việc đăng ký GPRS đã thành công.
AT+CGATT=0: Hủy bỏ việc đăng ký GPRS.
Nhóm lệnh thiết lập một phiên làm việc [13].
Lệnh AT+CGDCONT: định nghĩa một bối cảnh PDP. Như đã được giới thiệu ở phần trước, bối cảnh PDP cần phải được đăng ký trước khi dữ liệu được truyền. AT+CGDCONT=<1>, <PDP type> ,<APN>: Dùng để thiết lập APN. Trong đó PDP
type chỉ định giao thức truyền thông giữa ME với mạng, PDP type có thể là một trong hai giá trị sau:
IP (Internet Protocol).
PPP (Point to Point Protocol).
APN: Là một chuỗi được cung cấp từ nhà điều hành GPRS, APN xác định gateway được sử dụng giữa mạng GPRS và Internet.
Ví dụ: AT+CGDCONT=1,"IP","e-connect".
Lệnh AT+CGACT: Lệnh này dùng để kích hoạt hoặc gỡ bỏ một bối cảnh PDP. Sau khi lệnh được hoàn thành, thiết bị đầu cuối di động sẽ thay đổi trạng thái. Nếu như bối cảnh PDP đã được xác định trong trạng thái yêu cầu, trạng thái cho bối cảnh đó sẽ không bị thay đổi. Nếu trạng thái yêu cầu cho mỗi bối cảnh không thể đạt được, một lỗi sẽ xảy ra. Nếu thiết bị đầu cuối di động chưa đính kèm GPRS thì các hình thức kích hoạt của lệnh sẽ được thực thi.
AT+CGACT= <state>, <cid> Trong đó:
State: Trạng thái kích hoạt của bối cảnh PDP:
0: loại bỏ.
1: kích hoạt.
Cid: Là tham số xác định bối cảnh PDP cụ thể.
AT+CGACT=1,1: Để kích hoạt bối cảnh PDP của bối cảnh PDP 1.
Nhóm lệnh kết nối và truyền thông đến một Server TCP/IP, Sau khi đăng ký mạng, người lập trình cần sử dụng các lệnh AT sau để có thể tạo kết nối đến một máy chủ TCP trên mạng và tiến hành các bước nhận và gửi dữ liệu [13]:
Lệnh AT+CIPSHUT: Dùng để hủy đính kèm ngữ cảnh PDP GPRS. Thường được dùng để đóng các kết nối đã mở trước đó. Cú pháp: AT+CIPSHUT, nếu thành chuỗi kết quả sẽ là SHUT OK, ngược lại là ERROR.
Lệnh AT+CSTT: Dùng để thiết lập tham số APN.
AT+CSTT=<APN>, <user>, <pass>, trong đó APN là một chuỗi đưa ra tên của APN GPRS, user và pass là account GPRS do nhà điều hành mạng cung cấp.
Lệnh AT+CIPSTART: Lệnh này dùng để bắt đầu một kết nối TCP/UDP. AT+CIPSTART= <mode>, <IP address>, <port>
Trong đó chế độ có thể là: TCP, UDP. IP address là địa chỉ của server cần kết nối. port là địa chỉ cổng dịch vụ của server. Nếu kết nối thành công, chuỗi kết quả sẽ là “CONNECT OK”.
Lệnh AT+CIPSEND: Gửi dữ liệu qua kết nối TCP/UDP. Cú pháp của lệnh AT+CIPSEND dành cho đơn kết nối:
AT+CIPSEND=length: Lệnh gửi dữ liệu, với length là độ dài dữ liệu chuẩn bị gửi, nếu thành công, người dùng có thể nhập dữ liệu để gửi, kết thúc chuỗi dữ liệu bằng CTRL+Z.
Lệnh AT+CIPCLOSE: Dùng để đóng kết nối TCP/UDP. Cú pháp:
AT+CIPCLOSE. Kết quả trả về nếu thành công là CLOSE OK, ngược lại là ERROR.
3.3.5. Lập trình gửi MMS với tập lênh AT
Để gửi MMS với các modem có hỗ trợ chế độ MMS, người lập trình cần thực hiện tuần tự các lệnh AT như sau [12]:
Lệnh AT+CMMSINIT: Lệnh này cho phép khởi động chức năng MMS của modem, cú pháp của lệnh là AT+CMMSINIT, nếu thành công chuỗi trả về sẽ là OK người dùng sẽ dùng các lệnh khác để soạn và gửi tin nhắn, ngược lại là ERROR.
Lệnh AT+CMMSURL: Thiết lập địa chỉ URL của MMSC. Các tin nhắn MMS nhận và gửi trước khi đến modem đều cần phải thông qua một MMSC, vì vậy cần cấu hình địa chỉ của MMSC. Cú pháp của lệnh như sau:
AT+CMMSCURL=<mmsurl>, cho phép thiết lập địa chỉ URL cho MMSC, với mmsurl là địa chỉ của MMSC. Địa chỉ này được đưa ra bởi nhà cung cấp mạng.
Lệnh AT+CMMSCID: Thiết lập các tham số mạng cho MMS. Cú pháp: AT+CMMSCID=<value>, trong đó value là các tham số mạng.
Ví dụ: AT+CMMSCID=1, định danh của phiên kết nối mạng mới Bearer là 1.
Lệnh AT+CMMSPROTO: Thiết lập tham số giao thức và MMS proxy. Cú pháp của lệnh: AT+CMMSPROTO=<Gateway>, <Port>, trong đó Gateway là địa chỉ IP của MMS proxy, Port là số hiệu cổng của MMS proxy.
Ví dụ: AT+CMMSPROTO= “192.168.233.10”,80 thiết lập các tham số MMS proxy của mạng Viettel.
Lệnh AT+CMMSEDIT: Lệnh này dùng để khởi động quá trình soạn tin nhắn MMS. Cú pháp cơ bản của lệnh là AT+CMMSEDIT=<mode>, trong đó mode mô tả
chế độ soạn tin nhắn, mode có hai giá trị: 1 là cho phép soạn tin nhắn MMS và 0 thì ngược lại.
Lệnh AT+CMMSDOWN: Lệnh này cho phép truyền dữ liệu – nội dung của tin nhắn (hoặc là tiêu đề tin nhắn) đến modem qua cổng nối tiếp, cú pháp của lệnh AT+CMMSDOWN=<type>, <size>, <time>, [name], trong đó type là một chuỗi có các giá trị “TITLE”, “TEXT”, “PIC” mô tả loại nội dung truyền ra cổng nối tiếp, size là kích thước byte của dữ liệu truyền, time là thời gian tối đa dành cho quá trình truyền dữ liệu, name là tên của file truyền bao gồm cả phần mở rộng, trong đó ảnh và văn bản có cỡ không quá 255 byte. Trước khi truyền dữ liệu cần được đổi sang dạng hexa.
Lệnh AT+CMMSSEND: Lệnh này được dùng để bắt đầu truyền MMS. Cú pháp của lệnh là AT+CMMSSEND=<address>, trong đó address là địa chỉ của người nhận. Nếu thành công chuỗi trả về sẽ là OK và ngược lại là ERROR.
Lệnh AT+CMMSTERM: Lệnh này dùng để thoát khỏi chức năng MMS của modem. Cú pháp của lệnh là AT+CMMSTERM, nếu thành công chuỗi trả về sẽ là OK và ngược lại là ERROR.
3.4. Lập trình điều khiển thiết bị Webcam
Việc kết nối với Webcam và điều khiển thiết bị này Capture được bằng Java có rất nhiều thư viện, tuy nhiên, xét về tốc độ, hiệu quả và khả năng triển khai trên các vi điều khiển thông minh thì OpenCV [9] là một lựa chọn tốt.
OpenCV là thư viện xử lý ảnh và thị giác máy tính lớn với hơn 500 thuật toán do hãng Intel phát triển bao gồm các hàm được viết bằng ngôn ngữ C và C++. OpenCV được sử dụng rất rộng rãi, vì lý do đó nên OpenCV có phiên bản dành riêng cho hệ điều hành Android và cho vi điều khiển ARM. Để lập trình Java với OpenCV cần thông qua một công cụ khác là JavaCV.
JavaCV là một thư viện cung cấp các hàm trên ngôn ngữ lập trình Java cho các thư viện thường được sử dụng bởi các nhà nghiên cứu thị giác máy tính OpenCV. Cho phép các lập trình viên Java có thể sử dụng OpenCV thông qua ngôn ngữ Java.
Một số mục tiêu thiết kế chính của OpenCV:
Nghiên cứu thị giác máy tính, không chỉ cung cấp mã nguồn mở mà còn tối ưu hóa cho cơ sở thị giác máy tính cơ bản.
Không tái phát minh quay vòng.
Phổ biến kiến thức về thị giác máy tính bằng cách cung cấp một cơ sở hạ tầng chung cho các nhà phát triển có thể sử dụng để xây dựng các ứng dụng trên đó, vì vậy mà sẽ mã nguồn sẽ dễ đọc và tái sử dụng.
Thúc đẩy các ứng dụng thương mại thị giác máy tính bằng cách cung cấp mã nguồn tối ưu hóa miễn phí mà không cần cam kết.
OpenCV có kiến trúc như sau:
Hình 3.5. Kiến trúc OpenCV
CV: Là thành phần chứa các xử lý hình ảnh cơ bản và các thuật toán thị giác máy tính cấp thấp: Lọc ảnh, biến đổi hình học hình ảnh, biến đổi tùy biến hình ảnh, biểu đồ, phát hiện tính năng, phân tích chuyển động và thao dỗi đối tượng. Phân tích cấu trúc và mô tả hình dạnh, phân chia phẳng, phát hiện đối tượng, hiệu chuẩn camera và tái thiết 3D.
ML: là thư viện học máy, trong đó bao gồm nhiều công cụ phân lớp và phân nhóm thống kê.
HighGUI: Cho phép thao tác trên file dữ liệu - các chứa năng để lưu trữ