读取配置驱动以及响应基本完成
This commit is contained in:
parent
34f02a66d9
commit
b7c3ddf4e1
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue