HAL_Project/Project -APP-V1.0/Hardware/REALY/relay.c.orig

118 lines
3.9 KiB
C
Raw Permalink Normal View History

2025-05-09 15:43:42 +08:00
#include "relay.h"
//<2F>û<EFBFBD><C3BB>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ų<EFBFBD>ʼ<EFBFBD><CABC>
void relayInit(void) {
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIOA_RCC_ENABLE;
GPIO_InitStruct.Pin = Realy1_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(Realy1_GPIO_Port, &GPIO_InitStruct);
GPIO_InitStruct.Pin = Realy2_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(Realy2_GPIO_Port, &GPIO_InitStruct);
GPIO_InitStruct.Pin = Realy3_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(Realy3_GPIO_Port, &GPIO_InitStruct);
GPIO_InitStruct.Pin = Realy4_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(Realy4_GPIO_Port, &GPIO_InitStruct);
Relay1_OFF;
Relay2_OFF;
Relay3_OFF;
Relay4_OFF;
}
// <20>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>ָ<EFBFBD>+MSUB: "/iot/data/down/a284c67982b089f9",119 byte,{"id":"111750363407137710","header":"iot.prop.set","version":"1.0","body":{"sw1":{"time":1746600094207,"value":false}}}
void relayAction(uint8_t *data) {
uint8_t i = 0;
char *TempPointer; // <20><>ʱָ<CAB1><D6B8>
char CmdId[18] = {0}; // <20><><EFBFBD><EFBFBD>id<69><64><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
char IdFlag = 0; // id<69>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>־λ<D6BE><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ID<49><44><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
if(strstr((char *)data,MqttInfo_Struct.Topic)) { //<2F><><EFBFBD><EFBFBD> /iot/data/down/ <20><><EFBFBD>ֵ<EFBFBD>λ<EFBFBD><CEBB>
TempPointer = strstr((char *)data,"\"id\":"); // <20><>¼IDλ<44><CEBB> {"id":"1117
TempPointer += 6; //<2F><>ȥ"id": 5<><35><EFBFBD>ַ<EFBFBD> Ӧ<>ôӵ<C3B4>6<EFBFBD><36><EFBFBD><EFBFBD>ʼȡ
IdFlag = 0;
log_info("ID<EFBFBD><EFBFBD>ʼλ<EFBFBD><EFBFBD>Ϊ%s", TempPointer); //<2F><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49><44>ʼλ<CABC><CEBB>Ϊ977187088401715548","header":"iot.sub.prop.set","version":"1.0","body":{"sw2":{"time":1713146022764,"value":true}}}
for (i = 0; i < 18; i++) {
// <20>洢id(<28><>Ӧ֡<D3A6><D6A1><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>)
if (((TempPointer[i] >= '0') && (TempPointer[i] <= '9')) || ((TempPointer[i] >= 'a') && (TempPointer[i] <= 'z')) || ((TempPointer[i] >= 'A') && (TempPointer[i] <= 'Z'))) {
CmdId[i] = TempPointer[i];
IdFlag++;
} else {
IdFlag = 0;
log_info("ID<EFBFBD>л<EFBFBD><EFBFBD>зǷ<EFBFBD><EFBFBD>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
log_info("IDָ<EFBFBD><EFBFBD>Ϊ%s", TempPointer); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǧ<EFBFBD><C7A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>printf <20><><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD>log_info <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ԭ<EFBFBD><D4AD>
}
}
if (IdFlag >= 18) { // IDΪ18λ<38><CEBB><EFBFBD><EFBFBD>ID>=18ʱ˵<CAB1><CBB5>ID<49><44><EFBFBD><EFBFBD>
log_info("ID<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
if(strstr((char *)data,"\"sw")) { //<2F><><EFBFBD>ж<EFBFBD><D0B6>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD>
TempPointer = strstr((char *)data,"\"sw"); // <20><>¼swλ<77><CEBB>
switch(TempPointer[3]) { // <20>жϲ<D0B6><CFB2><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
case '1':
if (strstr((char *)data, "true")) {
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Relay1_ON;//
}
if (strstr((char *)data, "false")) {
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>ر<EFBFBD>");
Relay1_OFF;//
}
break;
case '2':
if (strstr((char *)data, "true")) {
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Relay2_ON;//
}
if (strstr((char *)data, "false")) {
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD>ر<EFBFBD>");
Relay2_OFF;//
}
break;
case '3':
if (strstr((char *)data, "true")) {
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Relay3_ON;//
}
if (strstr((char *)data, "false")) {
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<EFBFBD>ر<EFBFBD>");
Relay3_OFF;//
}
break;
case '4':
if (strstr((char *)data, "true")) {
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
Relay4_ON;//
}
if (strstr((char *)data, "false")) {
log_info("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>ر<EFBFBD>");
Relay4_OFF;//
}
break;
}
}
//<2F><><EFBFBD>ͻظ<CDBB><D8B8><EFBFBD>Ϣ OK
CAT1_printf("AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22id\\22:\\22%s\\22,\\22code\\22:0,\\22message\\22:\\22OK\\22}\"\r\n",MqttInfo_Struct.ClientID, CmdId);
}
}