update:V1.3
1.修复实时报警索引错误 2.修复历史报警消息跨扇区显示错误 3.修复历史报警满一千条后会误擦除其他有效数据 4.修复TCP写入解析错误
This commit is contained in:
@@ -11,5 +11,11 @@
|
|||||||
#define RTE_COMPONENTS_H
|
#define RTE_COMPONENTS_H
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define the Device Header File:
|
||||||
|
*/
|
||||||
|
#define CMSIS_device_header "stm32f4xx.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* RTE_COMPONENTS_H */
|
#endif /* RTE_COMPONENTS_H */
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
<TargetOption>
|
<TargetOption>
|
||||||
<CLKADS>12000000</CLKADS>
|
<CLKADS>12000000</CLKADS>
|
||||||
<OPTTT>
|
<OPTTT>
|
||||||
<gFlags>0</gFlags>
|
<gFlags>1</gFlags>
|
||||||
<BeepAtEnd>1</BeepAtEnd>
|
<BeepAtEnd>1</BeepAtEnd>
|
||||||
<RunSim>0</RunSim>
|
<RunSim>0</RunSim>
|
||||||
<RunTarget>1</RunTarget>
|
<RunTarget>1</RunTarget>
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<IsCurrentTarget>1</IsCurrentTarget>
|
<IsCurrentTarget>1</IsCurrentTarget>
|
||||||
</OPTFL>
|
</OPTFL>
|
||||||
<CpuCode>0</CpuCode>
|
<CpuCode>18</CpuCode>
|
||||||
<DebugOpt>
|
<DebugOpt>
|
||||||
<uSim>0</uSim>
|
<uSim>0</uSim>
|
||||||
<uTrg>1</uTrg>
|
<uTrg>1</uTrg>
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
<bEvRecOn>1</bEvRecOn>
|
<bEvRecOn>1</bEvRecOn>
|
||||||
<bSchkAxf>0</bSchkAxf>
|
<bSchkAxf>0</bSchkAxf>
|
||||||
<bTchkAxf>0</bTchkAxf>
|
<bTchkAxf>0</bTchkAxf>
|
||||||
<nTsel>0</nTsel>
|
<nTsel>4</nTsel>
|
||||||
<sDll></sDll>
|
<sDll></sDll>
|
||||||
<sDllPa></sDllPa>
|
<sDllPa></sDllPa>
|
||||||
<sDlgDll></sDlgDll>
|
<sDlgDll></sDlgDll>
|
||||||
@@ -114,28 +114,162 @@
|
|||||||
<tDlgDll></tDlgDll>
|
<tDlgDll></tDlgDll>
|
||||||
<tDlgPa></tDlgPa>
|
<tDlgPa></tDlgPa>
|
||||||
<tIfile></tIfile>
|
<tIfile></tIfile>
|
||||||
<pMon>BIN\UL2CM3.DLL</pMon>
|
<pMon>Segger\JL2CM3.dll</pMon>
|
||||||
</DebugOpt>
|
</DebugOpt>
|
||||||
<TargetDriverDllRegistry>
|
<TargetDriverDllRegistry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>ARMRTXEVENTFLAGS</Key>
|
||||||
|
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
|
||||||
|
</SetRegEntry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>DLGTARM</Key>
|
||||||
|
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)</Name>
|
||||||
|
</SetRegEntry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>ARMDBGFLAGS</Key>
|
||||||
|
<Name></Name>
|
||||||
|
</SetRegEntry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>DLGUARM</Key>
|
||||||
|
<Name>d</Name>
|
||||||
|
</SetRegEntry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>JL2CM3</Key>
|
||||||
|
<Name>-U-O78 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||||
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>UL2CM3</Key>
|
<Key>UL2CM3</Key>
|
||||||
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM))</Name>
|
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024 -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM))</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint/>
|
<Breakpoint>
|
||||||
|
<Bp>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Type>0</Type>
|
||||||
|
<LineNumber>71</LineNumber>
|
||||||
|
<EnabledFlag>1</EnabledFlag>
|
||||||
|
<Address>134256418</Address>
|
||||||
|
<ByteObject>0</ByteObject>
|
||||||
|
<HtxType>0</HtxType>
|
||||||
|
<ManyObjects>0</ManyObjects>
|
||||||
|
<SizeOfObject>0</SizeOfObject>
|
||||||
|
<BreakByAccess>0</BreakByAccess>
|
||||||
|
<BreakIfRCount>1</BreakIfRCount>
|
||||||
|
<Filename>D:\code\Git\Leakage-Control(鏈€鏂扮増)\Leakage-Control\leakage_system\usr\app\app.c</Filename>
|
||||||
|
<ExecCommand></ExecCommand>
|
||||||
|
<Expression>\\leakage_system\../usr/app/app.c\71</Expression>
|
||||||
|
</Bp>
|
||||||
|
</Breakpoint>
|
||||||
|
<WatchWindow1>
|
||||||
|
<Ww>
|
||||||
|
<count>0</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>total_records</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>1</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>record_index,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>2</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>record_index,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>3</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>total_records</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>4</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>total_records</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>5</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>leakage,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>6</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>leakage,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>7</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>new_alarm,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>8</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>record_index</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>9</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>(sizeof(app_leakage_history_alarm_t)),0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>10</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>debug1</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>11</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>actual_index,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>12</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>record</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>13</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>temp_flash1,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>14</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>leakage.history_metadata,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>15</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>new_alarm,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>16</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>new_alarm1,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>17</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>W5500,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
</WatchWindow1>
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
</Tracepoint>
|
</Tracepoint>
|
||||||
<DebugFlag>
|
<DebugFlag>
|
||||||
<trace>0</trace>
|
<trace>0</trace>
|
||||||
<periodic>0</periodic>
|
<periodic>1</periodic>
|
||||||
<aLwin>0</aLwin>
|
<aLwin>1</aLwin>
|
||||||
<aCover>0</aCover>
|
<aCover>0</aCover>
|
||||||
<aSer1>0</aSer1>
|
<aSer1>0</aSer1>
|
||||||
<aSer2>0</aSer2>
|
<aSer2>0</aSer2>
|
||||||
<aPa>0</aPa>
|
<aPa>0</aPa>
|
||||||
<viewmode>0</viewmode>
|
<viewmode>1</viewmode>
|
||||||
<vrSel>0</vrSel>
|
<vrSel>0</vrSel>
|
||||||
<aSym>0</aSym>
|
<aSym>0</aSym>
|
||||||
<aTbox>0</aTbox>
|
<aTbox>0</aTbox>
|
||||||
@@ -502,7 +636,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Drivers/CMSIS</GroupName>
|
<GroupName>Drivers/CMSIS</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -622,7 +756,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>bsp</GroupName>
|
<GroupName>bsp</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -750,7 +884,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>gui</GroupName>
|
<GroupName>gui</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@@ -770,7 +904,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>protocol</GroupName>
|
<GroupName>protocol</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
|||||||
@@ -10,14 +10,14 @@
|
|||||||
<TargetName>leakage_system</TargetName>
|
<TargetName>leakage_system</TargetName>
|
||||||
<ToolsetNumber>0x4</ToolsetNumber>
|
<ToolsetNumber>0x4</ToolsetNumber>
|
||||||
<ToolsetName>ARM-ADS</ToolsetName>
|
<ToolsetName>ARM-ADS</ToolsetName>
|
||||||
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
|
<pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
|
||||||
<uAC6>0</uAC6>
|
<uAC6>0</uAC6>
|
||||||
<TargetOption>
|
<TargetOption>
|
||||||
<TargetCommonOption>
|
<TargetCommonOption>
|
||||||
<Device>STM32F407VGTx</Device>
|
<Device>STM32F407VGTx</Device>
|
||||||
<Vendor>STMicroelectronics</Vendor>
|
<Vendor>STMicroelectronics</Vendor>
|
||||||
<PackID>Keil.STM32F4xx_DFP.3.0.0</PackID>
|
<PackID>Keil.STM32F4xx_DFP.2.15.0</PackID>
|
||||||
<PackURL>https://www.keil.com/pack/</PackURL>
|
<PackURL>http://www.keil.com/pack/</PackURL>
|
||||||
<Cpu>IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
|
<Cpu>IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
|
||||||
<FlashUtilSpec></FlashUtilSpec>
|
<FlashUtilSpec></FlashUtilSpec>
|
||||||
<StartupFile></StartupFile>
|
<StartupFile></StartupFile>
|
||||||
@@ -185,7 +185,6 @@
|
|||||||
<uocXRam>0</uocXRam>
|
<uocXRam>0</uocXRam>
|
||||||
<RvdsVP>2</RvdsVP>
|
<RvdsVP>2</RvdsVP>
|
||||||
<RvdsMve>0</RvdsMve>
|
<RvdsMve>0</RvdsMve>
|
||||||
<RvdsCdeCp>0</RvdsCdeCp>
|
|
||||||
<hadIRAM2>1</hadIRAM2>
|
<hadIRAM2>1</hadIRAM2>
|
||||||
<hadIROM2>0</hadIROM2>
|
<hadIROM2>0</hadIROM2>
|
||||||
<StupSel>8</StupSel>
|
<StupSel>8</StupSel>
|
||||||
@@ -352,7 +351,7 @@
|
|||||||
<NoWarn>0</NoWarn>
|
<NoWarn>0</NoWarn>
|
||||||
<uSurpInc>0</uSurpInc>
|
<uSurpInc>0</uSurpInc>
|
||||||
<useXO>0</useXO>
|
<useXO>0</useXO>
|
||||||
<ClangAsOpt>4</ClangAsOpt>
|
<uClangAs>0</uClangAs>
|
||||||
<VariousControls>
|
<VariousControls>
|
||||||
<MiscControls></MiscControls>
|
<MiscControls></MiscControls>
|
||||||
<Define></Define>
|
<Define></Define>
|
||||||
|
|||||||
@@ -73,8 +73,6 @@ void app_init(void)
|
|||||||
/*<2A><><EFBFBD><EFBFBD>*/
|
/*<2A><><EFBFBD><EFBFBD>*/
|
||||||
W5500.Init();
|
W5500.Init();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*<2A><>ĻͨѶ*/
|
/*<2A><>ĻͨѶ*/
|
||||||
tjc_hmi.init();
|
tjc_hmi.init();
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,10 @@ static void history_save_metadata(void);
|
|||||||
|
|
||||||
static void app_leakage_init(void);
|
static void app_leakage_init(void);
|
||||||
|
|
||||||
|
/*<2A><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
|
uint8_t sector_buf[2][W25Q32_SECTOR_SIZE];
|
||||||
|
|
||||||
|
|
||||||
app_leakage_t leakage =
|
app_leakage_t leakage =
|
||||||
{
|
{
|
||||||
.region_num = 0,
|
.region_num = 0,
|
||||||
@@ -316,22 +320,20 @@ void history_add_alarm_record(u8 region_idx, u8 device_idx, u8 channel, u16 alar
|
|||||||
memset(&new_alarm, 0, sizeof(app_leakage_history_alarm_t));
|
memset(&new_alarm, 0, sizeof(app_leakage_history_alarm_t));
|
||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
if(region_idx < leakage.region_num)
|
if (region_idx < leakage.region_num) {
|
||||||
{
|
|
||||||
memcpy(new_alarm.region_name, leakage.region_data[region_idx].name,
|
memcpy(new_alarm.region_name, leakage.region_data[region_idx].name,
|
||||||
APP_LEAKAGE_STRING_NANE_LEN);
|
APP_LEAKAGE_STRING_NANE_LEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <20>豸ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* <20>豸ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
if(device_idx < APP_LEAKAGE_SUB_DEVICE_NUM)
|
if (device_idx < APP_LEAKAGE_SUB_DEVICE_NUM) {
|
||||||
{
|
|
||||||
new_alarm.device_id = leakage.sub_device_data[device_idx].flash_data.modbus_id;
|
new_alarm.device_id = leakage.sub_device_data[device_idx].flash_data.modbus_id;
|
||||||
memcpy(new_alarm.device_name, leakage.sub_device_data[device_idx].flash_data.device_name,
|
memcpy(new_alarm.device_name, leakage.sub_device_data[device_idx].flash_data.device_name,
|
||||||
APP_LEAKAGE_STRING_NANE_LEN);
|
APP_LEAKAGE_STRING_NANE_LEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>©Һ<C2A9><D2BA><EFBFBD><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>©Һ<C2A9><D2BA><EFBFBD><EFBFBD> */
|
||||||
new_alarm.alarm_type = alarm_type;
|
new_alarm.alarm_type = alarm_type;
|
||||||
new_alarm.channel = channel;
|
new_alarm.channel = channel;
|
||||||
new_alarm.leak_distance = leak_distance;
|
new_alarm.leak_distance = leak_distance;
|
||||||
|
|
||||||
@@ -341,35 +343,49 @@ void history_add_alarm_record(u8 region_idx, u8 device_idx, u8 channel, u16 alar
|
|||||||
/* <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ַ */
|
/* <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ַ */
|
||||||
write_addr = history_calc_record_addr(leakage.history_metadata.write_index);
|
write_addr = history_calc_record_addr(leakage.history_metadata.write_index);
|
||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
uint32_t current_sector = history_calc_sector_addr(leakage.history_metadata.write_index);
|
uint32_t start_sector = write_addr & ~(W25Q32_SECTOR_SIZE - 1);
|
||||||
uint32_t prev_sector = history_calc_sector_addr(
|
uint32_t end_addr = write_addr + HISTORY_ALARM_RECORD_SIZE - 1;
|
||||||
(leakage.history_metadata.write_index == 0) ?
|
uint32_t end_sector = end_addr & ~(W25Q32_SECTOR_SIZE - 1);
|
||||||
leakage.history_metadata.max_records - 1 :
|
uint32_t num_sectors = (end_sector - start_sector) / W25Q32_SECTOR_SIZE + 1;
|
||||||
leakage.history_metadata.write_index - 1);
|
|
||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4KB */
|
||||||
if(current_sector != prev_sector)
|
uint32_t sectors[2] = {start_sector, (num_sectors > 1) ? end_sector : 0};
|
||||||
{
|
|
||||||
w25q32_sector_erase(current_sector);
|
/* 1. <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>漰<EFBFBD><E6BCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RAM */
|
||||||
|
for (uint32_t i = 0; i < num_sectors; i++) {
|
||||||
|
w25q32.read(sectors[i], sector_buf[i], W25Q32_SECTOR_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼ */
|
/* 2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD><D0A9><EFBFBD><EFBFBD> */
|
||||||
w25q32.write(write_addr, (uint8_t*)&new_alarm, HISTORY_ALARM_RECORD_SIZE);
|
for (uint32_t i = 0; i < num_sectors; i++) {
|
||||||
|
w25q32_sector_erase(sectors[i]);
|
||||||
|
}
|
||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* 3. <20><>RAM<41>и<EFBFBD><D0B8><EFBFBD><EFBFBD>¼<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
|
uint32_t offset_in_start = write_addr - start_sector;
|
||||||
|
uint32_t first_part_len = (num_sectors == 1) ? HISTORY_ALARM_RECORD_SIZE : (W25Q32_SECTOR_SIZE - offset_in_start);
|
||||||
|
memcpy(sector_buf[0] + offset_in_start, &new_alarm, first_part_len);
|
||||||
|
if (num_sectors > 1) {
|
||||||
|
uint32_t second_part_len = HISTORY_ALARM_RECORD_SIZE - first_part_len;
|
||||||
|
memcpy(sector_buf[1], (uint8_t*)&new_alarm + first_part_len, second_part_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 4. <20><><EFBFBD>ĺ<DEB8><C4BA>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>Flash */
|
||||||
|
for (uint32_t i = 0; i < num_sectors; i++) {
|
||||||
|
w25q32.write(sectors[i], sector_buf[i], W25Q32_SECTOR_SIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 5. <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ζ<EFBFBD><CEB6>У<EFBFBD> */
|
||||||
leakage.history_metadata.write_index++;
|
leakage.history_metadata.write_index++;
|
||||||
if(leakage.history_metadata.write_index >= leakage.history_metadata.max_records)
|
if (leakage.history_metadata.write_index >= leakage.history_metadata.max_records) {
|
||||||
{
|
|
||||||
leakage.history_metadata.write_index = 0;
|
leakage.history_metadata.write_index = 0;
|
||||||
}
|
}
|
||||||
|
if (leakage.history_metadata.total_records < leakage.history_metadata.max_records) {
|
||||||
if(leakage.history_metadata.total_records < leakage.history_metadata.max_records)
|
|
||||||
{
|
|
||||||
leakage.history_metadata.total_records++;
|
leakage.history_metadata.total_records++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD>ݵ<EFBFBD>Flash */
|
||||||
history_save_metadata();
|
history_save_metadata();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -383,21 +399,24 @@ static u8 history_read_record(u32 record_index, app_leakage_history_alarm_t *rec
|
|||||||
|
|
||||||
/* <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʴ洢<CAB4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD> */
|
/* <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʴ洢<CAB4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD> */
|
||||||
uint32_t actual_index;
|
uint32_t actual_index;
|
||||||
if(leakage.history_metadata.total_records == leakage.history_metadata.max_records)
|
if(leakage.history_metadata.total_records == leakage.history_metadata.max_records) {
|
||||||
{
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>write_index ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>¼
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
actual_index = (leakage.history_metadata.write_index - 1 - record_index
|
||||||
actual_index = (leakage.history_metadata.write_index + record_index) %
|
+ leakage.history_metadata.max_records) % leakage.history_metadata.max_records;
|
||||||
leakage.history_metadata.max_records;
|
} else {
|
||||||
|
// δ<><CEB4><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 <20><><EFBFBD>磬<EFBFBD><E7A3AC><EFBFBD><EFBFBD> total_records-1 <20><><EFBFBD><EFBFBD>
|
||||||
|
actual_index = leakage.history_metadata.total_records - 1 - record_index;
|
||||||
}
|
}
|
||||||
else
|
if(actual_index == 125)
|
||||||
{
|
{
|
||||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӷ<EFBFBD>ȡ */
|
actual_index =125;
|
||||||
actual_index = record_index;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t read_addr = history_calc_record_addr(actual_index);
|
uint32_t read_addr = history_calc_record_addr(actual_index);
|
||||||
w25q32.read(read_addr, (uint8_t*)record, HISTORY_ALARM_RECORD_SIZE);
|
w25q32.read(read_addr, (uint8_t*)record, HISTORY_ALARM_RECORD_SIZE);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ typedef struct {
|
|||||||
}network_config_t;
|
}network_config_t;
|
||||||
|
|
||||||
/* <20><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>ṹ */
|
/* <20><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>ṹ */
|
||||||
typedef struct
|
typedef struct __attribute__((packed))
|
||||||
{
|
{
|
||||||
u8 region_name[APP_LEAKAGE_STRING_NANE_LEN]; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
u8 region_name[APP_LEAKAGE_STRING_NANE_LEN]; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
u8 device_id; /* <20>豸ID */
|
u8 device_id; /* <20>豸ID */
|
||||||
|
|||||||
@@ -68,6 +68,8 @@ static void gui_tjc_hmi_all_page_index_clear(void);
|
|||||||
static u8 hmi_tx_buffer[HMI_TX_BUFFER_NUM];
|
static u8 hmi_tx_buffer[HMI_TX_BUFFER_NUM];
|
||||||
/*<2A>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
/*<2A>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
static char gui_tjc_hmi_text_buffer[GUI_TJC_HMI_TEXT_BUFFER_NUM];
|
static char gui_tjc_hmi_text_buffer[GUI_TJC_HMI_TEXT_BUFFER_NUM];
|
||||||
|
/*<2A>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
|
app_leakage_sub_device_flash_data_t temp_buffer[APP_LEAKAGE_SUB_DEVICE_NUM];
|
||||||
/*<2A>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD> <20>˿ں<CBBF>*/
|
/*<2A>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD> <20>˿ں<CBBF>*/
|
||||||
static char *hmi_proto_string_com[] =
|
static char *hmi_proto_string_com[] =
|
||||||
{
|
{
|
||||||
@@ -149,10 +151,7 @@ static void gui_tjc_hmi_save_password_to_w25q(void)
|
|||||||
|
|
||||||
/* <20><><EFBFBD>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>app_leakage<67><65><EFBFBD>浽W25Q32 */
|
/* <20><><EFBFBD>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>app_leakage<67><65><EFBFBD>浽W25Q32 */
|
||||||
static void gui_tjc_hmi_save_device_info_to_w25q(void)
|
static void gui_tjc_hmi_save_device_info_to_w25q(void)
|
||||||
{
|
{
|
||||||
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
||||||
app_leakage_sub_device_flash_data_t temp_buffer[APP_LEAKAGE_SUB_DEVICE_NUM];
|
|
||||||
|
|
||||||
/* <20><>app_leakage<67>ṹ<EFBFBD>帴<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
/* <20><>app_leakage<67>ṹ<EFBFBD>帴<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
for(int i = 0; i < APP_LEAKAGE_SUB_DEVICE_NUM; i++)
|
for(int i = 0; i < APP_LEAKAGE_SUB_DEVICE_NUM; i++)
|
||||||
{
|
{
|
||||||
@@ -306,7 +305,7 @@ static void gui_tjc_hmi_main_send(u8 cmd,u8 opa,u8 *p_data)
|
|||||||
}
|
}
|
||||||
len += 3;
|
len += 3;
|
||||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE>*/
|
/*<2A><><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE>*/
|
||||||
len += gui_tjc_hmi_tx_text_display(GUI_MAIN,0,2,(char *)&hmi_tx_buffer[len],
|
len += gui_tjc_hmi_tx_text_display(GUI_MAIN,0,3,(char *)&hmi_tx_buffer[len],
|
||||||
"%s",SwVersion);
|
"%s",SwVersion);
|
||||||
|
|
||||||
if(HMI_PROTO_CMD_GET == cmd)/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>*/
|
if(HMI_PROTO_CMD_GET == cmd)/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>*/
|
||||||
@@ -521,6 +520,13 @@ static void gui_tjc_hmi_curr_alarm_send(u8 cmd,u8 opa,u8 *p_data)
|
|||||||
{
|
{
|
||||||
page_num++;
|
page_num++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (page_num == 0) {
|
||||||
|
page_num = 1;
|
||||||
|
}
|
||||||
|
if (p_tjc_hmi->page.real_alarm_index >= page_num) {
|
||||||
|
p_tjc_hmi->page.real_alarm_index = page_num - 1;
|
||||||
|
}
|
||||||
len += gui_tjc_hmi_tx_text_display(GUI_CURR_ALARM,0, 0,
|
len += gui_tjc_hmi_tx_text_display(GUI_CURR_ALARM,0, 0,
|
||||||
(char *)&hmi_tx_buffer[len],
|
(char *)&hmi_tx_buffer[len],
|
||||||
"%d/%d",
|
"%d/%d",
|
||||||
@@ -1221,7 +1227,7 @@ static void gui_tjc_hmi_history_alarm_send(u8 cmd,u8 opa,u8 *p_data)
|
|||||||
#define HISTORY_ALARM_PER_PAGE (15) /* ÿҳ15<31><35><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
#define HISTORY_ALARM_PER_PAGE (15) /* ÿҳ15<31><35><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
u16 len = 0, i, j;
|
u16 len = 0, i, j;
|
||||||
u8 page_num, remain_records, display_count;
|
u8 page_num, remain_records, display_count;
|
||||||
u32 total_records, start_index, record_index;
|
u32 total_records, start_index, record_index = 0;
|
||||||
app_leakage_history_alarm_t history_record;
|
app_leakage_history_alarm_t history_record;
|
||||||
char time_str[20];
|
char time_str[20];
|
||||||
char alarm_type_str[20];
|
char alarm_type_str[20];
|
||||||
|
|||||||
@@ -78,11 +78,11 @@ static void proto_modbus_communication_data_analysis(u8 *pData, u16 len,void *ot
|
|||||||
/*<2A><><EFBFBD><EFBFBD>modbusЭ<73><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
/*<2A><><EFBFBD><EFBFBD>modbusЭ<73><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
modbus_analysis_data.id = pData[6];
|
modbus_analysis_data.id = pData[6];
|
||||||
modbus_analysis_data.func = pData[7];
|
modbus_analysis_data.func = pData[7];
|
||||||
modbus_analysis_data.start_addr = pData[8] << 8 | pData[9];
|
modbus_analysis_data.start_addr = (pData[8] << 8) | pData[9];
|
||||||
modbus_analysis_data.reg_number = pData[10] << 8 | pData[11];
|
modbus_analysis_data.reg_number = (pData[10] << 8) | pData[11];
|
||||||
|
|
||||||
send_buff_index_offset = 6;
|
send_buff_index_offset = 6;
|
||||||
memcpy(send_struct.send_buffer,pData,send_buff_index_offset);
|
memcpy(send_struct.send_buffer,pData,4);
|
||||||
|
|
||||||
error_code = ModbusErrorCode_Success;
|
error_code = ModbusErrorCode_Success;
|
||||||
|
|
||||||
@@ -93,9 +93,7 @@ static void proto_modbus_communication_data_analysis(u8 *pData, u16 len,void *ot
|
|||||||
ErrorCode = ModbusErrorCode_IllegalAddr;
|
ErrorCode = ModbusErrorCode_IllegalAddr;
|
||||||
goto Error;
|
goto Error;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
switch (modbus_analysis_data.func)
|
switch (modbus_analysis_data.func)
|
||||||
{
|
{
|
||||||
case 0x03:
|
case 0x03:
|
||||||
@@ -113,7 +111,7 @@ static void proto_modbus_communication_data_analysis(u8 *pData, u16 len,void *ot
|
|||||||
TempAddr++;
|
TempAddr++;
|
||||||
}
|
}
|
||||||
send_struct.len =send_buff_index_offset + 3 + send_struct.send_buffer[send_buff_index_offset + 2];
|
send_struct.len =send_buff_index_offset + 3 + send_struct.send_buffer[send_buff_index_offset + 2];
|
||||||
}goto Success;
|
}break;
|
||||||
/*<2A><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>*/
|
/*<2A><><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>*/
|
||||||
case 0x41:
|
case 0x41:
|
||||||
{
|
{
|
||||||
@@ -132,16 +130,18 @@ static void proto_modbus_communication_data_analysis(u8 *pData, u16 len,void *ot
|
|||||||
TempAddr++;
|
TempAddr++;
|
||||||
}
|
}
|
||||||
send_struct.len = send_buff_index_offset + 6 + 2 * modbus_analysis_data.reg_number;
|
send_struct.len = send_buff_index_offset + 6 + 2 * modbus_analysis_data.reg_number;
|
||||||
}goto Success;
|
}break;
|
||||||
|
|
||||||
case 0x06:
|
case 0x06:
|
||||||
{
|
{
|
||||||
|
modbus_analysis_data.write_data_addr[0] = pData[10];
|
||||||
|
modbus_analysis_data.write_data_addr[1] = pData[11];
|
||||||
TempAddr = modbus_analysis_data.start_addr;
|
TempAddr = modbus_analysis_data.start_addr;
|
||||||
TempData = (modbus_analysis_data.write_data_addr[0] << 8) | modbus_analysis_data.write_data_addr[1];
|
TempData = (modbus_analysis_data.write_data_addr[0] << 8) | modbus_analysis_data.write_data_addr[1];
|
||||||
error_code = proto_modbus_data_write(TempAddr, TempData);
|
error_code = proto_modbus_data_write(TempAddr, TempData);
|
||||||
if (error_code)
|
if (error_code)
|
||||||
{
|
{
|
||||||
goto Error;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
send_struct.len = send_buff_index_offset + 6;
|
send_struct.len = send_buff_index_offset + 6;
|
||||||
@@ -155,6 +155,11 @@ static void proto_modbus_communication_data_analysis(u8 *pData, u16 len,void *ot
|
|||||||
|
|
||||||
case 0x10:
|
case 0x10:
|
||||||
{
|
{
|
||||||
|
u8 byte_count = pData[12]; // <20>ֽ<EFBFBD><D6BD><EFBFBD>
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>Ƶ<EFBFBD> write_data_addr
|
||||||
|
for (u8 i = 0; i < byte_count; i++) {
|
||||||
|
modbus_analysis_data.write_data_addr[i] = pData[13 + i];
|
||||||
|
}
|
||||||
TempAddr = modbus_analysis_data.start_addr;
|
TempAddr = modbus_analysis_data.start_addr;
|
||||||
for (inx = 0; inx < modbus_analysis_data.reg_number; inx++)
|
for (inx = 0; inx < modbus_analysis_data.reg_number; inx++)
|
||||||
{
|
{
|
||||||
@@ -164,39 +169,43 @@ static void proto_modbus_communication_data_analysis(u8 *pData, u16 len,void *ot
|
|||||||
TempAddr++;
|
TempAddr++;
|
||||||
if (error_code)
|
if (error_code)
|
||||||
{
|
{
|
||||||
goto Error;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
send_struct.len = send_buff_index_offset + 6;
|
send_struct.len = send_buff_index_offset + 6;
|
||||||
send_struct.send_buffer[0] = modbus_analysis_data.id;
|
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 0] = modbus_analysis_data.id;
|
||||||
send_struct.send_buffer[1] = modbus_analysis_data.func;
|
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 1] = modbus_analysis_data.func;
|
||||||
send_struct.send_buffer[2] = modbus_analysis_data.start_addr >> 8;
|
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 2] = modbus_analysis_data.start_addr >> 8;
|
||||||
send_struct.send_buffer[3] = modbus_analysis_data.start_addr & 0xff;
|
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 3] = modbus_analysis_data.start_addr & 0xff;
|
||||||
send_struct.send_buffer[4] = modbus_analysis_data.reg_number >> 8;
|
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 4] = modbus_analysis_data.reg_number >> 8;
|
||||||
send_struct.send_buffer[5] = modbus_analysis_data.reg_number & 0xff;
|
send_struct.send_buffer[send_buff_index_offset + send_buff_index_offset + 5] = modbus_analysis_data.reg_number & 0xff;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
error_code = ModbusErrorCode_IllegalFunction;
|
error_code = ModbusErrorCode_IllegalFunction;
|
||||||
}
|
}
|
||||||
goto Error;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Success:
|
/*<2A><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD>ɹ<EFBFBD>*/
|
||||||
send_struct.send_buffer[4] = (send_struct.len - send_buff_index_offset) >> 8;
|
if(ModbusErrorCode_Success == error_code)
|
||||||
send_struct.send_buffer[5] = (send_struct.len - send_buff_index_offset) & 0x00ff;
|
{
|
||||||
proto_modbus_communication_data_send(send_struct.send_buffer, send_struct.len);
|
send_struct.send_buffer[4] = (send_struct.len - send_buff_index_offset) >> 8;
|
||||||
return;
|
send_struct.send_buffer[5] = (send_struct.len - send_buff_index_offset) & 0x00ff;
|
||||||
|
proto_modbus_communication_data_send(send_struct.send_buffer, send_struct.len);
|
||||||
Error:
|
return;
|
||||||
send_struct.len = send_buff_index_offset + 3;
|
}
|
||||||
send_struct.send_buffer[0] = modbus_analysis_data.id;
|
else
|
||||||
send_struct.send_buffer[1] = modbus_analysis_data.func | 0x80;
|
{
|
||||||
send_struct.send_buffer[2] = error_code;
|
send_struct.len = send_buff_index_offset + 3;
|
||||||
send_struct.send_buffer[4] = (send_struct.len - send_buff_index_offset) >> 8;
|
send_struct.send_buffer[4] = (send_struct.len - send_buff_index_offset) >> 8;
|
||||||
send_struct.send_buffer[5] = (send_struct.len - send_buff_index_offset) & 0x00ff;
|
send_struct.send_buffer[5] = (send_struct.len - send_buff_index_offset) & 0x00ff;
|
||||||
proto_modbus_communication_data_send(send_struct.send_buffer, send_struct.len);
|
send_struct.send_buffer[send_buff_index_offset + 0] = modbus_analysis_data.id;
|
||||||
|
send_struct.send_buffer[send_buff_index_offset + 1] = modbus_analysis_data.func | 0x80;
|
||||||
|
send_struct.send_buffer[send_buff_index_offset + 2] = error_code;
|
||||||
|
proto_modbus_communication_data_send(send_struct.send_buffer, send_struct.len);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************
|
/******************************************
|
||||||
|
|||||||
Binary file not shown.
BIN
漏液主控界面_4CH.HMI
BIN
漏液主控界面_4CH.HMI
Binary file not shown.
Reference in New Issue
Block a user