下面的代码是紧急文字。因此,如果设置了DU_Reason.bits.EmergencyDialIn
,它将登录到网络。然后,如果设置send_update
,则会发送Compose_Report()
。这不是问题,因为send_update在发送消息后被清除。但是如果设置了tempalarm,它将发送一条消息并保持设置,除非它收到一条消息告诉它清除。这是为了在温度低于限制时一直反复发送消息。因此,如果没有重置tempalarm并且检测到泄漏,我只想发送Compose_Leak_Report();
,但它会发送Compose_Temp_Report();
。
有什么方法可以帮助任何人。
if (DU_Reason.bits.EmergencyDialIn) {
if (Send_Update) {
Compose_Report();
GSM_Send_Text_Sms (GSM_Tx_Buff, SenderNum);
num_Leaks_month = 0;
monthly_timer = 0;
Send_Update = 0;
DU_Reason.bits.EmergencyDialIn = 0;
}
else if (TempAlarm) {
Compose_Temp_Report();
GSM_Send_Text_Sms (GSM_Tx_Buff, SenderNum);
DU_Reason.bits.EmergencyDialIn = 0;
}
else {
Compose_Leak_Report();
GSM_Send_Text_Sms (GSM_Tx_Buff, SenderNum);
DU_Reason.bits.EmergencyDialIn = 0;
}
答案 0 :(得分:1)
我正在通过添加一个变量TempAlarmTriggered
并将其初始化为零来修改代码。
if (DU_Reason.bits.EmergencyDialIn) {
if (Send_Update) {
Compose_Report();
GSM_Send_Text_Sms (GSM_Tx_Buff, SenderNum);
num_Leaks_month = 0;
monthly_timer = 0;
Send_Update = 0;
DU_Reason.bits.EmergencyDialIn = 0;
}
else if ((TempAlarm) && (TempAlarmTriggered == 0)) {
TempAlarmTriggered = 1;
Compose_Temp_Report();
GSM_Send_Text_Sms (GSM_Tx_Buff, SenderNum);
DU_Reason.bits.EmergencyDialIn = 0;
}
else {
Compose_Leak_Report();
GSM_Send_Text_Sms (GSM_Tx_Buff, SenderNum);
DU_Reason.bits.EmergencyDialIn = 0;
}
当您的临时重置清除TempAlarmTriggered
和TempAlarm
时。