forked from gary/BCU
2
0
Fork 0

读取配置驱动以及响应基本完成

This commit is contained in:
Carl 2025-06-04 15:54:41 +08:00
parent 34f02a66d9
commit b7c3ddf4e1
4 changed files with 7238 additions and 8525 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -34,6 +34,10 @@ void parse_mqtt_message(char* message)
// ʾÀýÏûÏ¢: +QMTRECV: 0,31,"bluesun/bms/control/123",11,"MQ3156+1MQ"
uint16_t first = 0;
uint16_t second = 0;
uint8_t buffer[256]; // 存储Modbus响应的缓冲区
uint16_t length; // 响应数据长度
uint8_t data; // 函数返回值
char data_str[6] = {0};
char* quotes[4] = {0};
int quote_count = 0;
@ -90,6 +94,7 @@ void parse_mqtt_message(char* message)
first = atoi(processed);
second = atoi(plus_pos + 1);
current_buffer = 1;
if(strstr(message, "control") != NULL)
{
if((first >= 3000) && (first <= 3168))
@ -104,10 +109,20 @@ void parse_mqtt_message(char* message)
}
else if (strstr(message, "read") != NULL)
{
//需要解决发送过程中与实时值DMA上传的冲突问题可以尝试标志位或者队列的方式
drv_mqtt_publish_read_no_respose("1", 1);
}
data = bcu_modbus_485_0x03_fun(first, 1, buffer, &length);
if (data == 0 && length >= 2)
{
//解析16位寄存器值
uint16_t value = (buffer[0] << 8) | buffer[1];
snprintf(data_str, sizeof(data_str), "%u", value);
drv_mqtt_publish_read_no_respose(data_str, strlen(data_str));
memset(data_str, 0, sizeof(data_str));
}
}
current_buffer = 0;
}
static void drv_qfc41d_push_data(WifiBleItem* item, uint8_t *buf, uint16_t len)