结构体数组中标志不能清零问题
在做数据网关时,需要设置很多标志处理,我在结构体中把标志定义在接收数组下面。
```c
typedef struct
{
uint8 Special_Com_Handle_Flag; //TCP特殊命令处理
uint8 Login; //远程登录
uint8 TimeDisp;
uint8 SendStep; //部分功能整个流程会发送不同协议,根据步骤决定命令号
uint8 SatrtFlag; //0: 未开始 1: 开始倒计时
uint8 FlashDispFlag; //0: 不刷新 1: 刷新 [倒计时]
uint8 TimeOut; //0: 等待中 1: 等待超时
uint8 ConnectFlag; //0: 无操作 1: 开机连接后台服务器 2:重新启动模块 3.断开连接
uint16 SendDataType; //数据发送类型
uint8 AccountTradeType; //账户交易类型
uint16 WaitCountdown; //等待后台应答倒计时: 10S = 10ms * 1000(WaitCountdown)
uint16 RepeatConnectCount; //重新连接后台服务器计数: 心跳包30秒发送一次,超时时间-->60秒[6000 * 10ms]
uint16 Receive_24G_Timeout_Flag; //判断接收是否超时
uint16 Receive_24G_Time_Count;
uint8 SendDataBuf[UART_TX_BUFLEN];
uint8 RecDataBuf[UART_TX_BUFLEN];
uint8 MacLogIn; //签到命令标志
uint8 Heartbeat; //心跳包
uint8 LabelUpload; //上传标签数据
uint8 rFlag;
uint16 HeartbeatCount;
uint16 rLen;
uint16 Get_Gate_State_Flag; //获取门状态标志
uint16 Get_Gate_State_Count;
uint16 Send_Gate_State_Flag; //发送心跳-门禁状态
uint16 Send_Gate_State_Count;
uint8 HeartbeatFlag; //接收到门状态
uint8 Open_DoorFlag; //收到开门标志
// uint8 Special_Com_Handle_Flag; //TCP特殊命令处理
// uint32 SendCount;
// uint32 RecCount;
} WirelessParaStr;
再去操作其中一个标志时,标志的直不会被改变,Open_DoorFlag标志不能操作。
可能的一个原因是Open_DoorFlag的地址被接收数组RecDataBuf占用,接收数组大于定义地址,往下占用其他的地址,但我仿真发现地址并没有越界,但还是怀着试试的态度试试,把Open_DoorFlag定义在结构体最上面,发现可以操作了。
记录一下,如果有遇到相同问题的小伙伴可以相互交流讨论一下。