Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Xác nhận
Một số mã tin nhắn yêu cầu người nhận xác nhận. Trong trường hợp này,
người nhận sẽ gửi một báo nhận (ACK) hoặc
xác nhận phủ định (NAK) trong vòng 1 giây kể từ khi nhận được tin nhắn.
Tên nhóm tin nhắn
Giá trị
Xác nhận
0xFF
Tên mã xác nhận
Giá trị
Đánh bóng thành công
0x01
NAK
0x02
Lời cảm ơn phải được gửi ngay sau khi người dùng nhận được tin nhắn để
người gửi có thể hành động phù hợp. Một lời xác nhận phải chứa nhóm tin nhắn
, mã và trạng thái hiện tại của thông báo mà nó đang tham chiếu. Ví dụ: nếu
Nhà cung cấp sẽ nhận được một tin nhắn có chứa thao tác đổ chuông (0x04010002013C),
ứng dụng sẽ xác nhận hành động bằng cách gửi lại 0xFF0100040401013C, trong đó:
0xFF: Sự kiện ACK
0x01: Mã ACK
0x0004: Độ dài dữ liệu bổ sung
0x0401: Nhóm thông báo hành động và mã
0x013C: Trạng thái hiện tại của nhóm thông báo hành động và mã, đổ chuông bên phải và
Thời gian chờ 60 giây
Đối với NAK, lý do cũng phải được đưa vào dưới dạng byte đầu tiên của dữ liệu bổ sung
. Các lý do bao gồm:
0x00: Không được hỗ trợ
0x01: Thiết bị bận
0x02: Không được phép do trạng thái hiện tại
0x03: Không được phép do mã xác thực thư không chính xác
0x04: Thao tác thừa trên thiết bị
Trong ví dụ trước, nếu chiếc nhẫn ban đầu là NAK do
Trình cung cấp đang bận với một tác vụ khác, gói trả về phải được đặt thành
0xFF02000401040100 trong đó
0xFF: Sự kiện ACK
0x02: Mã NAK
0x0004: Độ dài dữ liệu bổ sung
0x01: Lý do NAK, Thiết bị bận
0x0401: Nhóm thông báo hành động và mã
0x00: Trạng thái hiện tại của nhóm thông báo hành động và mã, tất cả thành phần
ngừng đổ chuông
Ví dụ:
#define FP_MSG_ACK 0x01#define FP_MSG_NAK 0x02#define FP_MSG_GROUP_ACK 0xFFstaticvoidfp_msg_send_ack(uint8_tmsgGroup,uint8_tmsgCode){FP_MESSAGE_STREAMreq={FP_MSG_GROUP_ACK,FP_MSG_ACK,0,2};req.data[0]=msgGroup;req.data[1]=msgCode;fp_send((uint8_t*)&req);}staticvoidfp_msg_send_nak(uint8_treason,uint8_tmsgGroup,uint8_tmsgCode){//reason= 0x00: Not supported, 0x01: Device busy, or 0x02: Not allowed due to current stateFP_MESSAGE_STREAMreq={FP_MSG_GROUP_ACK,FP_MSG_NAK,0,3};req.data[0]=reason;req.data[1]=msgGroup;req.data[2]=msgCode;fp_send((uint8_t*)&req);}
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-08-13 UTC."],[[["\u003cp\u003eSome message codes require an acknowledgement (ACK) or negative-acknowledgement (NAK) response within 1 second, sent only when specified.\u003c/p\u003e\n"],["\u003cp\u003eAcknowledgements (ACKs) use the code \u003ccode\u003e0xFF01\u003c/code\u003e and should include the referenced message's group, code, and current state.\u003c/p\u003e\n"],["\u003cp\u003eNegative-acknowledgements (NAKs) use the code \u003ccode\u003e0xFF02\u003c/code\u003e and provide a reason code (e.g., \u003ccode\u003e0x01\u003c/code\u003e for Device busy) along with the message's group and code.\u003c/p\u003e\n"],["\u003cp\u003eThe acknowledgement structure includes the event (ACK/NAK), code, additional data length, and relevant message details.\u003c/p\u003e\n"],["\u003cp\u003eExample code snippets demonstrate sending ACKs and NAKs using pre-defined message group and code values.\u003c/p\u003e\n"]]],["Receivers must send an acknowledgement (ACK) or negative-acknowledgement (NAK) within one second for specific message codes. ACKs (0x01) and NAKs (0x02) belong to the 0xFF message group. Responses include the message group, code, and current state of the action, and for NAKs, a reason. Example reasons: Not supported (0x00), Device busy (0x01), Not allowed (0x02), Incorrect message code (0x03) or Redundant action (0x04). Example for ring action: `0xFF0100040401013C` or NAK :`0xFF02000401040100`.\n"],null,[]]