Cấu trúc gói dữ liệu

Một phần của tài liệu Điều khiển xe lăn điện thông minh qua sóng não p2 (Trang 37 - 39)

F x hx Rx  (2.41) Hàm số (2.41) là hàm chỉ số chất lượng, trong đó x là vector các trọng số liên kết và

2.5.2 Cấu trúc gói dữ liệu

Gói dữ liệu bao gồm: packet header (sync+sync+plength) tiếp theo đó là data payload và kết thúc khung là checksum byte, mỗi gói dữ liệu có độ dài tối thiểu là 4 bytes và tối đa là 173 bytes.

Packet header: gồm 3 bytes, 2 byte đồng bộ (syncronization) (0xAA, 0xAA) theo ngay sau đó là byte chỉ thị độ dài gói PLENGTH. 2 byte đồng bộ (SYNC) có giá trị 0xAA (170) được dùng để thông báo sự bắt đầu của quá trình truyền gói dữ liệu

46

mới, Sử dụng 2 byte đồng bộ (0xAA) liên tiếp để giảm khả năng 1 byte 0xAA khác xuất hiện trong vùng payload có thể bị hiểu nhầm là khởi đầu của 1 gói dữ liệu mới, tuy vậy vẫn còn có khả năng 2 byte liên tiếp xuất hiện trong vùng data payload (điều này dẫn đến sai sót không thể tránh khỏi) chính vì thế tổ hợp 2 bytes SYNC + 1 byte PLENGTH đảm bảo rằng nhầm lẫn trên sẽ không bao giờ xảy ra trong quá trình truy xuất lấy dữ liệu từ gói. Giá trị PLENGTH byte là chiều dài của data payload nằm trong tầm từ 0 đến 169 các giá trị của PLENGTH nằm ngoài tầm này đều được hiểu là lỗi; Lưu ý rằng giá trị của Plength là độ dài của data load, không phải là độ dài của toàn gói, độ dài của toàn gói dữ liệu là Plength + 4.

Data Payload: là một chuỗi các bytes, số lượng byte trong data payload là giá rị của PLENGTH byte trong vùng header. Muốn trích xuất các thông tin hữu ích của thiết bị (raw data, attention, meditation, power band,…) từ gói dữ liệu thì cần phải nắm rõ cấu trúc của data payload, chi tiết về cấu trúc của data pay load sẽ được trình bày ở các mục sau.

Payload checksum: được sử dụng để xác định kết thúc của 1 gói dữ liệu hiện thời giá trị của checksum byte được xác định như sau: Cộng tất cả các byte có trong data payload, lấy 8 bit có trọng số nhỏ nhất của tổng, thực hiện đảo từng bit của chuỗi 8 bit có trọng số nhỏ nhất này. Khi phía thu nhận được 1 gói dữ liệu phải thực hiện cả 3 bước trên để xác định check sum byte cho data payload vừa nhận và so sánh kết quả có được với checksum byte của gói nếu checksum byte có được từ tính toán khác với checksum byte của gói thì toàn bộ dữ liệu của gói phải bị loại bỏ vì không hợp lệ. Trong trường hợp gói dữ liệu là hợp lệ phía thu sẽ tiếp túc thực hiện trích xuất dữ liệu theo các bước sẽ được trình bày trong phần cấu trúc data payload.

Cấu trúc data payload: khi checksum byte của gói được xác nhận là hợp lệ, tiến hành thực hiện phân tích các byte của data payload. Data payload là 1 chuỗi liên tục các Data value (raw data, power band,…) mỗi nhóm các byte mang thông tin của từng loại data value riêng biệt (mã phân loại, độ dài byte và giá trị của data value) được

47

gọi là data row. Muốn thực hiện phân tích dữ liệu từ data payload trước hết phải phân tích được toàn bộ các data row. Định dạng của data row như sau:

(EXCODE) (CODE) (LENGTH) (VALUE)

Mỗi data row thường được khởi đầu bởi 0 hoặc nhiều hơn các excode byte (0x55) (extended code) số lượng excode byte thể hiện extended code level, extended code level cũng với code byte được sử dụng để xác định loại data value. Nếu code byte nằm trong tầm từ 0x00 đến 0x7F thì data value được hiểu mặc định có dài 1 byte (single byte); trong trường hợp này data row sẽ không cần có vlength byte, mà theo sau code byte chính là data value. Tuy nhiên nếu code byte lớn hơn 0x7F thì theo sau code byte là vlength byte giá trị của vlength byte chính là số lượng byte của data value.

Bảng 2.1 Bảng định nghĩa Single Byte code

Extened code level code Length (single byte) Loại data value

0 0x02 - POOR_SIGNAL

0 0x04 - Attention

0 0x05 - Meditation

Bảng 2.2 Multi Byte Code

Extened code level code Length Loại data value

0 0x80 2 Raw wave

0 0x83 24 Power band

- 0x55 - EXCODE

- 0xAA - SYNC

Sau khi nắm rõ cấu trúc khung, gói, data value ta tiến hành phân tích dữ liệu.

Một phần của tài liệu Điều khiển xe lăn điện thông minh qua sóng não p2 (Trang 37 - 39)

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

(40 trang)