Đặc tính của giao thức truyền thông Full

Một phần của tài liệu Nghiên cứu hệ thống biểu quyết điện tử số (Trang 29)

Trong hệ thống biểu quyết điện tử số DCN sử dụng giao thức truyền thông Full cung cấp đầy đủ chức năng giao thức bao gồm truyển lại và kiểm tra truyền thông. Trong hệ thống Multi - CCU thì đòi hỏi số lƣợng lớn bộ nhớ khi sử dụng giao thức này.

Đặc tính của giao thức truyền Full:

- Ƣu tiên sử dụng phát hiện header bằng việc sử dụng escape handling. - Thủ tục cung cấp thông tin ACK và NACK

- Thông tin đƣợc gửi bằng một khối. Bộ điều khiển trung tâm kiểm tra nếu mỗi byte nhận đƣợc trong 50 ms của byte trƣớc. Nếu không thì gói NACK đƣợc gửi đi.

- Dựa vào việc nhận gói NACK sau đó thông tin đƣợc gửi lại.

- Mỗi thông tin bao gồm một số tuần tự. Việc nhận sử dụng dãy tuần tự này để nhận thông tin.

- Khi không có gói ACK đƣợc nhận trong 2 giây sau khi kết thúc việc truyền dữ liệu thì sẽ truyền lại.Tổng số truyền lại thông tin là 2 lần trƣớc khi truyền gói dữ liệu bị huỷ bỏ.

- Kiểm tra kết nối sử dụng heartbeat. Mỗi gói nhận đƣợc có giá trị heart beat chính xác. Khi vƣợt qua thời gian heartbeat thì truyền thông sẽ dừng lại. Tất cả gói dữ liệu bị tạm dừng sẽ bị huỷ bỏ. Trên các ứng dụng sẽ thông báo đến bộ điều khiển từ xa là truyền thông lỗi, thất bại.

- Trong trƣờng hợp đặc biệt thay đổi thông số truyền thông đƣợc thiết lập thông qua MDSC_COMMUNICATION_PARAMS: sau khi truyền thông tin này hệ thống đợi trả lời. Điều này giảm thông số truyền qua.

1. Định dạng thông tin header:

Header có kiểu nhƣ sau:

typedef struct { BYTEbyEscape; // có giá trị 0xC8 BYTEbyHeaderType; BYTEbySequence; } RSMT_HEADER;

byEscape Escape byte dùng cho nhận dạng phần header. Dạng escape byte kết hợp cùng với loại tiêu đề để định nghĩa ra mục đích của gói dữ liệu.

byHeaderType Thông tin loại gói dữ liệu

bySequence Thông tin tuần tự khi gói dữ liệu đƣợc kích hoạt

2.Định nghĩa kiểu gói dữ liệu:

Đặc tính giao thức Full sử dụng nhiều loại header để nhận biết thông tin truyền đi. Sau đây là các loại headertypes:

‘$’ Gói chứa thông tin dữ liệu.

‘@’ Gói thông tin xác nhận ACK. Gói dữ liệu này chỉ chứa header và checksum.

‘#’ Gói không xác nhận trả lời NAK. Gói dữ liệu này chỉ chứa header và checksum không có thông tin trong gói này. Gói này yêu cầu truyền lại dữ liệu xác định với số tuần tự trong header.

‘?’ Gói dữ liệu heartbeat . Khi số tuần tự đƣợc truyền qua thì số tiếp theo của gói tiếp đƣợc truyền. Gói này đƣợc sử dụng để kiểm tra truyền thông.

3.Tính toán kiểm tra lỗi Checksum:

Gói dữ liệu kết thúc bằng vùng checksum. Kiểm tra tất cả thông tin bên trong header và dữ liệu.

Gói checksum có cấu tạo:

correction checksum typedef struct

{

BYTEbyCorrection; BYTEbyChecksum;

} RSMT_CHECKSUM;

byCorrection Giá trị chính xác này tính toán bằng giá trị 0xC8. Cũng có thể giá trị này gồm: 0x00 hoặc 0x13.

byCheck Tính toán checksum thông qua header, thông tin dữ liệu và giá trị xác định.

The Checksum đƣợc tính toán theo thứ tự nhƣ sau: 1. Đặt byte chính xác bằng giá trị 0x00.

2. Tính tổng tất cả các bytes với tiêu đề, thông tin và kiểm lỗi. 3. Đảo bít của checksum để đƣa về module 256.

4. Kiểm tra lại checksum có bằng giá trị (0xC8). Khi bằng: a. Gán giá trị kiểm lỗi bằng 0x13.

b. Trừ giá trị cũ bằng giá trị (0x00) và cộng giá trị mới (0x13) rồi tính tổng nhƣ bƣớc 2.

c. Đƣa module 256 vào tính toán checksum và thực hiện đảo ngƣợc bit của checksum.

Kết quả không bao giờ bằng giá trị escape.

Việc tính toán checksum này gửi đi phụ thuộc vào gói dữ liệu. Việc nhận đƣợc thực hiện chỉ ở bƣớc 2 và 3 .

Một phần của tài liệu Nghiên cứu hệ thống biểu quyết điện tử số (Trang 29)

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

(65 trang)