解决了配置下发后程序崩溃的问题
This commit is contained in:
parent
b7c3ddf4e1
commit
1def56eb47
|
@ -50,7 +50,7 @@
|
||||||
<InvalidFlash>1</InvalidFlash>
|
<InvalidFlash>1</InvalidFlash>
|
||||||
</TargetStatus>
|
</TargetStatus>
|
||||||
<OutputDirectory>.\Objects\</OutputDirectory>
|
<OutputDirectory>.\Objects\</OutputDirectory>
|
||||||
<OutputName>BCU5</OutputName>
|
<OutputName>BCU10</OutputName>
|
||||||
<CreateExecutable>1</CreateExecutable>
|
<CreateExecutable>1</CreateExecutable>
|
||||||
<CreateLib>0</CreateLib>
|
<CreateLib>0</CreateLib>
|
||||||
<CreateHexFile>1</CreateHexFile>
|
<CreateHexFile>1</CreateHexFile>
|
||||||
|
@ -83,7 +83,7 @@
|
||||||
<AfterMake>
|
<AfterMake>
|
||||||
<RunUserProg1>0</RunUserProg1>
|
<RunUserProg1>0</RunUserProg1>
|
||||||
<RunUserProg2>0</RunUserProg2>
|
<RunUserProg2>0</RunUserProg2>
|
||||||
<UserProg1Name>D:\CodeCompare\BCU\app\stm32fxxx_app\hex2bin.exe D:\CodeCompare\BCU\app\stm32fxxx_app\prj\Objects\BCU5.hex</UserProg1Name>
|
<UserProg1Name>D:\CodeHvStack\BCU\app\stm32fxxx_app\hex2bin.exe D:\CodeHvStack\BCU\app\stm32fxxx_app\prj\Objects\BCU10.hex</UserProg1Name>
|
||||||
<UserProg2Name></UserProg2Name>
|
<UserProg2Name></UserProg2Name>
|
||||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -39,7 +39,7 @@
|
||||||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
; </h>
|
; </h>
|
||||||
|
|
||||||
Stack_Size EQU 0x00000400
|
Stack_Size EQU 0x00000500
|
||||||
|
|
||||||
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||||
Stack_Mem SPACE Stack_Size
|
Stack_Mem SPACE Stack_Size
|
||||||
|
@ -50,7 +50,7 @@ __initial_sp
|
||||||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
; </h>
|
; </h>
|
||||||
|
|
||||||
Heap_Size EQU 0x00002000
|
Heap_Size EQU 0x00003000
|
||||||
|
|
||||||
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||||
__heap_base
|
__heap_base
|
||||||
|
|
|
@ -34,9 +34,9 @@ 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响应的缓冲区
|
uint8_t buffer[5];
|
||||||
uint16_t length; // 响应数据长度
|
uint16_t length;
|
||||||
uint8_t data; // 函数返回值
|
uint8_t data = 0;
|
||||||
char data_str[6] = {0};
|
char data_str[6] = {0};
|
||||||
|
|
||||||
char* quotes[4] = {0};
|
char* quotes[4] = {0};
|
||||||
|
@ -97,15 +97,14 @@ void parse_mqtt_message(char* message)
|
||||||
current_buffer = 1;
|
current_buffer = 1;
|
||||||
if(strstr(message, "control") != NULL)
|
if(strstr(message, "control") != NULL)
|
||||||
{
|
{
|
||||||
if((first >= 3000) && (first <= 3168))
|
buffer[0] = (second >> 8) & 0xFF;
|
||||||
|
buffer[1] = second & 0xFF;
|
||||||
|
data = bcu_modbus_485_0x06_fun(first, 1, buffer, &length);
|
||||||
|
|
||||||
|
if (data == 0)
|
||||||
{
|
{
|
||||||
bcu_data_set_0x06_msg(first, second);
|
drv_mqtt_publish_control_no_respose("ok", 2);
|
||||||
}
|
|
||||||
else if ((first >= 4000) && (first <= 4999))
|
|
||||||
{
|
|
||||||
hmi_write_modbus_cfg(first - 4000, second);
|
|
||||||
}
|
}
|
||||||
drv_mqtt_publish_control_no_respose("ok", 2);
|
|
||||||
}
|
}
|
||||||
else if (strstr(message, "read") != NULL)
|
else if (strstr(message, "read") != NULL)
|
||||||
{
|
{
|
||||||
|
@ -113,13 +112,10 @@ void parse_mqtt_message(char* message)
|
||||||
|
|
||||||
if (data == 0 && length >= 2)
|
if (data == 0 && length >= 2)
|
||||||
{
|
{
|
||||||
//解析16位寄存器值
|
uint16_t value = (buffer[0] << 8) | buffer[1];
|
||||||
uint16_t value = (buffer[0] << 8) | buffer[1];
|
|
||||||
|
snprintf(data_str, sizeof(data_str), "%u", value);
|
||||||
snprintf(data_str, sizeof(data_str), "%u", value);
|
drv_mqtt_publish_read_no_respose(data_str, strlen(data_str));
|
||||||
drv_mqtt_publish_read_no_respose(data_str, strlen(data_str));
|
|
||||||
|
|
||||||
memset(data_str, 0, sizeof(data_str));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
current_buffer = 0;
|
current_buffer = 0;
|
||||||
|
|
Loading…
Reference in New Issue