供参考:
if (!process.sysIDlockoutFlag)(!process.sysIDlockoutFlag) { /* *返回之前的最后四个击键 *所有切换并检查以查看所有内容 *有效(!= 0) * P_SEQ = systemIdentification (systemID); 对于(int = 0;sl < 4;sL++) { 如果(*(p_seq + sl)=0) { process.sysIDlockoutFlag = F; 按钮= NUL; 中断; } process.sysIDlockoutFlag = T; 按钮= define SYS; } }
案例 define _SYS: if (process.sysIDlockoutFlag) { 交换机(sysMssg) { 案例 msg1: mssg[4]=(0xC0); mssg[5]=* p_seq; sysMssg++; 中断; 案例 msg2: mssg[4]=(0xA0); mssg[5]=*(p_seq + 1); sysMssg++; 中断; 案例 msg3: mssg[4]=(0x90); mssg[5]=*(p_seq + 2); sysMssg++; 中断; 案例 msg4: mssg[4]=(0x88); mssg[5]=*(p_seq + 3); sysMssg++; 中断; 默认值:/* sysMssg = msg1; currentSwState = 0; swInfo.multipleSw = F; swInfo.err = F; swInfo.twoSec = 0; memset (swInfo.hits、0、sizeof (swInfo.hits)); process.msgPopulatedFlag = F; 按钮= NUL; WakeRadio(F);*/ } }
if ((button == pair)||(button =define SYS)) { CRC_RESULT = CRC ((char *) PTX); mssg[6]=(char)((crc_result >> 8)& 0xFF); mssg[7]=(char)(crc_result & 0xFF); process.msgPopulatedFlag = T; }
基础知识...上面的代码将消息放在一起,并为另一个代码块(即一个发送器)做好准备。 如果我在大小写 msg1中放置一个断点,我可以看到 p_seq,所有看起来都很好...如果我然后将断点移动到大小写 msg2,* p_seq 看起来很好,*(p_seq + x)全部被清理。 它被写入的代码中的唯一位置是上面的 if 语句内。 我已经验证了在传输完所有 msg1 - msg4之前、我不会在这里中断。 上面的一些代码周围有一些条件包装程序(未看到)、但是所有标志都指示它们在所有代码被传输出去之前不会改变。 是否有人可以让我了解为什么在最后三个条目上将 p_Seq 值从"良好"更新为"0"?
谢谢