Nhận, bóc tách và phân loại đƣợc các gói tin từ các thiết bị gửi về khác

Một phần của tài liệu Hệ thống giám sát hành trình phương tiện sử dụng công nghệ định vị GPS và công nghệ truyền dẫ GPRS (Trang 54)

nhau rồi lƣu vào CSDL

Sau khi đã tạo kết nối thành công, mọi quá trình xử lý tiếp theo chƣơng trình giao cho đối tƣợng thuộc lớp ClientConnection xử lý.

Do quá trình bóc tách gói tin phải xử lý đến từng byte dữ liệu nhận đƣợc, nên khi nhận đƣợc dữ liệu nó sẽ tạm thời copy vào mảng dữ liệu dataProcess để đƣa vào hàm xử lý ProccesArray xử lý tiếp.

Array.Copy(data, dataProcess, bytesRead) ProceesArray(dataProcess, 0, bytesRead)

Các bƣớc xử lý dữ liệu trong magnr dataProcess

1. Hàm ProccessArray đƣợc thiết kế đệ quy để quét toàn bộ mảng dữ liệu rồi đƣa vào hàm ProcessByte.

2. Hàm ProcessByte phát hiện ra đoạn dữ liệu của từng gói tin, tiếp theo đƣa dữ liệu gói tin vào hàm ProcessPackage

3. Hàm ProcessPackage xử lý từng gói tin rồi đƣa ra quyết định lƣu vào cơ sở dữ liệu

4. Tùy từng kiểu gói tin sẽ gọi các hàm xử lý cho từng loại gói tin Các loại gói tin và các hàm xử lý tƣơng ứng

Bảng 3.7: Mô tả cách xử lý gói tin nhận đƣợc từ thiết bị gửi về

PACKAGE_TYPE.LOGIN Gói tin đăng nhập Khi nhận được gói đăng nhập, chương trình sẽ bóc tách gói tin và lấy được số imei. Từ số imei của thiết bị gửi lên, chương trình sẽ tìm tất cả các kết nối của người dùng để khai báo nhận sự kiện khi một ảnh đã nhận đầy đủ từ thiết bị và chủ động yêu cầu hiển thị hình ảnh lên web của người dùng.

Và sau đó cập nhật trạng thái kết nối của thiết bị vào cơ sở dữ liệu PACKAGE_TYPE.GPS Gói tin định vị

Gói tin này hiện tại không được sử dụng bởi vì dữ liệu đã được gửi trong gói MERGE

For Each viewer As MjpegWriter In

ClientConnection.clientViewL(allInfo.loginInfo.imei) AddHandler Me.ImageReceived, AddressOf

viewer.ImageReceived

PACKAGE_TYPE.LBS Gói tin thông tin khác Gói tin này hiện tại không được sử dụng bởi vì dữ liệu đã được gửi trong gói MERGE

PACKAGE_TYPE.MERGE Gói tin thông tin tổng hợp

Trong gói tin này chƣa thông tin về GPS và LBS

- Dữ liệu GPS khi nhận đƣợc từ gói tin này sẽ đƣợc biến đổi để ra dạng dữ liệu mà hàm API của bản đồ có thể hiểu đƣợc ta dùng hàm biến đổi nhƣ sau:

- Dữ liệu LBS đƣợc bóc tách nhƣ sau:

Public Sub getGpsInfo(ByVal package() As Byte, ByVal start As Byte)

Dim index As Byte = start

gpsInfo.NumSatellites = package(index) index += 1 gpsInfo.latitude = (package(index) * 256 * 256 * 256 + package(index + 1) * 256 * 256 + package(index + 2) * 256 + package(index + 3)) / 1800000 index += 4 gpsInfo.longitude =(package(index) * 256 * 256 * 256 + package(index + 1) * 256 * 256 + package(index + 2) * 256 + package(index + 3)) / 1800000 index += 4 gpsInfo.speed = package(index) index += 1 gpsInfo.getStatus(package(index)) gpsInfo.getCourse(package(index), package(index + 1)) End Sub

PACKAGE_TYPE.STATUS Gói tin trạng thái

PACKAGE_TYPE.SNR Gói tin thông tin về số vệ tinh

- Bóc tách thông tin về trạng thái định vị, trạng thái nguồn điện và trạng thái mạng của thiết bị

PACKAGE_TYPE.IO_PORT Gói tin xử lý

- Bóc tách thông tin về trạng thái của thiết bị

PACKAGE_TYPE.DRIVER_ID Gói tin mã lái xe

- Chứa thông tin mã của lái xe

PACKAGE_TYPE.IMG_CAM_BEGIN Gói tin Xác định bắt đầu của bức ảnh

- Chứa dữ liệu gói đầu tiên của bức ảnh

PACKAGE_TYPE.IMG_CAM_DATA Gói tin dữ liệu của bức ảnh

- Chƣa thông tin gói tin dữ liệu của bức ảnh

PACKAGE_TYPE.IMG_CAM_END Gói tin kết thúc bức ảnh

- Chứa dữ liệu gói kết thúc của bức ảnh

Một phần của tài liệu Hệ thống giám sát hành trình phương tiện sử dụng công nghệ định vị GPS và công nghệ truyền dẫ GPRS (Trang 54)

Tải bản đầy đủ (PDF)

(89 trang)