Commit 36917a63 authored by 时昊's avatar 时昊

feat:删除无用的功能

parent d7307d2b
SET PATH=C:\Keil_v5\ARM\ARMCC\Bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Users\tyw05\AppData\Local\Microsoft\WindowsApps; SET PATH=C:\Keil_v5\ARM\ARMCC\Bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
SET CPU_TYPE=BAT32G139GK64FB SET CPU_TYPE=BAT32G139GK64FB
SET CPU_VENDOR=Cmsemicon SET CPU_VENDOR=Cmsemicon
SET UV2_TARGET=RMR42E SET UV2_TARGET=RMR42E
SET CPU_CLOCK=0x00B71B00 SET CPU_CLOCK=0x00B71B00
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\backlight.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\backlight.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_espeed.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_vspeed.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gpiouser.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gpiouser.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_ch0_can_communication_matrix.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_ch0_can_communication_matrix.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\commoninterface.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\commoninterface.__i"
...@@ -13,13 +11,8 @@ SET CPU_CLOCK=0x00B71B00 ...@@ -13,13 +11,8 @@ SET CPU_CLOCK=0x00B71B00
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gui_display.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gui_display.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_user.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_app.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_app.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_tpms.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\faultcode.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\faultcode.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_voltage.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_voltage.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\bluetooth.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_crc16.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_lib.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\bu98r10.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\bu98r10.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\services_mileage_user.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\services_mileage_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\eemanager_interface.__i" "C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\eemanager_interface.__i"
......
...@@ -15,17 +15,17 @@ ...@@ -15,17 +15,17 @@
<View> <View>
<WinId>38003</WinId> <WinId>38003</WinId>
<ViewName>Registers</ViewName> <ViewName>Registers</ViewName>
<TableColWidths>119 76</TableColWidths> <TableColWidths>125 79</TableColWidths>
</View> </View>
<View> <View>
<WinId>346</WinId> <WinId>346</WinId>
<ViewName>Code Coverage</ViewName> <ViewName>Code Coverage</ViewName>
<TableColWidths>838 160</TableColWidths> <TableColWidths>885 160</TableColWidths>
</View> </View>
<View> <View>
<WinId>204</WinId> <WinId>204</WinId>
<ViewName>Performance Analyzer</ViewName> <ViewName>Performance Analyzer</ViewName>
<TableColWidths>998</TableColWidths> <TableColWidths>1045</TableColWidths>
</View> </View>
</SECTreeCtrl> </SECTreeCtrl>
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<WinId>1506</WinId> <WinId>1506</WinId>
<ViewName>Symbols</ViewName> <ViewName>Symbols</ViewName>
<UserString></UserString> <UserString></UserString>
<TableColWidths>68 68 68</TableColWidths> <TableColWidths>71 71 71</TableColWidths>
</View> </View>
<View> <View>
<WinId>1936</WinId> <WinId>1936</WinId>
...@@ -93,8 +93,8 @@ ...@@ -93,8 +93,8 @@
<flags>2</flags> <flags>2</flags>
<showCmd>3</showCmd> <showCmd>3</showCmd>
<MinPosition> <MinPosition>
<xPos>-32000</xPos> <xPos>-1</xPos>
<yPos>-32000</yPos> <yPos>-1</yPos>
</MinPosition> </MinPosition>
<MaxPosition> <MaxPosition>
<xPos>-1</xPos> <xPos>-1</xPos>
...@@ -110,8 +110,8 @@ ...@@ -110,8 +110,8 @@
<MDIClientArea> <MDIClientArea>
<RegID>0</RegID> <RegID>0</RegID>
<MDITabState> <MDITabState>
<Len>60</Len> <Len>286</Len>
<Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000</Data> <Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000010000000000000001000000505A3A5C4465736B746F705C524D523432455C72745F726D723432655C4669726D776172655C536F757263655C436F6D706F6E656E745C54656C6C74616C65735C54656C6C74616C65735F757365722E63000000001054656C6C74616C65735F757365722E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000DB00000065000000B60600009A020000</Data>
</MDITabState> </MDITabState>
</MDIClientArea> </MDIClientArea>
<ViewEx> <ViewEx>
...@@ -130,11 +130,11 @@ ...@@ -130,11 +130,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>D10000004F000000C1040000C8000000</Data> <Data>DA0000004F000000F9040000C8000000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>DA00000065000000F9040000DE000000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -150,11 +150,11 @@ ...@@ -150,11 +150,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>0300000066000000CA0000006C020000</Data> <Data>0300000066000000D40000006B020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -170,11 +170,11 @@ ...@@ -170,11 +170,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>0300000066000000CA0000006C020000</Data> <Data>0300000066000000D40000006B020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000002D01000035020000</Data> <Data>D0000000E6000000CE010000CB020000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -190,11 +190,11 @@ ...@@ -190,11 +190,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>00000000D2010000C10400004B020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -210,11 +210,11 @@ ...@@ -210,11 +210,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -230,11 +230,11 @@ ...@@ -230,11 +230,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -250,11 +250,11 @@ ...@@ -250,11 +250,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -270,11 +270,11 @@ ...@@ -270,11 +270,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE040000E2000000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -290,11 +290,11 @@ ...@@ -290,11 +290,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>D400000066000000BE040000AF000000</Data> <Data>DD00000066000000F6040000AF000000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -310,11 +310,11 @@ ...@@ -310,11 +310,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE04000032020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -330,11 +330,11 @@ ...@@ -330,11 +330,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -350,11 +350,11 @@ ...@@ -350,11 +350,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -370,11 +370,11 @@ ...@@ -370,11 +370,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -390,11 +390,11 @@ ...@@ -390,11 +390,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -410,11 +410,11 @@ ...@@ -410,11 +410,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -430,11 +430,11 @@ ...@@ -430,11 +430,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -450,11 +450,11 @@ ...@@ -450,11 +450,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>0300000066000000CA0000006C020000</Data> <Data>0300000066000000D40000006B020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000002D01000035020000</Data> <Data>D0000000E6000000CE010000CB020000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -470,11 +470,11 @@ ...@@ -470,11 +470,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>0300000066000000CA0000006C020000</Data> <Data>0300000066000000D40000006B020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000002D01000035020000</Data> <Data>D0000000E6000000CE010000CB020000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -490,11 +490,11 @@ ...@@ -490,11 +490,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>000000009D020000B60600004D030000</Data> <Data>000000009C020000B60600004D030000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -510,11 +510,11 @@ ...@@ -510,11 +510,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>00000000BE010000C10400004B020000</Data> <Data>00000000BE010000F90400004B020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -526,15 +526,15 @@ ...@@ -526,15 +526,15 @@
<IsActivated>0</IsActivated> <IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth> <MRUWidth>32767</MRUWidth>
<PinState>0</PinState> <PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000A0020000BE040000E9020000</Data> <Data>030000009F020000B3060000E8020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -550,11 +550,11 @@ ...@@ -550,11 +550,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>D100000063000000C1040000C8000000</Data> <Data>DD00000066000000F6040000AF000000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -570,11 +570,11 @@ ...@@ -570,11 +570,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>D400000066000000BE040000AF000000</Data> <Data>DD00000066000000F6040000AF000000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -610,11 +610,11 @@ ...@@ -610,11 +610,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F403000063000000C1040000CE010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -630,11 +630,11 @@ ...@@ -630,11 +630,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>00000000D2010000C104000037020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -650,11 +650,11 @@ ...@@ -650,11 +650,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>D400000066000000BE040000AF000000</Data> <Data>DD00000066000000F6040000AF000000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -670,11 +670,11 @@ ...@@ -670,11 +670,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>D400000066000000BE040000AF000000</Data> <Data>DD00000066000000F6040000AF000000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -690,11 +690,11 @@ ...@@ -690,11 +690,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>D100000063000000C1040000C8000000</Data> <Data>DD00000066000000F6040000AF000000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -710,11 +710,11 @@ ...@@ -710,11 +710,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>D400000066000000BE040000AF000000</Data> <Data>DD00000066000000F6040000AF000000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -730,11 +730,11 @@ ...@@ -730,11 +730,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -750,11 +750,11 @@ ...@@ -750,11 +750,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -770,11 +770,11 @@ ...@@ -770,11 +770,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -790,11 +790,11 @@ ...@@ -790,11 +790,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -810,11 +810,11 @@ ...@@ -810,11 +810,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -830,11 +830,11 @@ ...@@ -830,11 +830,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -850,11 +850,11 @@ ...@@ -850,11 +850,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -870,11 +870,11 @@ ...@@ -870,11 +870,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -890,11 +890,11 @@ ...@@ -890,11 +890,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -910,11 +910,11 @@ ...@@ -910,11 +910,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -930,11 +930,11 @@ ...@@ -930,11 +930,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -950,11 +950,11 @@ ...@@ -950,11 +950,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -970,11 +970,11 @@ ...@@ -970,11 +970,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -990,11 +990,11 @@ ...@@ -990,11 +990,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1010,11 +1010,11 @@ ...@@ -1010,11 +1010,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1030,11 +1030,11 @@ ...@@ -1030,11 +1030,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1050,11 +1050,11 @@ ...@@ -1050,11 +1050,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1070,11 +1070,11 @@ ...@@ -1070,11 +1070,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1090,11 +1090,11 @@ ...@@ -1090,11 +1090,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1110,11 +1110,11 @@ ...@@ -1110,11 +1110,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1130,11 +1130,11 @@ ...@@ -1130,11 +1130,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1150,11 +1150,11 @@ ...@@ -1150,11 +1150,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>0300000066000000CA00000032020000</Data> <Data>0300000066000000D3000000B7020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000002D01000035020000</Data> <Data>D0000000E6000000CE010000CB020000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1166,15 +1166,15 @@ ...@@ -1166,15 +1166,15 @@
<IsActivated>0</IsActivated> <IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth> <MRUWidth>32767</MRUWidth>
<PinState>0</PinState> <PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>000000009D020000C104000002030000</Data> <Data>030000009F020000B3060000E8020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1186,15 +1186,15 @@ ...@@ -1186,15 +1186,15 @@
<IsActivated>0</IsActivated> <IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth> <MRUWidth>32767</MRUWidth>
<PinState>0</PinState> <PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000A0020000BE040000E9020000</Data> <Data>030000009F020000B3060000E8020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000002D01000035020000</Data> <Data>D0000000E6000000CE010000CB020000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1210,11 +1210,11 @@ ...@@ -1210,11 +1210,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1230,11 +1230,11 @@ ...@@ -1230,11 +1230,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1246,15 +1246,15 @@ ...@@ -1246,15 +1246,15 @@
<IsActivated>0</IsActivated> <IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth> <MRUWidth>32767</MRUWidth>
<PinState>0</PinState> <PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000A0020000BE040000E9020000</Data> <Data>030000009F020000B3060000E8020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000002D01000035020000</Data> <Data>D0000000E6000000CE010000CB020000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1266,15 +1266,15 @@ ...@@ -1266,15 +1266,15 @@
<IsActivated>0</IsActivated> <IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth> <MRUWidth>32767</MRUWidth>
<PinState>0</PinState> <PinState>0</PinState>
<RecentFrameAlignment>4096</RecentFrameAlignment> <RecentFrameAlignment>32768</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000A0020000BE040000E9020000</Data> <Data>030000009F020000B3060000E8020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000002D01000035020000</Data> <Data>D0000000E6000000CE010000CB020000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1290,11 +1290,11 @@ ...@@ -1290,11 +1290,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>D400000066000000BE040000AF000000</Data> <Data>DD00000066000000F6040000AF000000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A000000500000009A020000C9000000</Data> <Data>D0000000E60000004C0300005F010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1310,11 +1310,11 @@ ...@@ -1310,11 +1310,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1330,11 +1330,11 @@ ...@@ -1330,11 +1330,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1350,11 +1350,11 @@ ...@@ -1350,11 +1350,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1370,11 +1370,11 @@ ...@@ -1370,11 +1370,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1390,11 +1390,11 @@ ...@@ -1390,11 +1390,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1410,11 +1410,11 @@ ...@@ -1410,11 +1410,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1430,11 +1430,11 @@ ...@@ -1430,11 +1430,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1450,11 +1450,11 @@ ...@@ -1450,11 +1450,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1470,11 +1470,11 @@ ...@@ -1470,11 +1470,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1490,11 +1490,11 @@ ...@@ -1490,11 +1490,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1510,11 +1510,11 @@ ...@@ -1510,11 +1510,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1530,11 +1530,11 @@ ...@@ -1530,11 +1530,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1550,11 +1550,11 @@ ...@@ -1550,11 +1550,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1570,11 +1570,11 @@ ...@@ -1570,11 +1570,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1590,11 +1590,11 @@ ...@@ -1590,11 +1590,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1610,11 +1610,11 @@ ...@@ -1610,11 +1610,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1630,11 +1630,11 @@ ...@@ -1630,11 +1630,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1650,11 +1650,11 @@ ...@@ -1650,11 +1650,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1670,11 +1670,11 @@ ...@@ -1670,11 +1670,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1690,11 +1690,11 @@ ...@@ -1690,11 +1690,11 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>F703000066000000BE04000038010000</Data> <Data>2604000066000000F6040000B5010000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<Window> <Window>
...@@ -1704,7 +1704,7 @@ ...@@ -1704,7 +1704,7 @@
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed> <IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated> <IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth> <MRUWidth>966</MRUWidth>
<PinState>0</PinState> <PinState>0</PinState>
<RecentFrameAlignment>8192</RecentFrameAlignment> <RecentFrameAlignment>8192</RecentFrameAlignment>
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
...@@ -1744,7 +1744,7 @@ ...@@ -1744,7 +1744,7 @@
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed> <IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated> <IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth> <MRUWidth>476</MRUWidth>
<PinState>0</PinState> <PinState>0</PinState>
<RecentFrameAlignment>8192</RecentFrameAlignment> <RecentFrameAlignment>8192</RecentFrameAlignment>
<RecentRowIndex>1</RecentRowIndex> <RecentRowIndex>1</RecentRowIndex>
...@@ -1764,7 +1764,7 @@ ...@@ -1764,7 +1764,7 @@
<IsFloating>0</IsFloating> <IsFloating>0</IsFloating>
<IsTabbed>0</IsTabbed> <IsTabbed>0</IsTabbed>
<IsActivated>0</IsActivated> <IsActivated>0</IsActivated>
<MRUWidth>32767</MRUWidth> <MRUWidth>612</MRUWidth>
<PinState>0</PinState> <PinState>0</PinState>
<RecentFrameAlignment>8192</RecentFrameAlignment> <RecentFrameAlignment>8192</RecentFrameAlignment>
<RecentRowIndex>2</RecentRowIndex> <RecentRowIndex>2</RecentRowIndex>
...@@ -1790,23 +1790,23 @@ ...@@ -1790,23 +1790,23 @@
<RecentRowIndex>0</RecentRowIndex> <RecentRowIndex>0</RecentRowIndex>
<RectRecentDocked> <RectRecentDocked>
<Len>16</Len> <Len>16</Len>
<Data>03000000D5010000BE0400001E020000</Data> <Data>03000000D5010000F604000032020000</Data>
</RectRecentDocked> </RectRecentDocked>
<RectRecentFloat> <RectRecentFloat>
<Len>16</Len> <Len>16</Len>
<Data>3A0000005000000007010000FC000000</Data> <Data>D0000000E6000000A601000092010000</Data>
</RectRecentFloat> </RectRecentFloat>
</Window> </Window>
<DockMan> <DockMan>
<Len>3312</Len> <Len>3312</Len>
<Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD1000000C8000000C1040000CC000000000000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000003A000000500000009A020000C9000000D10000004F000000C1040000C80000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFF00300004F000000F4030000CE010000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000003A0000005000000007010000FC000000F40300004F000000C1040000CE01000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFCD0000004F000000D100000085020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000003A0000005000000007010000FC000000000000004F000000CD000000850200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000BA010000C1040000BE01000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB090000018000800000000000003A0000005000000007010000FC00000000000000BE010000C10400004B02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF61020000BE010000650200004B02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000085020000B6060000890200000100000001000010040000000100000084FDFFFF77000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000003A000000500000009A020000C90000000000000089020000B60600004D0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data> <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFDA000000C8000000F9040000CC000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000DA00000065000000F9040000DE000000DA0000004F000000F9040000C80000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF1F0400004F00000023040000CE010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000002304000065000000F9040000E4010000230400004F000000F9040000CE01000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFD70000004F000000DB00000084020000010000000200001004000000010000002CFFFFFFD7050000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000065000000D6000000E6020000000000004F000000D7000000840200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000BA010000F9040000BE01000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000000000000D4010000F90400006102000000000000BE010000F90400004B02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF7D020000BE010000810200004B02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000084020000B6060000880200000100000001000010040000000100000084FDFFFF77000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000EA020000B6060000630300000000000088020000B60600004D0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
</DockMan> </DockMan>
<ToolBar> <ToolBar>
<RegID>59392</RegID> <RegID>59392</RegID>
<Name>File</Name> <Name>File</Name>
<Buttons> <Buttons>
<Len>2537</Len> <Len>2537</Len>
<Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000400000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000</Data> <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
</Buttons> </Buttons>
<OriginalItems> <OriginalItems>
<Len>1423</Len> <Len>1423</Len>
...@@ -1822,7 +1822,7 @@ ...@@ -1822,7 +1822,7 @@
<Name>Build</Name> <Name>Build</Name>
<Buttons> <Buttons>
<Len>972</Len> <Len>972</Len>
<Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000006524D523432459600000000000000010006524D52343245000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000</Data> <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA000000000000000000000000000000000000000000000000010000000100000096000000030020500000000006524D523432459600000000000000010006524D52343245000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
</Buttons> </Buttons>
<OriginalItems> <OriginalItems>
<Len>583</Len> <Len>583</Len>
...@@ -1838,7 +1838,7 @@ ...@@ -1838,7 +1838,7 @@
<Name>Debug</Name> <Name>Debug</Name>
<Buttons> <Buttons>
<Len>2373</Len> <Len>2373</Len>
<Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000</Data> <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
</Buttons> </Buttons>
<OriginalItems> <OriginalItems>
<Len>898</Len> <Len>898</Len>
...@@ -1857,4 +1857,22 @@ ...@@ -1857,4 +1857,22 @@
</ViewEx> </ViewEx>
</WinLayoutEx> </WinLayoutEx>
<MDIGroups>
<Orientation>1</Orientation>
<ActiveMDIGroup>0</ActiveMDIGroup>
<MDIGroup>
<Size>100</Size>
<ActiveTab>0</ActiveTab>
<Doc>
<Name>..\..\..\..\Source\Component\Telltales\Telltales_user.c</Name>
<ColumnNumber>0</ColumnNumber>
<TopLine>218</TopLine>
<CurrentLine>245</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
</MDIGroup>
</MDIGroups>
</ProjectGui> </ProjectGui>
...@@ -393,26 +393,6 @@ ...@@ -393,26 +393,6 @@
<FileType>5</FileType> <FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BackLight\BackLight.h</FilePath> <FilePath>..\..\..\..\Source\Application\BackLight\BackLight.h</FilePath>
</File> </File>
<File>
<FileName>Data_ESpeed.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Data_ESpeed\Data_ESpeed.c</FilePath>
</File>
<File>
<FileName>Data_ESpeed.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Data_ESpeed\Data_ESpeed.h</FilePath>
</File>
<File>
<FileName>Data_VSpeed.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Data_VSpeed\Data_VSpeed.c</FilePath>
</File>
<File>
<FileName>Data_VSpeed.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Data_VSpeed\Data_VSpeed.h</FilePath>
</File>
<File> <File>
<FileName>Application.h</FileName> <FileName>Application.h</FileName>
<FileType>5</FileType> <FileType>5</FileType>
...@@ -493,16 +473,6 @@ ...@@ -493,16 +473,6 @@
<FileType>5</FileType> <FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\CAN_User\Can_App.h</FilePath> <FilePath>..\..\..\..\Source\Application\CAN_User\Can_App.h</FilePath>
</File> </File>
<File>
<FileName>Data_TPMS.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Data_TPMS\Data_TPMS.c</FilePath>
</File>
<File>
<FileName>Data_TPMS.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Data_TPMS\Data_TPMS.h</FilePath>
</File>
<File> <File>
<FileName>FaultCode.c</FileName> <FileName>FaultCode.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
...@@ -523,46 +493,6 @@ ...@@ -523,46 +493,6 @@
<FileType>5</FileType> <FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Data_Voltage\Data_Voltage.h</FilePath> <FilePath>..\..\..\..\Source\Application\Data_Voltage\Data_Voltage.h</FilePath>
</File> </File>
<File>
<FileName>BlueTooth.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\BlueTooth.c</FilePath>
</File>
<File>
<FileName>BlueTooth.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\BlueTooth.h</FilePath>
</File>
<File>
<FileName>Protocol_CRC16.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_CRC16.c</FilePath>
</File>
<File>
<FileName>Protocol_CRC16.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_CRC16.h</FilePath>
</File>
<File>
<FileName>Protocol_Lib.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_Lib.c</FilePath>
</File>
<File>
<FileName>Protocol_Lib.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_Lib.h</FilePath>
</File>
<File>
<FileName>Protocol_User.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_User.c</FilePath>
</File>
<File>
<FileName>Protocol_User.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_User.h</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
......
SET PATH=C:\Keil_v5\ARM\ARMCC\Bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Users\tyw05\AppData\Local\Microsoft\WindowsApps;
SET ARMCC5_ASMOPT=--diag_suppress=9931
SET ARMCC5_CCOPT=--diag_suppress=9931
SET ARMCC5_LINKOPT=--diag_suppress=9931
SET CPU_TYPE=BAT32A279KM64FB
SET CPU_VENDOR=Cmsemicon
SET UV2_TARGET=TianYing200
SET CPU_CLOCK=0x00B71B00
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_fuel.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\backlight.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_espeed.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_vspeed.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gpiouser.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_ch0_can_communication_matrix.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\commoninterface.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\seg_display.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gui_display.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_app.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_coolant.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_tpms.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\faultcode.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_voltage.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\bluetooth.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_crc16.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_lib.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\bu98r10.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\services_mileage_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\eemanager_interface.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\key_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\line_in_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\led_driver_interface.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\simulated_iic_2_master.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\analog_circuits.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\analog_signals.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\light_sensor_interface.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\powermanag_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\system_monitor_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\telltales_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\maintenance.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\system_monitor_1.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_tick_timer_bat32a239.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_wdt_bat32a239.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_gpio_bat32a239.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\deepsleep.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_rtc.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\trmerm.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_adc_interim_version.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_can.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_clock_select_bat32a239.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\uart_demo.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\main.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\sys_scheduler.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\sys_scheduler_lib.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\sys_task_list.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\adc.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\cgc.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\cmp.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\dac.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\delay.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\dma.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\elc.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\epwm.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\flash.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gpio.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\i2c.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\i2ca.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\interval.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\intp.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\key.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\pcbz.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\pga.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rtc.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\sci_common.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\sspi.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\tim.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\tima.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\timb.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\timm.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\uart.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\wdt.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\isr.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\docan_iso15765.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\uds_iso14229_server.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\uds_iso14229_services.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\isr_bat32a279.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmAsm" --Via ".\objects\startup_bat32a279._ia"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\system_bat32a279.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmLink" --Via ".\Objects\TianYing.lnp"
...@@ -4,8 +4,7 @@ ...@@ -4,8 +4,7 @@
#include "GPIO_USER\GpioUser.h" #include "GPIO_USER\GpioUser.h"
#include "BackLight\BackLight.h" #include "BackLight\BackLight.h"
#include "Data_VSpeed\Data_VSpeed.h"
#include "Data_ESpeed\Data_ESpeed.h"
#include "CommonInterface\CommonInterface.h" #include "CommonInterface\CommonInterface.h"
#include "SEG_DISPLAY\SEG_DISPLAY.h" #include "SEG_DISPLAY\SEG_DISPLAY.h"
#include "SEG_DISPLAY\SEG_Ref.h" #include "SEG_DISPLAY\SEG_Ref.h"
...@@ -13,11 +12,7 @@ ...@@ -13,11 +12,7 @@
#include "CAN_APP\CAN_CH0_CAN_Communication_Matrix.h" #include "CAN_APP\CAN_CH0_CAN_Communication_Matrix.h"
#include "Can_User/Can_User.h" #include "Can_User/Can_User.h"
#include "Can_User/Can_App.h" #include "Can_User/Can_App.h"
#include "Data_TPMS/Data_TPMS.h"
#include "Data_Voltage/Data_Voltage.h" #include "Data_Voltage/Data_Voltage.h"
#include "FaultCode/FaultCode.h" #include "FaultCode/FaultCode.h"
#include "BLUETOOTH/BlueTooth.h"
#include "BLUETOOTH/Protocol_CRC16.h"
#include "BLUETOOTH/Protocol_Lib.h"
#include "BLUETOOTH/Protocol_User.h"
#endif #endif
#include "BlueTooth.h"
BlueTooth_t BlueTooth;
uint8_t UUIDData[32] = {"tywtywtywtywtywtywtywtywtywtyw03"};
void BlueTooth_KL30_KL15_Wakeup_Init(void)
{
BlueTooth.BLE_St = BLUE_STATE_Starting;
BlueTooth.Navigation_St = EM_ESP32_NAVI_ST_STANDBY;
BlueTooth.Navigation_Code = 0;
BlueTooth.Navigation_Mileage = 0;
}
void Send_UUID_To_Esp32(void)
{
Protocol_Send(MCU_ESP32_0x03, UUIDData, 32);
}
uint8_t Get_Navigation_St_Dis(void)
{
return BlueTooth.Navigation_St;
}
uint8_t Get_Navigation_Code_Dis(void)
{
return BlueTooth.Navigation_Code;
}
uint32_t Get_Navigation_Mileage_Dis(void)
{
return BlueTooth.Navigation_Mileage;
}
\ No newline at end of file
#ifndef __BLUE_TOOTH_H_
#define __BLUE_TOOTH_H_
#include "Protocol_Lib.h"
#include <stdio.h>
#include <stdint.h>
#include "Components.h"
#include "Application.h"
#define ESP32_MCU_0x10 0x10 //蓝牙模组启动发送ID
#define MCU_ESP32_0x20 0x20 //蓝牙模组启动后,MCU回复ID
#define ESP32_MCU_0x01 0x01 //ESP32发送蓝牙导航信息的ID
#define ESP32_MCU_0x12 0x12 //低功耗蓝牙启动状态及蓝牙名称
#define MCU_ESP32_0x03 0x03 //MCU发送UUID
enum
{
BLUE_STATE_Starting, //蓝牙模组启动中
BLUE_STATE_ON, //蓝牙模组启动完成
BLUE_STATE_OFF,
};
typedef struct __attribute__((aligned(4)))
{
uint8_t BlueTooth_St; /*蓝牙模组启动状态 0启动中 1启动完成*/
uint8_t Navigation_St;/*导航状态 0x35 未导航或导航结束 0x33 正在导航*/
uint8_t Navigation_Code;/*蓝牙导向编码*/
uint32_t Navigation_Mileage;/*剩余里程*/
uint8_t BLE_St;
} BlueTooth_t;
typedef enum __attribute__((aligned(4)))
{
EM_ESP32_BT_STARTUP_ST_STANDBY = 0,
EM_ESP32_BT_STARTUP_ST_SUCCESS,
} EM_ESP32_BT_STARTUP_ST_T;
typedef enum __attribute__((aligned(4)))
{
EM_ESP32_NAVI_ST_STANDBY = 0,
EM_ESP32_NAVI_ST_NAVIGATING,
} EM_ESP32_NAVI_ST_T;
typedef struct __attribute__((aligned(4)))
{
EM_ESP32_BT_STARTUP_ST_T Startup;
EM_ESP32_NAVI_ST_T NaviSt;
uint8_t NaviCode;
uint8_t BlueToothConnectSt;
uint32_t NaviMileage;
uint8_t BlueName[6];
} ESP32_COMM_INFO_T;
extern BlueTooth_t BlueTooth;
uint8_t Get_Navigation_St_Dis(void);
uint8_t Get_Navigation_Code_Dis(void);
uint32_t Get_Navigation_Mileage_Dis(void);
void Send_UUID_To_Esp32(void);
void BlueTooth_KL30_KL15_Wakeup_Init(void);
#endif
/**
* @file Protocol_CRC16.c
* @brief CRC16计算
* @details CRC16计算
* @author myliu
* @date 2022.05.09
* @version V1.0
* @copyright myiu
*/
#include "Protocol_CRC16.h"
static const Protocol_uint8_t CRC16_TAB_H [ 256 ] = {0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u};
static const Protocol_uint8_t CRC16_TAB_L [ 256 ] = {0x00u, 0xC0u, 0xC1u, 0x01u, 0xC3u, 0x03u, 0x02u, 0xC2u, 0xC6u, 0x06u, 0x07u, 0xC7u, 0x05u, 0xC5u, 0xC4u, 0x04u, 0xCCu, 0x0Cu, 0x0Du, 0xCDu, 0x0Fu, 0xCFu, 0xCEu, 0x0Eu, 0x0Au, 0xCAu, 0xCBu, 0x0Bu, 0xC9u, 0x09u, 0x08u, 0xC8u, 0xD8u, 0x18u, 0x19u, 0xD9u, 0x1Bu, 0xDBu, 0xDAu, 0x1Au, 0x1Eu, 0xDEu, 0xDFu, 0x1Fu, 0xDDu, 0x1Du, 0x1Cu, 0xDCu, 0x14u, 0xD4u, 0xD5u, 0x15u, 0xD7u, 0x17u, 0x16u, 0xD6u, 0xD2u, 0x12u, 0x13u, 0xD3u, 0x11u, 0xD1u, 0xD0u, 0x10u, 0xF0u, 0x30u, 0x31u, 0xF1u, 0x33u, 0xF3u, 0xF2u, 0x32u, 0x36u, 0xF6u, 0xF7u, 0x37u, 0xF5u, 0x35u, 0x34u, 0xF4u, 0x3Cu, 0xFCu, 0xFDu, 0x3Du, 0xFFu, 0x3Fu, 0x3Eu, 0xFEu, 0xFAu, 0x3Au, 0x3Bu, 0xFBu, 0x39u, 0xF9u, 0xF8u, 0x38u, 0x28u, 0xE8u, 0xE9u, 0x29u, 0xEBu, 0x2Bu, 0x2Au, 0xEAu, 0xEEu, 0x2Eu, 0x2Fu, 0xEFu, 0x2Du, 0xEDu, 0xECu, 0x2Cu, 0xE4u, 0x24u, 0x25u, 0xE5u, 0x27u, 0xE7u, 0xE6u, 0x26u, 0x22u, 0xE2u, 0xE3u, 0x23u, 0xE1u, 0x21u, 0x20u, 0xE0u, 0xA0u, 0x60u, 0x61u, 0xA1u, 0x63u, 0xA3u, 0xA2u, 0x62u, 0x66u, 0xA6u, 0xA7u, 0x67u, 0xA5u, 0x65u, 0x64u, 0xA4u, 0x6Cu, 0xACu, 0xADu, 0x6Du, 0xAFu, 0x6Fu, 0x6Eu, 0xAEu, 0xAAu, 0x6Au, 0x6Bu, 0xABu, 0x69u, 0xA9u, 0xA8u, 0x68u, 0x78u, 0xB8u, 0xB9u, 0x79u, 0xBBu, 0x7Bu, 0x7Au, 0xBAu, 0xBEu, 0x7Eu, 0x7Fu, 0xBFu, 0x7Du, 0xBDu, 0xBCu, 0x7Cu, 0xB4u, 0x74u, 0x75u, 0xB5u, 0x77u, 0xB7u, 0xB6u, 0x76u, 0x72u, 0xB2u, 0xB3u, 0x73u, 0xB1u, 0x71u, 0x70u, 0xB0u, 0x50u, 0x90u, 0x91u, 0x51u, 0x93u, 0x53u, 0x52u, 0x92u, 0x96u, 0x56u, 0x57u, 0x97u, 0x55u, 0x95u, 0x94u, 0x54u, 0x9Cu, 0x5Cu, 0x5Du, 0x9Du, 0x5Fu, 0x9Fu, 0x9Eu, 0x5Eu, 0x5Au, 0x9Au, 0x9Bu, 0x5Bu, 0x99u, 0x59u, 0x58u, 0x98u, 0x88u, 0x48u, 0x49u, 0x89u, 0x4Bu, 0x8Bu, 0x8Au, 0x4Au, 0x4Eu, 0x8Eu, 0x8Fu, 0x4Fu, 0x8Du, 0x4Du, 0x4Cu, 0x8Cu, 0x44u, 0x84u, 0x85u, 0x45u, 0x87u, 0x47u, 0x46u, 0x86u, 0x82u, 0x42u, 0x43u, 0x83u, 0x41u, 0x81u, 0x80u, 0x40u};
/**
* 获取CRC16校验和
*/
/**
* @brief 计算传入数据的CRC16
* @param[in] pData 计算的数据内容
* @param[in] len 计算的数据长度
*
* @return 校验和
*
* @since 1.0.0
*/
Protocol_uint16_t getCheckSum(const Protocol_uint8_t *pData, int len)
{
Protocol_uint8_t u8_crc_h = 0xFFu;
Protocol_uint8_t u8_crc_l = 0xFFu;
Protocol_uint8_t u8_index = 0u;
Protocol_uint8_t i = 0u;
Protocol_uint16_t re_value;
while ( len-- )
{
u8_index = u8_crc_h ^ (pData [ i++ ]);
u8_crc_h = u8_crc_l ^ CRC16_TAB_H [ u8_index ];
u8_crc_l = CRC16_TAB_L [ u8_index ];
}
re_value = ( Protocol_uint16_t )u8_crc_h << 8u;
re_value |= u8_crc_l;
return re_value;
}
#ifndef PROTOCOL_CRC16_H
#define PROTOCOL_CRC16_H
//#include "Application.h"
#include "Protocol_Lib.h"
#include <stdio.h>
#include <stdint.h>
Protocol_uint16_t getCheckSum(const Protocol_uint8_t *pData, int len);
#endif
/**
* @file Protocol_Lib.c
* @brief 串口协议解析
* @details 串口协议解析
* @author myliu
* @date 2022.05.09
* @version V1.0
* @copyright myiu
*/
#include <stdio.h>
#include <string.h>
#include "Protocol_Lib.h"
static UARTOpen UARTOpen_Cbk;
static UARTSend UARTSend_Cbk;
static UARTRead UARTRead_Cbk;
static ProcParse ProcParseCbk;
static UARTClose UARTClose_Cbk;
static ProtocolSetData ProtocolSetData_Cbk;
static Protocol_uint8_t *mDataBufPtr = Protocol_NULL;
static Protocol_uint16_t mDataBufLen = 0;
static Protocol_uint32_t DataBufMaxLen = 0;
//#define DEBUG_PRO_DATA 0
/**
* @brief 初始化函数
* @param[in] pMemSpace 分配给协议库的内存空间,用来缓存串口数据
* @param[in] MemLen 分配的内存空间大小
* @param[in] pFunc 回调函数,包括串口打开、发送、读取、关闭,也包括解析后数据回传
* @param[in] ProcParseCbk 此回调函数,返回数据从FrameNo开始到CRC16之前,和ProtocolSetData_Cbk二选一
* @param[in] ProtocolSetData_Cbk 此回调函数,返回数据区分命令字、电源状态等,和ProcParseCbk二选一,详见结构体Protocol_Data_t
*
* @warning 此函数KL30和Wakeup都要调用,否则未分配内存,功能不好使,也有可能造成野指针复位
*
* @since 1.0.0
*/
void Protocol_Init(Protocol_uint8_t *pMemSpace, Protocol_uint32_t MemLen, Protocol_Func_t *pFunc)
{
mDataBufPtr = pMemSpace;
DataBufMaxLen = MemLen;
UARTOpen_Cbk = pFunc->UARTOpen_Cbk;
UARTSend_Cbk = pFunc->UARTSend_Cbk;
UARTRead_Cbk = pFunc->UARTRead_Cbk;
ProcParseCbk = pFunc->ProcParseCbk;
UARTClose_Cbk = pFunc->UARTClose_Cbk;
ProtocolSetData_Cbk = pFunc->ProtocolSetData_Cbk;
if ( UARTOpen_Cbk != Protocol_NULL )
{
UARTOpen_Cbk( );
}
return;
}
/**
* @brief 串口协议服务函数,包括读取数据,解析数据,如在外部读取数据,可不调用此函数
*
* @warning 此函数可自定义周期调用,建议20ms周期调用,最大不可超过协议的最小发送周期
*
* @since 1.0.0
*/
void Protocol_Service(void)
{
int len;
Protocol_uint32_t readNum = 0;
if ( UARTRead_Cbk != Protocol_NULL )
{
readNum = UARTRead_Cbk(mDataBufPtr + mDataBufLen, 256 - mDataBufLen);
if ( readNum > 0 )
{
mDataBufLen += readNum;
// 解析协议
len = Protocol_Parse(mDataBufPtr, mDataBufLen);
if ( (len > 0) && (len < mDataBufLen) )
{
// 将未解析的数据移到头部
// Move unparsed data to the head
memcpy(mDataBufPtr, mDataBufPtr + len, mDataBufLen - len);
}
mDataBufLen -= len;
}
}
}
/**
* @brief 协议解析函数,如外部获取数据(例如中断),可直接调用此函数解析数据
* @param[in] pData 协议数据内容
* @param[in] len 需要处理的协议数据长度
*
* @return 剩余已处理的数据长度
*
* @since 1.0.0
*/
Protocol_uint32_t Protocol_Parse(const Protocol_uint8_t *pData, Protocol_uint32_t len)
{
Protocol_uint32_t remainLen = len; // 剩余数据长度 Remaining data length
Protocol_uint32_t dataLen; // 数据包长度 Packet length
Protocol_uint32_t frameLen; // 帧长度 Frame length
Protocol_uint32_t frameSum;
Protocol_Data_t ProcData;
int i = 0;
int dataBuf [ 256 ];
/**
* 以下部分需要根据协议格式进行相应的修改,解析出每一帧的数据
*/
while ( remainLen >= DATA_PACKAGE_MIN_LEN )
{
// 找到一帧数据的数据头
// Find the data header of a frame of data
while ( (remainLen >= 2) && ((pData [ 0 ] != CMD_HEAD1) || (pData [ 1 ] != CMD_HEAD2)) )
{
pData++;
remainLen--;
continue;
}
if ( remainLen < DATA_PACKAGE_MIN_LEN )
{
#ifdef DEBUG_PRO_DATA
d_printf("too short!!!!!!\n");
#endif
break;
}
dataLen = pData [ 2 ];
frameLen = dataLen + DATA_PACKAGE_FIXED_LEN;
if ( frameLen > remainLen )
{
// 数据内容不全
#ifdef DEBUG_PRO_DATA
d_printf("Incomplete data packet!!!!!!\n");
#endif
break;
}
// 打印一帧数据,需要时在CommDef.h文件中打开DEBUG_PRO_DATA宏
#ifdef DEBUG_PRO_DATA
for ( i = 0; i < frameLen; ++i )
{
d_printf("%x ", pData [ i ]);
}
d_printf("\n");
#endif
// 检测校验码 Checksum
frameSum = (pData [ frameLen - 2 ] << 8) | (pData [ frameLen - 1 ]);
if ( frameLen > 4 )
{
if ( getCheckSum(pData + 2, frameLen - 4) == frameSum )
{
// 解析一帧数据
if ( ProcParseCbk != Protocol_NULL )
{
ProcParseCbk(pData + 3, dataLen - 2);
}
if ( ProtocolSetData_Cbk != Protocol_NULL )
{
ProcData.FrameNo = pData [ 3 ];
ProcData.PowerSts = (pData [ 4 ] >> 6) & 0x03;
ProcData.CmdID = pData [ 4 ] & 0x3F;
if ( ProcData.CmdID == 0x10 )
{
#ifdef DEBUG_PRO_DATA
for ( i = 0; i < frameLen; ++i )
{
d_printf("%x ", pData [ i ]);
}
d_printf("\n");
#endif
}
if ( ProcData.CmdID == 0x12 )
{
#ifdef DEBUG_PRO_DATA
for ( i = 0; i < frameLen; ++i )
{
d_printf("%x ", pData [ i ]);
}
d_printf("\n");
#endif
}
ProcData.DataLen = dataLen - 4;
memcpy(ProcData.Data, pData + 5, ProcData.DataLen);
ProtocolSetData_Cbk(&ProcData);
}
}
else
{
for ( i = 0; i < frameLen; ++i )
{
// dataBuf [ i ] = pData [ i ];
}
i = 0;
#ifdef DEBUG_PRO_DATA
d_printf("CheckSum error: new = %x, old = %x!!!!!!\n", getCheckSum(pData + 2, frameLen - 4), frameSum);
#endif
}
}
pData += frameLen;
remainLen -= frameLen;
}
return len - remainLen;
}
/**
* 根据协议格式进行拼接
*/
/**
* @brief 串口协议数据拼接,如初始化发送函数,调用此函数后,数据已通过串口发送
* @param[in] cmdID 命令字
* @param[in] pData 协议数据内容(不包括协议头、长度、帧序号、命令字、校验和,从数据域算起)
* @param[in] len 数据域长度
*
* @return 已发送的数据长度
*
* @since 1.0.0
*/
Protocol_uint32_t Protocol_Send(const Protocol_uint16_t cmdID, const Protocol_uint8_t *pData, Protocol_uint8_t len)
{
int i = 0;
Protocol_uint16_t checksum = 0;
Protocol_uint8_t dataBuf [ 256 ];
Protocol_uint32_t frameLen;
if ( len + DATA_PACKAGE_MIN_LEN > 256 )
{
// printf("sendProtocol data is too len !!!\n");
return 0;
}
dataBuf [ 0 ] = CMD_HEAD1;
dataBuf [ 1 ] = CMD_HEAD2; // 同步帧头 Sync frame header
dataBuf [ 2 ] = len + 4;
dataBuf [ 3 ] = 0; // 命令字节 Command byte
dataBuf [ 4 ] = ( Protocol_uint8_t )cmdID;
frameLen = 5;
// 数据 Data
for ( i = 0; i < len; ++i )
{
dataBuf [ frameLen ] = pData [ i ];
frameLen++;
}
// 校验码 Checksum
checksum = getCheckSum(dataBuf + 2, frameLen - 2);
dataBuf [ frameLen ] = (checksum >> 8) & 0x00FF;
frameLen++;
dataBuf [ frameLen ] = checksum & 0x00FF;
frameLen++;
if ( UARTSend_Cbk != Protocol_NULL )
{
return UARTSend_Cbk(dataBuf, frameLen);
}
else
{
return 0;
}
}
#ifndef PROTOCOL_LIB_H
#define PROTOCOL_LIB_H
/*
Platform_32Bit
Platform_16Bit
*/
#ifdef Platform_16Bit
#define Protocol_uint8_t unsigned char
#define Protocol_uint16_t unsigned int
#define Protocol_uint32_t unsigned long
#else
#define Protocol_uint8_t unsigned char
#define Protocol_uint16_t unsigned short
#define Protocol_uint32_t unsigned int
#define Protocol_uint64_t unsigned long long
#endif
#ifndef Protocol_NULL
#define Protocol_NULL ( void * )0u
#endif /* NULL */
/**<0xEB 0x90 长度 帧序号 命令字 DATA0-DATAN CRC16_1 CRC16_2*/
#define DATA_PACKAGE_MIN_LEN 7 /**< 0xEB 0x90 + 长度 + 数据包序号 + CMDID + CRC16_1 + CRC16_2 */
#define DATA_PACKAGE_FIXED_LEN 3 /**< 未计算在长度内的数据 0xEB 0x90 + 长度位 */
#define CMD_HEAD1 0xEB
#define CMD_HEAD2 0x90
/**@struct Protocol_Data_t
* @brief 解析后的协议数据
*/
typedef struct __attribute__((aligned(4)))
{
Protocol_uint8_t FrameNo; /**< 帧序号 */
Protocol_uint8_t PowerSts; /**< 电源状态 */
Protocol_uint8_t CmdID; /**< 命令字 */
Protocol_uint8_t DataLen; /**< 有效数据长度 DATA0-DATAN*/
Protocol_uint8_t Data [ 256 ]; /**< 有效数据内容 DATA0-DATAN*/
} Protocol_Data_t;
typedef Protocol_uint8_t (*UARTOpen)(void);
typedef Protocol_uint32_t (*UARTSend)(const Protocol_uint8_t *pData, Protocol_uint32_t u32Len);
typedef Protocol_uint32_t (*UARTRead)(Protocol_uint8_t *pData, Protocol_uint32_t u32Len);
typedef void (*ProtocolSetData)(const Protocol_Data_t *pData);
typedef void (*ProcParse)(const Protocol_uint8_t *pData, Protocol_uint32_t u32Len);
typedef void (*UARTClose)(void);
/**@struct Protocol_Func_t
* @brief 协议解析回调函数
*/
typedef struct __attribute__((aligned(4)))
{
UARTOpen UARTOpen_Cbk; /**< 串口打开回调 */
UARTSend UARTSend_Cbk; /**< 串口发送回调 */
UARTRead UARTRead_Cbk; /**< 串口读取回调 */
UARTClose UARTClose_Cbk; /**< 串口关闭回调 */
ProcParse ProcParseCbk; /**< 解析后的数据, 处理了数据包序号,命令字和电源状态,和ProcParse二选一 */
ProtocolSetData ProtocolSetData_Cbk; /**< 不包含 0xEB 0x90 + 长度 + CRC16_1 + CRC16_2,和ProtocolSetData二选一 */
} Protocol_Func_t;
void Protocol_Init(Protocol_uint8_t *pMemSpace, Protocol_uint32_t MemLen, Protocol_Func_t *pFunc);
void Protocol_Service(void);
Protocol_uint32_t Protocol_Parse(const Protocol_uint8_t *pData, Protocol_uint32_t len);
Protocol_uint32_t Protocol_Send(const Protocol_uint16_t cmdID, const Protocol_uint8_t *pData, Protocol_uint8_t len);
#endif
#include "Protocol_User.h"
#include "RTE.h"
#define UART_TX_MAX_DEPTH 1024UL //(2 * 1024UL) // 4K
#define UART_RX_MAX_DEPTH (2 * 1024UL) // 4K
#define UART_DATA_BUF_LEN (2 * 1024UL) // 4K
typedef struct __attribute__((aligned(4)))
{
Protocol_uint32_t read_pos;
Protocol_uint32_t write_pos;
Protocol_uint8_t Rx_Buffer [ UART_RX_MAX_DEPTH ];
} UARTRxBuf_t;
typedef struct __attribute__((aligned(4)))
{
Protocol_uint32_t read_pos;
Protocol_uint32_t write_pos;
Protocol_uint8_t Tx_Buffer [ UART_TX_MAX_DEPTH ];
} UARTTxBuf_t;
static UARTRxBuf_t UARTRxBuf;
static UARTTxBuf_t UARTTxBuf;
static Protocol_uint8_t UsartDataBuf [ 256 ];
static Protocol_uint8_t mDataBufPtr [ UART_DATA_BUF_LEN ];
static Protocol_uint8_t Protocol_OpenUart(void);
static Protocol_uint32_t Protocol_UartRead(Protocol_uint8_t *pData, Protocol_uint32_t u32Len);
static Protocol_uint32_t Protocol_UartSend(const Protocol_uint8_t *pData, Protocol_uint32_t u32Len);
static void Protocol_UartHandle(const Protocol_Data_t *pData);
void Protocol_KL30_Wakeup_Init(void)
{
Protocol_Func_t pFunc;
pFunc.UARTOpen_Cbk = Protocol_OpenUart;
pFunc.UARTSend_Cbk = Protocol_UartSend;
pFunc.UARTRead_Cbk = Protocol_UartRead;
pFunc.UARTClose_Cbk = Protocol_NULL;
pFunc.ProcParseCbk = Protocol_NULL;
pFunc.ProtocolSetData_Cbk = Protocol_UartHandle;
UARTTxBuf.read_pos = 0;
UARTTxBuf.write_pos = 0;
UARTRxBuf.read_pos = 0;
UARTRxBuf.write_pos = 0;
Protocol_Init(mDataBufPtr, UART_DATA_BUF_LEN, &pFunc);
}
void Protocol_Send_Service(void)
{
Protocol_uint32_t i = 0u;
Protocol_uint32_t DataLen = 0u;
Protocol_uint32_t SendLen = 0u;
if ( UARTTxBuf.write_pos == UARTTxBuf.read_pos )
{
return;
}
if ( UARTTxBuf.write_pos > UARTTxBuf.read_pos )
{
DataLen = UARTTxBuf.write_pos - UARTTxBuf.read_pos;
}
else
{
DataLen = UART_TX_MAX_DEPTH - (UARTTxBuf.read_pos - UARTTxBuf.write_pos);
}
if ( DataLen > 255 )
{
SendLen = 255;
}
else
{
SendLen = DataLen;
}
for ( i = 0u; i < SendLen; i++ )
{
UsartDataBuf [ i ] = UARTTxBuf.Tx_Buffer [ UARTTxBuf.read_pos ];
UARTTxBuf.read_pos = (UARTTxBuf.read_pos + 1) % UART_TX_MAX_DEPTH;
}
Uart0_IntSend(UsartDataBuf, SendLen);
}
static Protocol_uint8_t Protocol_OpenUart(void)
{
#if 0
UART_Channel_Config_st_t loc_config;
loc_config.u32UARTChEn = 1;
loc_config.u32UARTbps = 115200;
loc_config.pfnUARTConfirmCallBack = Protocol_NULL;
loc_config.pfnUARTReadMsgCallBack = UART_Put;
UART_Init(UART_RLIN31, &loc_config);
#endif
return 1;
}
static Protocol_uint32_t Protocol_UartRead(Protocol_uint8_t *pData, Protocol_uint32_t len)
{
Protocol_uint32_t i = 0;
Protocol_uint32_t DataLen = 0u;
Protocol_uint32_t ReadLen = 0u;
if ( UARTRxBuf.write_pos == UARTRxBuf.read_pos )
{
return 0; //队列空
}
if ( UARTRxBuf.write_pos > UARTRxBuf.read_pos )
{
DataLen = UARTRxBuf.write_pos - UARTRxBuf.read_pos;
}
else
{
DataLen = UART_RX_MAX_DEPTH - (UARTRxBuf.read_pos - UARTRxBuf.write_pos);
}
if ( len > DataLen )
{
ReadLen = DataLen;
}
else
{
ReadLen = len;
}
for ( i = 0u; i < ReadLen; i++ )
{
pData [ i ] = UARTRxBuf.Rx_Buffer [ UARTRxBuf.read_pos ];
UARTRxBuf.read_pos = (UARTRxBuf.read_pos + 1) % UART_RX_MAX_DEPTH;
}
return ReadLen;
}
static Protocol_uint32_t Protocol_UartSend(const Protocol_uint8_t *pData, Protocol_uint32_t u32Len)
{
Protocol_uint32_t i = 0;
Protocol_uint32_t RemainLen = 0u;
if ( UARTTxBuf.write_pos >= UARTTxBuf.read_pos )
{
RemainLen = UART_TX_MAX_DEPTH - (UARTTxBuf.write_pos - UARTTxBuf.read_pos);
}
else
{
RemainLen = UARTTxBuf.read_pos - UARTTxBuf.write_pos;
}
if ( u32Len > RemainLen )
{
return 1; //队列已满,无法插入队列
}
for ( i = 0; i < u32Len; i++ )
{
UARTTxBuf.Tx_Buffer [ UARTTxBuf.write_pos ] = pData [ i ];
UARTTxBuf.write_pos = (UARTTxBuf.write_pos + 1) % UART_TX_MAX_DEPTH;
}
return 0;
}
static void Protocol_UartHandle(const Protocol_Data_t *pData)
{
if ( pData->CmdID == ESP32_MCU_0x10 )
{
BlueTooth.BlueTooth_St = pData->Data[0];
if (BlueTooth.BlueTooth_St == BLUE_STATE_ON)
{
Protocol_Send(MCU_ESP32_0x20, Protocol_NULL, 0);
}
}
else if ( pData->CmdID == ESP32_MCU_0x12 )
{
BlueTooth.BLE_St = pData->Data[0];
}
else if(pData->CmdID == ESP32_MCU_0x01 )
{
if (pData->Data[0] == 0x33)
{
BlueTooth.Navigation_St = EM_ESP32_NAVI_ST_NAVIGATING;
}
else if (pData->Data[0] == 0x35)
{
BlueTooth.Navigation_St = EM_ESP32_NAVI_ST_STANDBY;
}
else
{
;
}
BlueTooth.Navigation_Code = pData->Data[1];
BlueTooth.Navigation_Mileage = ((pData->Data[5] << 24) | (pData->Data[4] << 16) |
(pData->Data[3] << 8) | pData->Data[2]);
}
else
{
//非本协议数据,不处理
}
}
void UART_Put(Protocol_uint16_t Data)
{
Protocol_uint32_t nextPos = 0u;
nextPos = (UARTRxBuf.write_pos + 1) % UART_RX_MAX_DEPTH;
if ( nextPos == UARTRxBuf.read_pos )
{
//队列已满,无法插入队列
}
else
{
UARTRxBuf.Rx_Buffer [ UARTRxBuf.write_pos ] = Data;
UARTRxBuf.write_pos = (UARTRxBuf.write_pos + 1) % UART_RX_MAX_DEPTH;
}
//return;
}
#ifndef PROTOCOL_USER_H
#define PROTOCOL_USER_H
//#include "Application.h"
#include "Protocol_Lib.h"
#include <stdio.h>
#include <stdint.h>
void Protocol_KL30_Wakeup_Init(void);
void Protocol_Send_Service(void); // 10ms任务调用
void UART_Put(Protocol_uint16_t Data);
#endif
...@@ -16,15 +16,15 @@ void Can_Set_Buff_220(canlib_uint8_t CopyData[]) ...@@ -16,15 +16,15 @@ void Can_Set_Buff_220(canlib_uint8_t CopyData[])
p220->Msg [ i ] = 0xFFu; p220->Msg [ i ] = 0xFFu;
} }
} }
p220 -> Sig.TCS_TX = Get_Dis_Tcs_Val();
} }
void Can_Set_Buff_6EE(canlib_uint8_t CopyData[]) void Can_Set_Buff_6EE(canlib_uint8_t CopyData[])
{ {
CANMsg6EEUnion *p6EE; CANMsg6EEUnion *p6EE;
uint8_t i = 0; uint8_t i = 0;
uint16_t Vspeed_tx = 0;
uint32_t ODO_tx = Data_ODO_Read() / 10;
Vspeed_tx = Get_DispVechileSpeed_TX()/10;
p6EE = (CANMsg6EEUnion *)CopyData; p6EE = (CANMsg6EEUnion *)CopyData;
if ( p6EE != ( void * )0 ) if ( p6EE != ( void * )0 )
...@@ -42,10 +42,7 @@ void Can_Set_Buff_6EF(canlib_uint8_t CopyData[]) ...@@ -42,10 +42,7 @@ void Can_Set_Buff_6EF(canlib_uint8_t CopyData[])
{ {
CANMsg6EFUnion *p6EF; CANMsg6EFUnion *p6EF;
uint8_t i = 0; uint8_t i = 0;
uint16_t Espeed_tx = 0;
uint16_t TripA_tx = 0;
Espeed_tx = Get_ActualEngineSpeed()/100;
TripA_tx = Data_Read_Trip(EM_TRIP_A);
p6EF = (CANMsg6EFUnion *)CopyData; p6EF = (CANMsg6EFUnion *)CopyData;
if ( p6EF != ( void * )0 ) if ( p6EF != ( void * )0 )
{ {
...@@ -54,9 +51,7 @@ void Can_Set_Buff_6EF(canlib_uint8_t CopyData[]) ...@@ -54,9 +51,7 @@ void Can_Set_Buff_6EF(canlib_uint8_t CopyData[])
p6EF->Msg [ i ] = 0xFFu; p6EF->Msg [ i ] = 0xFFu;
} }
} }
p6EF -> Sig.Espeed_TX = Espeed_tx;
p6EF -> Sig.TripA_H = (TripA_tx >> 8) & 0xFF;
p6EF -> Sig.TripA_L = TripA_tx & 0xFF;
} }
void Can_Set_Buff_450(canlib_uint8_t CopyData[]) void Can_Set_Buff_450(canlib_uint8_t CopyData[])
...@@ -72,10 +67,7 @@ void Can_Set_Buff_450(canlib_uint8_t CopyData[]) ...@@ -72,10 +67,7 @@ void Can_Set_Buff_450(canlib_uint8_t CopyData[])
p450->Msg [ i ] = 0xFFu; p450->Msg [ i ] = 0xFFu;
} }
} }
p450 -> Sig.Front_Pressure_TX_H = (Get_Front_TPMS_TX() >> 8) & 0xFF;
p450 -> Sig.Front_Pressure_TX_L = Get_Front_TPMS_TX() & 0xFF;
p450 -> Sig.Rear_Pressure_TX_H = (Get_Rear_TPMS_TX() >> 8) & 0xFF;
p450 -> Sig.Rear_Pressure_TX_L = Get_Rear_TPMS_TX() & 0xFF;
} }
void Can_Set_Buff_580(canlib_uint8_t CopyData[]) void Can_Set_Buff_580(canlib_uint8_t CopyData[])
{ {
...@@ -90,30 +82,7 @@ void Can_Set_Buff_580(canlib_uint8_t CopyData[]) ...@@ -90,30 +82,7 @@ void Can_Set_Buff_580(canlib_uint8_t CopyData[])
p580->Msg [ i ] = 0xFFu; p580->Msg [ i ] = 0xFFu;
} }
} }
if(Get_Tpms_TX_Flag() == 1)
{
p580 -> Sig.TPMS_LEARN_CND_BYTE0 = 0x31;
p580 -> Sig.TPMS_LEARN_CND_BYTE1 = 0x01;
p580 -> Sig.TPMS_LEARN_CND_BYTE2 = 0x59;
p580 -> Sig.TPMS_LEARN_CND_BYTE3 = 0x08;
p580 -> Sig.TPMS_LEARN_CND_BYTE4 = 0x00;
}
else if(Get_Tpms_TX_Flag() == 1)
{
p580 -> Sig.TPMS_LEARN_CND_BYTE0 = 0x31;
p580 -> Sig.TPMS_LEARN_CND_BYTE1 = 0x01;
p580 -> Sig.TPMS_LEARN_CND_BYTE2 = 0x59;
p580 -> Sig.TPMS_LEARN_CND_BYTE3 = 0x08;
p580 -> Sig.TPMS_LEARN_CND_BYTE4 = 0x01;
}
else
{
p580 -> Sig.TPMS_LEARN_CND_BYTE0 = 0x0;
p580 -> Sig.TPMS_LEARN_CND_BYTE1 = 0x0;
p580 -> Sig.TPMS_LEARN_CND_BYTE2 = 0x0;
p580 -> Sig.TPMS_LEARN_CND_BYTE3 = 0x0;
p580 -> Sig.TPMS_LEARN_CND_BYTE4 = 0x02;
}
} }
......
...@@ -109,18 +109,18 @@ void Common_Input_Para(void) ...@@ -109,18 +109,18 @@ void Common_Input_Para(void)
Common_Set_IG_Sts(COMMON_POWER_ON); Common_Set_IG_Sts(COMMON_POWER_ON);
Common_Set_IG_Sts_Valid(COMMON_Valid); Common_Set_IG_Sts_Valid(COMMON_Valid);
Common_Set_Act_V_Speed(Get_ActualVechileSpeed()); //Common_Set_Act_V_Speed(Get_ActualVechileSpeed());
Common_Set_Disp_V_Speed(Get_DispVechileSpeed()); //Common_Set_Disp_V_Speed(Get_DispVechileSpeed());
if (Get_VechileSpeedValid() == COMMON_Valid) // if (Get_VechileSpeedValid() == COMMON_Valid)
{ // {
Common_Set_Act_V_Speed_Valid(COMMON_Valid); // Common_Set_Act_V_Speed_Valid(COMMON_Valid);
Common_Set_Disp_V_Speed_Valid(COMMON_Valid); // Common_Set_Disp_V_Speed_Valid(COMMON_Valid);
} // }
else // else
{ // {
Common_Set_Act_V_Speed_Valid(COMMON_InValid); // Common_Set_Act_V_Speed_Valid(COMMON_InValid);
Common_Set_Disp_V_Speed_Valid(COMMON_InValid); // Common_Set_Disp_V_Speed_Valid(COMMON_InValid);
} // }
PowerIgnOffTimeLine = 0ul; PowerIgnOffTimeLine = 0ul;
......
#include "Data_ESpeed\Data_ESpeed.h"
#include "Application.h"
/*** 发动机转速 ***/
uint16_t DataESpeedActual;
uint16_t DataESpeedDisp;
uint8_t DataESpeedValid;
DataESpeedSamplerStruct DataESpeedSampler;
DataESPeedDampingStruct DataESPeedDamping;
DataESpeedIdleStruct DataESpeedIdle;
#define DATA_APPR_DIR_INC 0x01
#define DATA_APPR_DIR_DEC 0x02
/******************************************************************************
函数名:Data_Engine_Speed_KL30_Wakeup_Init
功 能:发动机转速初始化函数
参 数:无
返回值:无
******************************************************************************
注 意:该函数KL30初始化/Wakeup初始化被调用一次
******************************************************************************/
void Data_Engine_Speed_KL30_Wakeup_Init (void)
{
DataESpeedIdle.Timer = 0;
DataESpeedActual = 0;
DataESpeedDisp = 0;
DataESpeedValid = 0;
DataESpeedSampler.Cnt = 0;
DataESPeedDamping.Speed = 0;
DataESPeedDamping.Delta = 0;
DataESPeedDamping.Dir = DATA_APPR_DIR_INC;
}
/******************************************************************************
函数名:Data_Engine_Speed_Processing_Service
功 能:发动机转速数据处理函数
参 数:无
返回值:无
******************************************************************************
注 意:该函数必须每10ms被调用一次
******************************************************************************/
void Data_Engine_Speed_Processing_Service ( void )
{
uint8_t i;
uint16_t ESpeed;
uint16_t Delta;
uint16_t Engine_Speed_Value;
uint8_t Engine_Speed_State;
Engine_Speed_Value = Get_CAN_CH0_ID_101_Sig_ECU_Engine_Speed();
Engine_Speed_State = Get_CAN_CH0_ID_101_Sig_ECU_Engine_Speed_State();
//第1步:获取实际转速值及转速有效性
if ( Common_Get_IG_Sts() == COMMON_POWER_ON )
{
if((CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x101_Msg_Count) == CAN_SIG_LOST)||(Engine_Speed_State == 1))
{
DataESpeedValid = 0;
DataESpeedActual = 0;
DataESpeedSampler.Cnt = 0;
}
else
{
if ( DataESpeedValid == 0 )
{
DataESpeedValid = 1;
ESpeed = Engine_Speed_Value;
ESpeed /= 4;
if ( ESpeed > 12000 )
ESpeed = 12000;
DataESpeedActual = ESpeed;
}
else
{
DataESpeedSampler.Buffer[DataESpeedSampler.Cnt] = Engine_Speed_Value;
i = DataESpeedSampler.Cnt;
while ( ( i > 0 ) && ( DataESpeedSampler.Buffer[i] < DataESpeedSampler.Buffer[i - 1] ) )
{
ESpeed = DataESpeedSampler.Buffer[i];
DataESpeedSampler.Buffer[i] = DataESpeedSampler.Buffer[i - 1];
DataESpeedSampler.Buffer[i - 1] = ESpeed;
i--;
}
DataESpeedSampler.Cnt++;
if ( DataESpeedSampler.Cnt >= 5 )
{
DataESpeedSampler.Cnt = 0;
ESpeed = DataESpeedSampler.Buffer[3];
ESpeed /= 4;
if ( ESpeed > 12000 )
ESpeed = 12000;
DataESpeedActual = ESpeed;
}
}
}
}
else
{
DataESpeedValid = 0;
DataESpeedActual = 0;
DataESpeedSampler.Cnt = 0;
}
//第2步:怠速模式
ESpeed = DataESpeedActual;
#if 0
if ( ( ESpeed >= 500 ) && ( ESpeed <= 1000 ) )
{
DataESpeedIdle.Timer++;
if ( ESpeed > DataESpeedIdle.ESpeedBackup )
Delta = ESpeed - DataESpeedIdle.ESpeedBackup;
else
Delta = DataESpeedIdle.ESpeedBackup - ESpeed;
if ( DataESpeedIdle.Mode == 0 )
{
if ( Delta < 150 )
{
if ( DataESpeedIdle.Timer >= 200 )
{
DataESpeedIdle.Mode = 1;
DataESpeedIdle.Timer = 0;
}
}
else
DataESpeedIdle.Timer = 0;
DataESpeedIdle.ESpeedBackup = ESpeed;
}
else
{
if ( Delta < 150 )
{
if ( DataESpeedIdle.Timer >= 200 ) //怠速模式下每10秒转速数据更新一次
{
DataESpeedIdle.Timer = 0;
DataESpeedIdle.ESpeedBackup = ESpeed;
}
else
ESpeed = DataESpeedIdle.ESpeedBackup;
}
else //转速变化大于等于300立即退出怠速模式
{
DataESpeedIdle.Mode = 0;
DataESpeedIdle.Timer = 0;
DataESpeedIdle.ESpeedBackup = ESpeed;
}
}
}
else
{
DataESpeedIdle.Mode = 0;
DataESpeedIdle.Timer = 0;
DataESpeedIdle.ESpeedBackup = ESpeed;
}
#endif
//第3步:转速的阻尼处理
if ( ESpeed > DataESPeedDamping.Speed ) //实际值比当前显示值大时
{
Delta = ESpeed - DataESPeedDamping.Speed;
if ( DataESPeedDamping.Dir == DATA_APPR_DIR_INC ) //显示值正在向实际值增加,则维持当前方向调节增加速度
{
if ( DataESPeedDamping.Delta < Delta ) //当前增量小于显示值与实际值的差值,则提升增加的速度
{
DataESPeedDamping.Delta += DATA_ESPEED_INC_STEP;
if ( DataESPeedDamping.Delta > Delta )
DataESPeedDamping.Delta = Delta;
}
else //当前增量大于等于显示值与实际值的差值,保持增量与当前差值同步,增加的速度即逐步减小
DataESPeedDamping.Delta = Delta;
Delta = DataESPeedDamping.Delta;
Delta /= DATA_ESPEED_DAMPING_FACTOR;
if ( Delta < DATA_ESPEED_APPR_SPEED_MIN )
Delta = DATA_ESPEED_APPR_SPEED_MIN;
DataESPeedDamping.Speed += Delta;
if ( DataESPeedDamping.Speed > ESpeed )
DataESPeedDamping.Speed = ESpeed;
}
else //显示值正在减小,则尽快减速至速度为最小时更换方向
{
if ( DataESPeedDamping.Delta > DATA_ESPEED_DEC_STEP )
DataESPeedDamping.Delta -= DATA_ESPEED_DEC_STEP;
else
DataESPeedDamping.Delta = 0;
Delta = DataESPeedDamping.Delta;
Delta /= DATA_ESPEED_DAMPING_FACTOR;
if ( Delta < DATA_ESPEED_APPR_SPEED_MIN ) //已减速至最小速度
DataESPeedDamping.Dir = DATA_APPR_DIR_INC; //更换方向
else
{
if ( DataESPeedDamping.Speed > Delta )
DataESPeedDamping.Speed -= Delta;
else
DataESPeedDamping.Speed = 0;
}
}
}
else if ( ESpeed < DataESPeedDamping.Speed ) //实际值比当前显示值小时
{
Delta = DataESPeedDamping.Speed - ESpeed;
if ( DataESPeedDamping.Dir == DATA_APPR_DIR_INC ) //显示值仍在增加,则尽快减速至速度为最小时更换方向
{
if ( DataESPeedDamping.Delta > DATA_ESPEED_DEC_STEP )
DataESPeedDamping.Delta -= DATA_ESPEED_DEC_STEP;
else
DataESPeedDamping.Delta = 0;
Delta = DataESPeedDamping.Delta;
Delta /= DATA_ESPEED_DAMPING_FACTOR;
if ( Delta < DATA_ESPEED_APPR_SPEED_MIN ) //已减速至最小速度
DataESPeedDamping.Dir = DATA_APPR_DIR_DEC; //更换方向
else
{
DataESPeedDamping.Speed += Delta;
if ( DataESPeedDamping.Speed > 12000 )
DataESPeedDamping.Speed = 12000;
}
}
else //显示值正在向实际值减小,则维持当前方向调节增加速度
{
if ( DataESPeedDamping.Delta < Delta ) //当前(负)增量小于显示值与实际值的差值,则提升减小的速度
{
DataESPeedDamping.Delta += DATA_ESPEED_INC_STEP;
if ( DataESPeedDamping.Delta > Delta )
DataESPeedDamping.Delta = Delta;
}
else //当前(负)增量大于等于显示值与实际值的差值,保持(负)增量与当前差值同步,减小的速度即逐步减小
DataESPeedDamping.Delta = Delta;
Delta = DataESPeedDamping.Delta;
Delta /= DATA_ESPEED_DAMPING_FACTOR;
if ( Delta < DATA_ESPEED_APPR_SPEED_MIN )
Delta = DATA_ESPEED_APPR_SPEED_MIN;
if ( DataESPeedDamping.Speed < ESpeed + Delta )
DataESPeedDamping.Speed = ESpeed;
else
DataESPeedDamping.Speed -= Delta;
}
}
else //实际值与当前显示值相等时
{
Delta = DataESPeedDamping.Delta;
Delta /= DATA_ESPEED_DAMPING_FACTOR;
if ( Delta > DATA_ESPEED_APPR_SPEED_MIN ) //当前的速度不是最小,说明数值正在增加/减小中,则继续原过程
{
if ( DataESPeedDamping.Delta > DATA_ESPEED_DEC_STEP ) //显示值越过了实际值,必然要先减速至最小速度,再改变方向返回实际值
DataESPeedDamping.Delta -= DATA_ESPEED_DEC_STEP;
else
DataESPeedDamping.Delta = 0;
Delta = DataESPeedDamping.Delta;
Delta /= DATA_ESPEED_DAMPING_FACTOR;
if ( DataESPeedDamping.Dir == DATA_APPR_DIR_INC ) //显示值当前是增加方向
{
if ( Delta < DATA_ESPEED_APPR_SPEED_MIN ) //已减速至最小速度
DataESPeedDamping.Dir = DATA_APPR_DIR_DEC; //更换方向
else
{
DataESPeedDamping.Speed += Delta;
if ( DataESPeedDamping.Speed > 12000 )
DataESPeedDamping.Speed = 12000;
}
}
else //显示值当前是减小方向
{
if ( Delta < DATA_ESPEED_APPR_SPEED_MIN ) //已减速至最小速度
DataESPeedDamping.Dir = DATA_APPR_DIR_INC; //更换方向
else
{
if ( DataESPeedDamping.Speed > Delta )
DataESPeedDamping.Speed -= Delta;
else
DataESPeedDamping.Speed = 0;
}
}
}
}
//第4步 增加回差
if (DataESpeedDisp <= 80)
{
DataESpeedDisp = DataESPeedDamping.Speed;
}
else
{
if ( DataESpeedDisp < DataESPeedDamping.Speed )
{
DataESpeedDisp = DataESPeedDamping.Speed;
}
else
{
Delta = DataESpeedDisp - DataESPeedDamping.Speed;
if ( Delta >= DATA_ESPEED_HYSTERESIS )
{
DataESpeedDisp = DataESPeedDamping.Speed;
}
}
}
}
uint8_t Get_EngineValid(void)
{
return DataESpeedValid;
}
uint16_t Get_ActualEngineSpeed(void)
{
return DataESpeedActual;
}
uint16_t Get_DispEngineSpeed(void)
{
return DataESpeedDisp;
}
#ifndef _Data_Espeed_H_
#define _Data_Espeed_H_
#include "common.h"
/******************************************************************************
发动机转速
******************************************************************************/
/*** 参数设置 ***/
#define DATA_ENGINE_RUNNING_THRESHOLD 400 //发动机运转阈值
#define DATA_ENGINE_STOP_THRESHOLD 300 //发动机停止阈值
#define DATA_ESPEED_DAMPING_FACTOR 4 //阻尼系数
#define DATA_ESPEED_INC_STEP 10 //速度增加时慢加速速度变化步长
#define DATA_ESPEED_DEC_STEP 20 //方向改变时急减速速度变化步长
#define DATA_ESPEED_APPR_SPEED_MIN 10 //最小逼近速度
#define DATA_ESPEED_HYSTERESIS 80 //回差
/*** 控制结构 ***/
typedef struct __attribute__((aligned(4)))
{
uint16_t Buffer[5];
uint8_t Cnt;
} DataESpeedSamplerStruct; //转速采样结构
typedef struct __attribute__((aligned(4)))
{
uint16_t Speed;
uint16_t Delta;
uint8_t Dir;
} DataESPeedDampingStruct; //转速阻尼结构
typedef struct __attribute__((aligned(4)))
{
uint16_t ESpeedBackup;
uint16_t Timer;
uint8_t Mode;
} DataESpeedIdleStruct; //怠速处理结构
/******************************************************************************
函数名:Data_Engine_Speed_KL30_Wakeup_Init
功 能:发动机转速初始化函数
参 数:无
返回值:无
******************************************************************************
注 意:该函数KL30初始化/Wakeup初始化被调用一次
******************************************************************************/
void Data_Engine_Speed_KL30_Wakeup_Init (void);
/******************************************************************************
函数名:Data_Engine_Speed_Processing_Service
功 能:发动机转速数据处理函数
参 数:无
返回值:无
******************************************************************************
注 意:该函数必须每10ms被调用一次
******************************************************************************/
void Data_Engine_Speed_Processing_Service ( void );
uint8_t Get_EngineValid(void);
uint16_t Get_ActualEngineSpeed(void);
uint16_t Get_DispEngineSpeed(void);
#endif
#include "Application.h"
#include "Data_TPMS\Data_TPMS.h"
_TPMS_Display TPMS;
void Data_TPMS_KL30_Init ( void )
{
uint32_t TPMS_L[2] = {0,0};
Data_User_EEPROM_Read(EM_MenuData_TPMS_LEARN, TPMS_L, 2u);
MenuData.TPMS_Front_Learn = TPMS_L[0];
MenuData.TPMS_Rear_Learn = TPMS_L[1];
TPMS.Front_Press_Value = 0;
TPMS.Rear_Press_Value = 0;
TPMS.Front_TPMS_Valid = 0;
TPMS.Rear_TPMS_Valid = 0;
TPMS.TPMS_Warning = 0;
TPMS.TPMS_Unit = Get_Dis_Tpms_Unit();
TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn;
TPMS.TPMS_Rear_Learn = MenuData.TPMS_Rear_Learn;
}
void Data_TPMS_KL15_WAKE_UP_Init ( void )
{
uint32_t TPMS_L[2] = {0,0};
Data_User_EEPROM_Read(EM_MenuData_TPMS_LEARN, TPMS_L, 2u);
MenuData.TPMS_Front_Learn = TPMS_L[0];
MenuData.TPMS_Rear_Learn = TPMS_L[1];
TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn;
TPMS.TPMS_Rear_Learn = MenuData.TPMS_Rear_Learn;
}
void Data_TPMS_Processing_Service ( void )
{
uint16_t Front_TPMS = 0;
uint16_t Rear_TPMS = 0;
uint32_t TPMS_L[2] = {0,0};
TPMS.TPMS_Front_Learn = Get_CAN_CH0_ID_341_Sig_Front_LearningStatus();
TPMS.TPMS_Rear_Learn = Get_CAN_CH0_ID_341_Sig_Rear_LearningStatus();
if((TPMS.TPMS_Front_Learn != MenuData.TPMS_Front_Learn) || (TPMS.TPMS_Rear_Learn != MenuData.TPMS_Rear_Learn))
{
TPMS_L[0] = TPMS.TPMS_Front_Learn;
TPMS_L[1] = TPMS.TPMS_Rear_Learn;
Data_User_EEPROM_Write(EM_MenuData_TPMS_LEARN, TPMS_L, 2u);
MenuData.TPMS_Front_Learn = TPMS.TPMS_Front_Learn;
MenuData.TPMS_Rear_Learn = TPMS.TPMS_Rear_Learn;
}
TPMS.TPMS_Unit = Get_Dis_Tpms_Unit();
Front_TPMS = Get_CAN_CH0_ID_341_Sig_Front_Pressure();
Rear_TPMS = Get_CAN_CH0_ID_341_Sig_Rear_Pressure();
if ( Common_Get_IG_Sts() == COMMON_POWER_ON )
{
if(CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x341_Msg_Count) == CAN_SIG_LOST)
{
TPMS.Front_TPMS_Valid = 0; //信号掉线,显示--
TPMS.Rear_TPMS_Valid = 0; //信号掉线,显示--
TPMS.Front_Press_Value = 0;
TPMS.Rear_Press_Value = 0;
TPMS.TPMS_Warning = 0; //白灯
}
else
{
if((Front_TPMS == 0xFF) || (Rear_TPMS == 0xFF))
{
if((Front_TPMS == 0xFF) && (Rear_TPMS != 0xFF))
{
TPMS.Front_TPMS_Valid = 0;
TPMS.Rear_TPMS_Valid = 2;
TPMS.Front_Press_Value = 990;
TPMS.Rear_Press_Value = Rear_TPMS * 275;
TPMS.Rear_Press_Value /= 102 ;
if(TPMS.Rear_Press_Value > 990)
{
TPMS.Rear_Press_Value = 990;
}
if((TPMS.Rear_Press_Value < 170) || (TPMS.Rear_Press_Value > 250))
{
TPMS.TPMS_Warning = 1;
}
else
{
TPMS.TPMS_Warning = 0;
}
}
else if ((Front_TPMS != 0xFF) && (Rear_TPMS == 0xFF))
{
TPMS.Front_TPMS_Valid = 2;
TPMS.Rear_TPMS_Valid = 0;
TPMS.Rear_Press_Value = 990;
TPMS.Front_Press_Value = Front_TPMS *275 ;
TPMS.Front_Press_Value /= 102 ;
if(TPMS.Front_Press_Value > 990)
{
TPMS.Front_Press_Value = 990;
}
if((TPMS.Front_Press_Value < 170) || (TPMS.Front_Press_Value > 230))
{
TPMS.TPMS_Warning = 1;
}
else
{
TPMS.TPMS_Warning = 0;
}
}
else
{
TPMS.Front_Press_Value = 990;
TPMS.Rear_Press_Value = 990;
TPMS.TPMS_Warning = 0;
TPMS.Front_TPMS_Valid = 0;
TPMS.Rear_TPMS_Valid = 0;
}
}
else
{
TPMS.Front_TPMS_Valid = 2;
TPMS.Rear_TPMS_Valid = 2;
TPMS.Front_Press_Value = Front_TPMS * 275 ;
TPMS.Front_Press_Value /= 102 ;
if(TPMS.Front_Press_Value > 990)
{
TPMS.Front_Press_Value = 990;
}
TPMS.Rear_Press_Value = Rear_TPMS * 275;
TPMS.Rear_Press_Value /= 102 ;
if(TPMS.Rear_Press_Value > 990)
{
TPMS.Rear_Press_Value = 990;
}
if ((TPMS.Front_Press_Value < 170) || (TPMS.Front_Press_Value > 230) || (TPMS.Rear_Press_Value < 170) || (TPMS.Rear_Press_Value > 250))
{
TPMS.TPMS_Warning = 1;
}
else
{
TPMS.TPMS_Warning = 0;
}
}
}
if(MenuData.TPMS_Front_Learn == Unstudied)
{
TPMS.Front_TPMS_Valid = Unstudied;
}
else if(MenuData.TPMS_Front_Learn == Learning)
{
TPMS.Front_TPMS_Valid = Learning;
}
else if(MenuData.TPMS_Front_Learn == LearningCompletion)
{
TPMS.Front_TPMS_Valid = LearningCompletion;
TPMS.Rear_Press_Value = 990;
}
else if(MenuData.TPMS_Front_Learn == LearningFailure)
{
TPMS.Front_TPMS_Valid = LearningFailure;
}
else
{
;
}
if(MenuData.TPMS_Rear_Learn == Unstudied)
{
TPMS.Rear_TPMS_Valid = Unstudied;
}
else if(MenuData.TPMS_Rear_Learn == Learning)
{
TPMS.Rear_TPMS_Valid = Learning;
}
else if(MenuData.TPMS_Rear_Learn == LearningCompletion)
{
TPMS.Rear_TPMS_Valid = LearningCompletion;
TPMS.Front_Press_Value = 990;
}
else if(MenuData.TPMS_Rear_Learn == LearningFailure)
{
TPMS.Rear_TPMS_Valid = LearningFailure;
}
else
{
;
}
if ((MenuData.TPMS_Rear_Learn != LearningCompletion) && (MenuData.TPMS_Front_Learn != LearningCompletion))
{
TPMS.TPMS_Warning = 0;
}
}
else
{
TPMS.Front_TPMS_Valid = 0;
TPMS.Rear_TPMS_Valid = 0;
TPMS.Front_Press_Value = 0;
TPMS.Rear_Press_Value = 0;
TPMS.TPMS_Warning = 0;
}
}
uint32_t Data_Bar_To_Psi (uint32_t bar)
{
uint32_t Bar = 0;
Bar = bar * 145;
Bar /= 10;
Bar += 5;
// bar *= 145;
// bar /= 10;
// bar += 5;
return Bar;
}
/*指示灯报警信号 0:白色常亮 1:黄色常亮*/
uint8_t Get_Led_TPMS_Waring (void)
{
return TPMS.TPMS_Warning;
}
/*0:未学习,无效,常显-- 1:学习中,无效,闪烁-- 2:学习完成,有效,按实际胎压数值显示 3:学习失败,无效,最大值闪烁显示*/
uint8_t Get_Front_TPMS_Sig_Vaild (void)
{
return TPMS.Front_TPMS_Valid;
}
uint8_t Get_Rear_TPMS_Sig_Vaild (void)
{
return TPMS.Rear_TPMS_Valid;
}
//10倍
uint16_t Get_Front_TPMS_Sig_Value (void)
{
uint16_t value = 0;
if (TPMS.TPMS_Unit == 1)
{
value = (Data_Bar_To_Psi(TPMS.Front_Press_Value) + 50) / 100;
if(value > 99)
{
value = 99;
}
}
else
{
value = TPMS.Front_Press_Value + 5;
value = value / 10;
}
return value;
}
uint16_t Get_Rear_TPMS_Sig_Value (void)
{
uint16_t value = 0;
if (TPMS.TPMS_Unit == 1)
{
value = (Data_Bar_To_Psi(TPMS.Rear_Press_Value) + 50) / 100;
if(value > 99)
{
value = 99;
}
}
else
{
value = TPMS.Rear_Press_Value + 5;
value = value / 10;
}
return value;
}
uint16_t Get_Rear_TPMS_TX (void)
{
uint16_t value = 0;
value = Data_Bar_To_Psi(TPMS.Rear_Press_Value) / 10;
if(value > 990)
{
value = 990;
}
return value;
}
uint16_t Get_Front_TPMS_TX (void)
{
uint16_t value = 0;
value = Data_Bar_To_Psi(TPMS.Front_Press_Value) / 10;
if(value > 990)
{
value = 990;
}
return value;
}
#ifndef _DATA_TPMS_H_
#define _DATA_TPMS_H_
#include "common.h"
typedef struct __attribute__((aligned(4)))
{
uint32_t Front_Press_Value;
uint32_t Rear_Press_Value;
uint8_t Front_TPMS_Valid;
uint8_t Rear_TPMS_Valid;
uint8_t TPMS_Warning;
uint8_t TPMS_Unit;
uint32_t TPMS_Front_Learn;
uint32_t TPMS_Rear_Learn;
}_TPMS_Display;
typedef enum
{
Unstudied = 0,
Learning,
LearningCompletion,
LearningFailure,
} TPMSLearning;
void Data_TPMS_KL30_Init ( void );
void Data_TPMS_Processing_Service ( void );
uint32_t Data_Bar_To_Psi (uint32_t bar);
uint8_t Get_Led_TPMS_Waring (void);
uint8_t Get_Front_TPMS_Sig_Vaild (void);
uint8_t Get_Rear_TPMS_Sig_Vaild (void);
uint16_t Get_Front_TPMS_Sig_Value (void);
uint16_t Get_Rear_TPMS_Sig_Value (void);
uint16_t Get_Rear_TPMS_TX (void);
uint16_t Get_Front_TPMS_TX (void);
void Data_TPMS_KL15_WAKE_UP_Init ( void );
#endif
#include "Data_VSpeed\Data_VSpeed.h"
#include "Application.h"
static uint16_t DataVSpeedActual;
static uint16_t DataVSpeedDisp;
static uint16_t DataVSpeedHysteresis;
static uint8_t DataVSpeedValid;
// static uint16_t DataVSpeedDisp_Mile;
static DataVSpeedSamplerStruct DataVSpeedSampler;
static DataVSPeedDampingStruct DataVSPeedDamping;
#define DATA_APPR_DIR_INC 0x01
#define DATA_APPR_DIR_DEC 0x02
/******************************************************************************
函数名:Data_Vehicle_Speed_KL30_Init
功 能:车速数据KL30初始化
参 数:无
返回值:无
******************************************************************************
注 意:该函数KL30初始化被调用一次
******************************************************************************/
void Data_Vehicle_Speed_KL30_Init(void)
{
DataVSpeedActual = 0;
DataVSpeedDisp = 0;
DataVSpeedHysteresis = 0;
DataVSpeedValid = 1;
DataVSpeedSampler.Cnt = 0;
DataVSPeedDamping.Speed = 0;
DataVSPeedDamping.Delta = 0;
DataVSPeedDamping.Dir = DATA_APPR_DIR_INC;
DataVSpeedSampler.Timer1 = 0;
DataVSpeedSampler.Timer = 0;
}
/******************************************************************************
函数名:Data_Vehicle_Speed_Wakeup_Init
功 能:车速数据唤醒初始化
参 数:无
返回值:无
******************************************************************************
注 意:该函数唤醒初始化被调用一次
******************************************************************************/
void Data_Vehicle_Speed_Wakeup_Init(void)
{
DataVSpeedDisp = 0;
DataVSpeedHysteresis = 0;
DataVSPeedDamping.Speed = 0;
DataVSPeedDamping.Delta = 0;
DataVSPeedDamping.Dir = DATA_APPR_DIR_INC;
DataVSpeedSampler.Timer1 = 0;
DataVSpeedSampler.Timer = 0;
}
/******************************************************************************
函数名:Data_Vehicle_Speed_Processing_Service
功 能:车速数据处理函数
参 数:无
返回值:无
******************************************************************************
注 意:该函数必须每20ms被调用一次
******************************************************************************/
void Data_Vehicle_Speed_Processing_Service(void)
{
uint8_t i;
uint16_t Delta;
uint32_t VSpeed;
uint32_t VSpeedCal;
uint8_t ESC_VehicleSpeedState;
uint32_t Vehicle_Speed;
Vehicle_Speed = Get_CAN_CH0_ID_101_Sig_ECU_Vehicle_Speed( );
ESC_VehicleSpeedState = Get_CAN_CH0_ID_101_Sig_ECU_Vehicle_Speed_State( );
// 第1步:获取实际车速值及车速有效性
if( Common_Get_IG_Sts( ) == COMMON_POWER_ON )
{
if (CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x101_Msg_Count) == CAN_SIG_LOST)
{
DataVSpeedValid = 0;
DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0;
}
else
{
if (ESC_VehicleSpeedState == 1)
{
DataVSpeedValid = 0;
DataVSpeedActual = 0;
DataVSpeedSampler.Backup = 0;
}
else
{
if ( DataVSpeedValid == 0 )
{
DataVSpeedValid = 1;
VSpeed = Vehicle_Speed;
DataVSpeedActual = VSpeed * 10;
}
else
{
DataVSpeedSampler.Buffer [ DataVSpeedSampler.Cnt ] = Vehicle_Speed;
i = DataVSpeedSampler.Cnt;
while ( (i > 0) && (DataVSpeedSampler.Buffer [ i ] < DataVSpeedSampler.Buffer [ i - 1 ]) )
{
VSpeed = DataVSpeedSampler.Buffer [ i ];
DataVSpeedSampler.Buffer [ i ] = DataVSpeedSampler.Buffer [ i - 1 ];
DataVSpeedSampler.Buffer [ i - 1 ] = VSpeed;
i--;
}
DataVSpeedSampler.Cnt++;
if ( DataVSpeedSampler.Cnt >= 3 )
{
DataVSpeedSampler.Cnt = 0;
VSpeed = DataVSpeedSampler.Buffer [ 1 ];
DataVSpeedActual = VSpeed * 10;
}
DataVSpeedSampler.Timer = 0;
DataVSpeedSampler.Timer1 = 0;
DataVSpeedSampler.Backup = DataVSpeedActual;
DataVSpeedValid = 1;
}
}
}
}
else
{
DataVSpeedValid = 0;
DataVSpeedActual = 0;
DataVSpeedSampler.Timer = 0;
DataVSpeedSampler.Timer1 = 0;
DataVSpeedSampler.Cnt = 0;
DataVSpeedSampler.Backup = 0;
}
// 第2步:车速的阻尼处理
VSpeed = DataVSpeedActual;
if ( VSpeed > DataVSPeedDamping.Speed ) // 实际值比当前显示值大时
{
Delta = ( uint16_t )VSpeed - DataVSPeedDamping.Speed;
if ( DataVSPeedDamping.Dir == DATA_APPR_DIR_INC ) // 显示值正在向实际值增加,则维持当前方向调节增加速度
{
if ( DataVSPeedDamping.Delta < Delta ) // 当前增量小于显示值与实际值的差值,则提升增加的速度
{
DataVSPeedDamping.Delta += DATA_VSPEED_INC_STEP;
if ( DataVSPeedDamping.Delta > Delta )
DataVSPeedDamping.Delta = Delta;
}
else // 当前增量大于等于显示值与实际值的差值,保持增量与当前差值同步,增加的速度即逐步减小
DataVSPeedDamping.Delta = Delta;
Delta = DataVSPeedDamping.Delta;
Delta /= DATA_VSPEED_DAMPING_FACTOR;
if ( Delta < DATA_VSPEED_APPR_SPEED_MIN )
Delta = DATA_VSPEED_APPR_SPEED_MIN;
DataVSPeedDamping.Speed += Delta;
if ( DataVSPeedDamping.Speed > VSpeed )
DataVSPeedDamping.Speed = ( uint16_t )VSpeed;
}
else // 显示值正在减小,则尽快减速至速度为最小时更换方向
{
if ( DataVSPeedDamping.Delta > DATA_VSPEED_DEC_STEP )
DataVSPeedDamping.Delta -= DATA_VSPEED_DEC_STEP;
else
DataVSPeedDamping.Delta = 0;
Delta = DataVSPeedDamping.Delta;
Delta /= DATA_VSPEED_DAMPING_FACTOR;
if ( Delta < DATA_VSPEED_APPR_SPEED_MIN ) // 已减速至最小速度
DataVSPeedDamping.Dir = DATA_APPR_DIR_INC; // 更换方向
else
{
if ( DataVSPeedDamping.Speed > Delta )
DataVSPeedDamping.Speed -= Delta;
else
DataVSPeedDamping.Speed = 0;
}
}
}
else if ( VSpeed < DataVSPeedDamping.Speed ) // 实际值比当前显示值小时
{
Delta = DataVSPeedDamping.Speed - ( uint16_t )VSpeed;
if ( DataVSPeedDamping.Dir == DATA_APPR_DIR_INC ) // 显示值仍在增加,则尽快减速至速度为最小时更换方向
{
if ( DataVSPeedDamping.Delta > DATA_VSPEED_DEC_STEP )
DataVSPeedDamping.Delta -= DATA_VSPEED_DEC_STEP;
else
DataVSPeedDamping.Delta = 0;
Delta = DataVSPeedDamping.Delta;
Delta /= DATA_VSPEED_DAMPING_FACTOR;
if ( Delta < DATA_VSPEED_APPR_SPEED_MIN ) // 已减速至最小速度
DataVSPeedDamping.Dir = DATA_APPR_DIR_DEC; // 更换方向
else
{
DataVSPeedDamping.Speed += Delta;
if ( DataVSPeedDamping.Speed > 1990 )
DataVSPeedDamping.Speed = 1990;
}
}
else // 显示值正在向实际值减小,则维持当前方向调节增加速度
{
if ( DataVSPeedDamping.Delta < Delta ) // 当前(负)增量小于显示值与实际值的差值,则提升减小的速度
{
DataVSPeedDamping.Delta += DATA_VSPEED_INC_STEP;
if ( DataVSPeedDamping.Delta > Delta )
DataVSPeedDamping.Delta = Delta;
}
else // 当前(负)增量大于等于显示值与实际值的差值,保持(负)增量与当前差值同步,减小的速度即逐步减小
DataVSPeedDamping.Delta = Delta;
Delta = DataVSPeedDamping.Delta;
Delta /= DATA_VSPEED_DAMPING_FACTOR;
if ( Delta < DATA_VSPEED_APPR_SPEED_MIN )
Delta = DATA_VSPEED_APPR_SPEED_MIN;
if ( DataVSPeedDamping.Speed < VSpeed + Delta )
DataVSPeedDamping.Speed = ( uint16_t )VSpeed;
else
DataVSPeedDamping.Speed -= Delta;
}
}
else // 实际值与当前显示值相等时
{
Delta = DataVSPeedDamping.Delta;
Delta /= DATA_VSPEED_DAMPING_FACTOR;
if ( Delta > DATA_VSPEED_APPR_SPEED_MIN ) // 当前的速度不是最小,说明数值正在增加/减小中,则继续原过程
{
if ( DataVSPeedDamping.Delta > DATA_VSPEED_DEC_STEP ) // 显示值越过了实际值,必然要先减速至最小速度,再改变方向返回实际值
DataVSPeedDamping.Delta -= DATA_VSPEED_DEC_STEP;
else
DataVSPeedDamping.Delta = 0;
Delta = DataVSPeedDamping.Delta;
Delta /= DATA_VSPEED_DAMPING_FACTOR;
if ( DataVSPeedDamping.Dir == DATA_APPR_DIR_INC ) // 显示值当前是增加方向
{
if ( Delta < DATA_VSPEED_APPR_SPEED_MIN ) // 已减速至最小速度
DataVSPeedDamping.Dir = DATA_APPR_DIR_DEC; // 更换方向
else
{
DataVSPeedDamping.Speed += Delta;
if ( DataVSPeedDamping.Speed > 1990 )
DataVSPeedDamping.Speed = 1990;
}
}
else // 显示值当前是减小方向
{
if ( Delta < DATA_VSPEED_APPR_SPEED_MIN ) // 已减速至最小速度
DataVSPeedDamping.Dir = DATA_APPR_DIR_INC; // 更换方向
else
{
if ( DataVSPeedDamping.Speed > Delta )
DataVSPeedDamping.Speed -= Delta;
else
DataVSPeedDamping.Speed = 0;
}
}
}
}
// 第3步:生成显示车速
if ( (DataVSPeedDamping.Speed >= DataVSpeedHysteresis) || (DataVSPeedDamping.Speed < DATA_VSPEED_HYSTERESIS) )
{
DataVSpeedHysteresis = DataVSPeedDamping.Speed;
}
else
{
if ( DataVSpeedHysteresis - DataVSPeedDamping.Speed >= DATA_VSPEED_HYSTERESIS )
{
DataVSpeedHysteresis = DataVSPeedDamping.Speed;
}
}
VSpeedCal = ( uint32_t )DataVSpeedHysteresis;
if ( DataVSpeedValid )
{
VSpeedCal *= 108;
VSpeedCal /= 100;
if(VSpeedCal > 1990)
{
VSpeedCal = 1990;
}
DataVSpeedDisp = ( uint16_t )VSpeedCal;
}
else
{
DataVSpeedDisp = 0;
}
}
/*车速有效位:有效=1,无效=0*/
uint8_t Get_VechileSpeedValid(void)
{
return DataVSpeedValid;
}
/*真实的车速,精度10倍,*/
uint16_t Get_ActualVechileSpeed(void)
{
return DataVSpeedActual;
}
/*显示车速,精度10倍,取整,舍去小数点*/
uint16_t Get_DispVechileSpeed(void)
{
uint16_t Vspeed = 0;
if(Get_Dis_KM_Unit() == 0) /* KM */
{
if ( DataVSpeedDisp >= 1990 )
{
DataVSpeedDisp = 1990;
}
Vspeed = DataVSpeedDisp;
}
else /* MILE */
{
Vspeed = Data_Km_To_Mile(DataVSpeedDisp);
if ( Vspeed >= 1230 )
{
Vspeed = 1230;
}
}
return Vspeed;
}
/*外发显示车速,精度10倍,取整,舍去小数点*/
uint16_t Get_DispVechileSpeed_TX(void)
{
uint16_t Vspeed = 0;
if ( DataVSpeedDisp >= 1990 )
{
DataVSpeedDisp = 1990;
}
Vspeed = DataVSpeedDisp;
return Vspeed;
}
#ifndef _Data_Vspeed_H_
#define _Data_Vspeed_H_
#include "common.h"
/*** 参数设置 ***/
#define DATA_VEHICLE_RUNNING_THRESHOLD 25 //汽车行进阈值
#define DATA_VEHICLE_STOP_THRESHOLD 20 //汽车停止阈值
#define DATA_VSPEED_DAMPING_FACTOR 3 //阻尼系数
#define DATA_VSPEED_INC_STEP 2 //速度增加时慢加速速度变化步长
#define DATA_VSPEED_DEC_STEP 6 //方向改变时急减速速度变化步长
#define DATA_VSPEED_APPR_SPEED_MIN 2 //最小逼近速度
#define DATA_VSPEED_HYSTERESIS 15 //回差
/*** 控制结构 ***/
typedef struct __attribute__((aligned(4)))
{
uint16_t Timer;
uint16_t Timer1;
uint16_t Backup;
uint16_t Buffer[3];
uint8_t Cnt;
} DataVSpeedSamplerStruct; //车速采样结构
typedef struct __attribute__((aligned(4)))
{
uint16_t Speed;
uint16_t Delta;
uint8_t Dir;
} DataVSPeedDampingStruct; //车速阻尼结构
/******************************************************************************
函数名:Data_Vehicle_Speed_KL30_Init
功 能:车速数据KL30初始化
参 数:无
返回值:无
******************************************************************************
注 意:该函数KL30初始化被调用一次
******************************************************************************/
void Data_Vehicle_Speed_KL30_Init(void);
/******************************************************************************
函数名:Data_Vehicle_Speed_Wakeup_Init
功 能:车速数据唤醒初始化
参 数:无
返回值:无
******************************************************************************
注 意:该函数唤醒初始化被调用一次
******************************************************************************/
void Data_Vehicle_Speed_Wakeup_Init(void);
/******************************************************************************
函数名:Data_Vehicle_Speed_Processing_Service
功 能:车速数据处理函数
参 数:无
返回值:无
******************************************************************************
注 意:该函数必须每20ms被调用一次
******************************************************************************/
void Data_Vehicle_Speed_Processing_Service(void);
uint8_t Get_VechileSpeedValid(void);
/*真实的车速,精度10倍,*/
uint16_t Get_ActualVechileSpeed(void);
/*显示车速,精度10倍,取整,舍去小数点*/
uint16_t Get_DispVechileSpeed(void);
uint16_t Get_DispVechileSpeed_Mile(void);
uint16_t Get_DispVechileSpeed_TX(void);
#endif
...@@ -65,7 +65,7 @@ void Clear_Bu98(void) ...@@ -65,7 +65,7 @@ void Clear_Bu98(void)
void Gauge_Service(void) void Gauge_Service(void)
{ {
static uint16_t VSpeed_Count = 0u;
uint8_t k = 0; uint8_t k = 0;
if (ClearODO_Flag == 1) if (ClearODO_Flag == 1)
{ {
...@@ -104,24 +104,13 @@ void Gauge_Service(void) ...@@ -104,24 +104,13 @@ void Gauge_Service(void)
{ {
if (VSpeed_Count < 3)
{
VSpeed_Count++;
}
else
{
VSpeed_Count = 0;
SEG_SET_VSpeed_NUM(1u, Get_DispVechileSpeed( ) / 10u,Get_Dis_KM_Unit());
}
SEG_SET_ODO_TRIP_FAULTCODE_TCS_DIS(Get_Dis_KM_Unit(), Get_ODO_Value() / 10u, Get_Trip_Value());
Gauge_Clock_Display(); Gauge_Clock_Display();
SEG_SET_EspeedDial(1, Get_DispEngineSpeed()/500);
SEG_SET_Voltage_NUM(1, Get_Battery_Voltage()); SEG_SET_Voltage_NUM(1, Get_Battery_Voltage());
#if(IC_Current == TY200_080000b_ty)
SEG_SET_TPMS_NUM(1, Get_Front_TPMS_Sig_Value(), Get_Rear_TPMS_Sig_Value(), Get_Dis_Tpms_Unit(),Get_Front_TPMS_Sig_Vaild(), Get_Rear_TPMS_Sig_Vaild());
#endif
SEG_SET_Navigation_STS(Get_Navigation_St_Dis(),Get_Navigation_Code_Dis(),Get_Navigation_Mileage_Dis());
} }
else else
......
...@@ -489,7 +489,7 @@ void TYW_RESET_ODO(void) ...@@ -489,7 +489,7 @@ void TYW_RESET_ODO(void)
{ {
if(ClearODO_Flag < 1) if(ClearODO_Flag < 1)
{ {
if((Get_DispVechileSpeed() >= 1990)&&(Get_DispEngineSpeed() >= 12000)) //if((Get_DispVechileSpeed() >= 1990)&&(Get_DispEngineSpeed() >= 12000))
{ {
ClearODO_Flag = 1; ClearODO_Flag = 1;
Data_Mileage_Clear(); Data_Mileage_Clear();
......
...@@ -53,17 +53,10 @@ static void Power_KL30_Init(void) ...@@ -53,17 +53,10 @@ static void Power_KL30_Init(void)
Data_Read_DiagPara(); Data_Read_DiagPara();
Analog_Signal_Conv_Init(); Analog_Signal_Conv_Init();
BU98R10_Init(); BU98R10_Init();
Uart0_Init(115200);
Protocol_KL30_Wakeup_Init();
BlueTooth_KL30_KL15_Wakeup_Init();
Sys_KL30_Init(); Sys_KL30_Init();
Checkself_Init(); Checkself_Init();
Data_Vehicle_Speed_KL30_Init();
Data_Engine_Speed_KL30_Wakeup_Init();
LINE_IN_Init(); LINE_IN_Init();
Key_KL30_Init_EXample(); Key_KL30_Init_EXample();
//Light_Sensor_Init_Example();//注意顺序1
LED_Driver_Init_Example();//注意顺序2 LED_Driver_Init_Example();//注意顺序2
LED_Driver_Service_Immediate(); LED_Driver_Service_Immediate();
Data_User_Mileage_KL30Init(); Data_User_Mileage_KL30Init();
...@@ -81,7 +74,7 @@ static void Power_KL30_Init(void) ...@@ -81,7 +74,7 @@ static void Power_KL30_Init(void)
Telltales_Init(); Telltales_Init();
Telltales_UserInit(); Telltales_UserInit();
MenuData_Unit_Init(); MenuData_Unit_Init();
Data_TPMS_KL30_Init ();
g_stRTCInformation.u8RTCSecond = 0; g_stRTCInformation.u8RTCSecond = 0;
g_stRTCInformation.u8RTCMinute = 0; g_stRTCInformation.u8RTCMinute = 0;
g_stRTCInformation.u8RTCHour = 0; g_stRTCInformation.u8RTCHour = 0;
...@@ -96,7 +89,6 @@ extern uint32_t PowerIgnOffTimeLine; ...@@ -96,7 +89,6 @@ extern uint32_t PowerIgnOffTimeLine;
static void Power_Wakeup_Init(void) static void Power_Wakeup_Init(void)
{ {
PowerIgnOffTimeLine = 0; PowerIgnOffTimeLine = 0;
//RTE_CLOCK_Select_Start();
Simulated_IIC_2_Init(); Simulated_IIC_2_Init();
Gpio_Init(Gpio_WakeUp_Init); Gpio_Init(Gpio_WakeUp_Init);
Can_Init(); Can_Init();
...@@ -108,20 +100,12 @@ static void Power_Wakeup_Init(void) ...@@ -108,20 +100,12 @@ static void Power_Wakeup_Init(void)
Data_User_Mileage_WakeupInit(); Data_User_Mileage_WakeupInit();
BU98R10_Init(); BU98R10_Init();
Sys_WakeUp_Init(); Sys_WakeUp_Init();
Data_Vehicle_Speed_KL30_Init();
Data_Vehicle_Speed_Wakeup_Init();
Data_Engine_Speed_KL30_Wakeup_Init();
LINE_IN_Init(); LINE_IN_Init();
Key_KL30_Init_EXample(); Key_KL30_Init_EXample();
Line_In_KL15_ON_Init(); Line_In_KL15_ON_Init();
MenuData_TCS_Init(); MenuData_TCS_Init();
//Light_Sensor_Init_Example();//注意顺序1
LED_Driver_Init_Example();//注意顺序2 LED_Driver_Init_Example();//注意顺序2
LED_Driver_Service_Immediate(); LED_Driver_Service_Immediate();
Protocol_KL30_Wakeup_Init();
Uart0_Init(115200);
BlueTooth_KL30_KL15_Wakeup_Init();
Data_Voltage_Init(); Data_Voltage_Init();
// TimerM_PWM_counter_Output_Init(TIMERM_COUNTER0, 400, 64000000); // TimerM_PWM_counter_Output_Init(TIMERM_COUNTER0, 400, 64000000);
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 400, 64000000); TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 400, 64000000);
...@@ -133,7 +117,7 @@ static void Power_Wakeup_Init(void) ...@@ -133,7 +117,7 @@ static void Power_Wakeup_Init(void)
TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High); TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High);
Telltales_Init(); Telltales_Init();
Telltales_UserInit(); Telltales_UserInit();
Data_TPMS_KL15_WAKE_UP_Init();
RTE_DEEPSLEEP_GPIO_Interrupt_Enable(WAKEUP_KL15_In,Trigger_Rising); RTE_DEEPSLEEP_GPIO_Interrupt_Enable(WAKEUP_KL15_In,Trigger_Rising);
} }
...@@ -163,8 +147,6 @@ static void Power_IG_ON_Init(void) ...@@ -163,8 +147,6 @@ static void Power_IG_ON_Init(void)
Data_Voltage_Init(); Data_Voltage_Init();
MenuData_TCS_Init(); MenuData_TCS_Init();
BlueTooth_KL30_KL15_Wakeup_Init();
Data_TPMS_KL15_WAKE_UP_Init();
CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable); CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable);
DFlash_init(); DFlash_init();
Data_Read_DiagPara(); Data_Read_DiagPara();
......
...@@ -242,14 +242,7 @@ static void LED_Coolant_Execution(Tellib_uint16_t led_status) ...@@ -242,14 +242,7 @@ static void LED_Coolant_Execution(Tellib_uint16_t led_status)
static Tellib_uint16_t LED_Bluetooth_Judgement(void) static Tellib_uint16_t LED_Bluetooth_Judgement(void)
{ {
Tellib_uint16_t LED_STATE = 0u; Tellib_uint16_t LED_STATE = 0u;
if (BlueTooth.BLE_St)
{
LED_STATE = 1u;
}
else
{
LED_STATE = 0u;
}
return LED_STATE; return LED_STATE;
} }
static void LED_Bluetooth_Execution(Tellib_uint16_t led_status) static void LED_Bluetooth_Execution(Tellib_uint16_t led_status)
...@@ -511,14 +504,7 @@ static void LED_Lateral_Strut_Execution(Tellib_uint16_t led_status) ...@@ -511,14 +504,7 @@ static void LED_Lateral_Strut_Execution(Tellib_uint16_t led_status)
static Tellib_uint16_t LED_Tire_Pressure_Judgement(void) static Tellib_uint16_t LED_Tire_Pressure_Judgement(void)
{ {
Tellib_uint16_t LED_STATE = 0u; Tellib_uint16_t LED_STATE = 0u;
if(Get_Led_TPMS_Waring() == 1)
{
LED_STATE = 1;
}
else
{
LED_STATE = 2;
}
return LED_STATE; return LED_STATE;
} }
static void LED_Tire_Pressure_Execution(Tellib_uint16_t led_status) static void LED_Tire_Pressure_Execution(Tellib_uint16_t led_status)
...@@ -555,46 +541,3 @@ static void LED_Navigato_Execution(Tellib_uint16_t led_status) ...@@ -555,46 +541,3 @@ static void LED_Navigato_Execution(Tellib_uint16_t led_status)
void Turn_Left_Right_Lamp(void)
{
if ( SYS_OPR_STAT_IGN_ON )
{
if ((Common_GetIgnOnTime() >= 3000) && (ClearODO_Flag == 0))
{
if (Line_In_Get_Status(LINE_IN_TurnLeft))
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_ON);
SEG_SET_LED_STS(em_SEG_Turn_Left, 1);
}
else
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_OFF);
SEG_SET_LED_STS(em_SEG_Turn_Left, 0);
}
if (Line_In_Get_Status(LINE_IN_TurnRight))
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_ON);
SEG_SET_LED_STS(em_SEG_Turn_Right, 1);
}
else
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_OFF);
SEG_SET_LED_STS(em_SEG_Turn_Right, 0);
}
}
else
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_ON);
SEG_SET_LED_STS(em_SEG_Turn_Left, 1);
LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_ON);
SEG_SET_LED_STS(em_SEG_Turn_Right, 1);
}
}
else
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_OFF);
SEG_SET_LED_STS(em_SEG_Turn_Left, 0);
LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_OFF);
SEG_SET_LED_STS(em_SEG_Turn_Right, 0);
}
}
...@@ -33,6 +33,6 @@ extern Led_HighBeam_Count HighBeam_Timer; ...@@ -33,6 +33,6 @@ extern Led_HighBeam_Count HighBeam_Timer;
void Telltales_Init(void); void Telltales_Init(void);
void Telltales_UserInit(void); void Telltales_UserInit(void);
void Turn_Left_Right_Lamp(void);
#endif #endif
...@@ -159,7 +159,7 @@ void uart0_interrupt_receive(void) ...@@ -159,7 +159,7 @@ void uart0_interrupt_receive(void)
uart_callback_error(err_type); uart_callback_error(err_type);
} }
rx_data = UART0_RX; rx_data = UART0_RX;
UART_Put((uint16_t)rx_data); //UART_Put((uint16_t)rx_data);
......
...@@ -38,32 +38,20 @@ void Sys_5ms_Tasks(void) ...@@ -38,32 +38,20 @@ void Sys_5ms_Tasks(void)
} }
uint8_t ljs_buf[200] = {0};
void Sys_10ms_Tasks(void) void Sys_10ms_Tasks(void)
{ {
memset(ljs_buf, 0x55, 200); Line_In_Debounce_Service(10u);
Line_In_Debounce_Service(10u);
Key_Service(); Key_Service();
Data_Mileage_Write_EEPROM(); Data_Mileage_Write_EEPROM();
Can_BusOff_Recover(10u); Can_BusOff_Recover(10u);
Turn_Left_Right_Lamp();
TYW_Check_Count(); TYW_Check_Count();
Data_TPMS_Processing_Service();
Protocol_Service();
Protocol_Send_Service();
//Uart0_IntSend(ljs_buf, 200) ;
} }
void Sys_20ms_Tasks(void) void Sys_20ms_Tasks(void)
{ {
Key_Clear_Time(); Key_Clear_Time();
Key_Auto_Save(); Key_Auto_Save();
Data_Vehicle_Speed_Processing_Service();
Data_Engine_Speed_Processing_Service();
} }
void Sys_50ms_Tasks(void) void Sys_50ms_Tasks(void)
...@@ -90,15 +78,13 @@ void Sys_100ms_Tasks(void) ...@@ -90,15 +78,13 @@ void Sys_100ms_Tasks(void)
Services_Mileage_Callback(); Services_Mileage_Callback();
Data_Voltage_Processing_Service(); Data_Voltage_Processing_Service();
S3_ServerCNTT(); S3_ServerCNTT();
//ECU_FaultCode_Processing_Service();
Send_UUID_To_Esp32();
ljs_voltage = ADC_Conv_Single_Channel(ADC_CH_KL15_VOLTAGE); ljs_voltage = ADC_Conv_Single_Channel(ADC_CH_KL15_VOLTAGE);
if (u8LEDDriverCheckCount >= 10U) if (u8LEDDriverCheckCount >= 10U)
{ {
u8LEDDriverCheckCount = 0U; u8LEDDriverCheckCount = 0U;
LED_Driver_Work_Check(); LED_Driver_Work_Check();
LED_Driver_Service_Immediate();//注意顺序1 LED_Driver_Service_Immediate();//注意顺序1
//ALS_Service();//注意顺序2
} }
else else
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment