问题描述
再调试的是否发现数据会有突变的问题,表现比较明显的是这个 POWER字段异常:
// 分装数据打印
[1047245]: app_cod1 [ 24 ]: cmd: 2, PORT1: uID[1]:3069039912, seq:[ s: 54, c: 54 ], power:252
// 发送缓存打印 (此处66 突变为 54)
[1047248]: r_PORT1: uID[1]:3069039912, seq[r:66 c:4294967295, d:54], qid[r:2111062540 c:2111062540]
clone:0, ack:0, power:1, q_t:1, ans:1
实际上函数调用的地方如下:
/*******************************************************************************
* Function Name : spi_rcmd_dtq_answer_data
* Description : 处理答题器提交上来的按键数据
* Input : port : SPI 端口号
* Output : None
* Return : None
*******************************************************************************/
int8_t spi_rcmd_dtq_answer_data(uint8_t port, uint8_t upos, spi_pac_t *rpac)
{
int8_t ret = 1;
/* 提取核心数据 */
uint32_t uID = *(uint32_t *)(rpac->Data + 7);
uint32_t rev_seq = arr_pos_u32(rpac->Data + 23);
uint32_t cur_seq = *(uint32_t *)(port_tcb[port].dtq[upos].ans_rid);
uint32_t rev_qid = *(uint32_t *)(rpac->Data + 3);
uint32_t cur_qid = *(uint32_t *)(port_tcb[port].dtq_tcb.ans_info.q_tcb[upos].qid);
uint32_t ack_seq = arr_pos_u32(rpac->seqid);
uint8_t is_clone_dev = rpac->seqid[0] & 0x80;
uint8_t is_ack = ram_tab