读取配置驱动以及响应基本完成
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"
|
// ʾÀýÏûÏ¢: +QMTRECV: 0,31,"bluesun/bms/control/123",11,"MQ3156+1MQ"
|
||||||
uint16_t first = 0;
|
uint16_t first = 0;
|
||||||
uint16_t second = 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};
|
char* quotes[4] = {0};
|
||||||
int quote_count = 0;
|
int quote_count = 0;
|
||||||
|
@ -90,6 +94,7 @@ void parse_mqtt_message(char* message)
|
||||||
first = atoi(processed);
|
first = atoi(processed);
|
||||||
second = atoi(plus_pos + 1);
|
second = atoi(plus_pos + 1);
|
||||||
|
|
||||||
|
current_buffer = 1;
|
||||||
if(strstr(message, "control") != NULL)
|
if(strstr(message, "control") != NULL)
|
||||||
{
|
{
|
||||||
if((first >= 3000) && (first <= 3168))
|
if((first >= 3000) && (first <= 3168))
|
||||||
|
@ -104,10 +109,20 @@ void parse_mqtt_message(char* message)
|
||||||
}
|
}
|
||||||
else if (strstr(message, "read") != NULL)
|
else if (strstr(message, "read") != NULL)
|
||||||
{
|
{
|
||||||
//需要解决发送过程中与实时值DMA上传的冲突问题,可以尝试标志位或者队列的方式
|
data = bcu_modbus_485_0x03_fun(first, 1, buffer, &length);
|
||||||
drv_mqtt_publish_read_no_respose("1", 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
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)
|
static void drv_qfc41d_push_data(WifiBleItem* item, uint8_t *buf, uint16_t len)
|
||||||
|
|
Loading…
Reference in New Issue