From 56900ed5464e7cf4215052c706e8c22b00147e4a Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期三, 16 八月 2023 09:08:54 +0800 Subject: [PATCH] 代码排序后 --- 源码/核心板/Src/application/global_param.c | 70 源码/核心板/MDK-ARM/Project.uvguix.zhyin | 468 ++++++------ 源码/核心板/Src/application/beep_logic_app.c | 16 源码/核心板/Src/application/serial_at_cmd_app.c | 352 ++++---- 源码/核心板/MDK-ARM/Project.uvprojx | 20 源码/核心板/MDK-ARM/Project.uvoptx | 2 源码/核心板/Src/application/dw_app.c | 1336 +++++++++++++++++----------------- 7 files changed, 1,143 insertions(+), 1,121 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvguix.zhyin" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvguix.zhyin" index 6d5640e..4d67dd7 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvguix.zhyin" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvguix.zhyin" @@ -15,17 +15,17 @@ <View> <WinId>38003</WinId> <ViewName>Registers</ViewName> - <TableColWidths>116 111</TableColWidths> + <TableColWidths>143 143</TableColWidths> </View> <View> <WinId>346</WinId> <ViewName>Code Coverage</ViewName> - <TableColWidths>770 515</TableColWidths> + <TableColWidths>770 122</TableColWidths> </View> <View> <WinId>204</WinId> <ViewName>Performance Analyzer</ViewName> - <TableColWidths>907 139 139 100</TableColWidths> + <TableColWidths>930 139 139 100</TableColWidths> </View> </SECTreeCtrl> @@ -90,8 +90,8 @@ <sActiveDebugView></sActiveDebugView> <WindowPosition> <length>44</length> - <flags>2</flags> - <showCmd>3</showCmd> + <flags>0</flags> + <showCmd>1</showCmd> <MinPosition> <xPos>-32000</xPos> <yPos>-32000</yPos> @@ -101,17 +101,17 @@ <yPos>-1</yPos> </MaxPosition> <NormalPosition> - <Top>102</Top> - <Left>3</Left> - <Right>1550</Right> - <Bottom>923</Bottom> + <Top>0</Top> + <Left>-6</Left> + <Right>1540</Right> + <Bottom>824</Bottom> </NormalPosition> </WindowPosition> <MDIClientArea> <RegID>0</RegID> <MDITabState> <Len>2697</Len> - <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000001900000000000000010000003B453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C64775F6170702E63000000000864775F6170702E6300000000C5D4F200FFFFFFFF2D453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF3C453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C55736172742E63000000000755736172742E6300000000BECEA100FFFFFFFF3C453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C55736172742E68000000000755736172742E6800000000F0A0A100FFFFFFFF5F453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C53544D3332463130785F5374645065726970685F4472697665725C7372635C73746D3332663130785F646D612E63000000000F73746D3332663130785F646D612E6300000000BCA8E100FFFFFFFF5F453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C53544D3332463130785F5374645065726970685F4472697665725C696E635C73746D3332663130785F646D612E68000000000F73746D3332663130785F646D612E68000000009CC1B600FFFFFFFF3A453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C5370692E6300000000055370692E6300000000F7B88600FFFFFFFF35453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C73746D3332663130785F69742E63000000000E73746D3332663130785F69742E6300000000D9ADC200FFFFFFFF3F453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C646563616472697665725C646563615F6465766963652E63000000000D646563615F6465766963652E6300000000A5C2D700FFFFFFFF42453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C45787465726E616C446576696365735C64775F6472697665722E63000000000B64775F6472697665722E6300000000B3A6BE00FFFFFFFF60453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C53544D3332463130785F5374645065726970685F4472697665725C7372635C73746D3332663130785F657874692E63000000001073746D3332663130785F657874692E6300000000EAD6A300FFFFFFFF43453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C646563616472697665725C646563615F6465766963655F6170692E680000000011646563615F6465766963655F6170692E6800000000F6FA7D00FFFFFFFF51453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C434D5349535C434D335C436F7265537570706F72745C636F72655F636D332E68000000000A636F72655F636D332E6800000000B5E99D00FFFFFFFF47453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C5263635F4E7669635F5379737469636B2E6800000000125263635F4E7669635F5379737469636B2E68000000005FC3CF00FFFFFFFF3B453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C64775F6170702E68000000000864775F6170702E6800000000C1838300FFFFFFFF46453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C73657269616C5F61745F636D645F6170702E63000000001373657269616C5F61745F636D645F6170702E6300000000CACAD500FFFFFFFF41453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C676C6F62616C5F706172616D2E63000000000E676C6F62616C5F706172616D2E6300000000C5D4F200FFFFFFFF3D453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C646563616472697665725C646563615F726567732E68000000000B646563615F726567732E6800000000FFDC7800FFFFFFFF78453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C434D5349535C434D335C446576696365537570706F72745C53545C53544D3332463130785C737461727475705C61726D5C737461727475705F73746D3332663130785F6D642E730000000016737461727475705F73746D3332663130785F6D642E7300000000BECEA100FFFFFFFF46453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C73657269616C5F61745F636D645F6170702E68000000001373657269616C5F61745F636D645F6170702E6800000000F0A0A100FFFFFFFF45453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C646563616472697665725C646563615F72616E67655F7461626C65732E630000000013646563615F72616E67655F7461626C65732E6300000000BCA8E100FFFFFFFF41453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C676C6F62616C5F706172616D2E68000000000E676C6F62616C5F706172616D2E68000000009CC1B600FFFFFFFF47453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C5263635F4E7669635F5379737469636B2E6300000000125263635F4E7669635F5379737469636B2E6300000000F7B88600FFFFFFFF43453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C626565705F6C6F6769635F6170702E630000000010626565705F6C6F6769635F6170702E6300000000D9ADC200FFFFFFFF3D453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C45787465726E616C446576696365735C626565702E680000000006626565702E6800000000A5C2D700FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F60000004A0000000006000071020000</Data> + <Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000001000000190000000F000000010000003B453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C64775F6170702E63000000000864775F6170702E6300000000C5D4F200FFFFFFFF2D453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF3C453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C55736172742E63000000000755736172742E6300000000BECEA100FFFFFFFF3C453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C55736172742E68000000000755736172742E6800000000F0A0A100FFFFFFFF5F453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C53544D3332463130785F5374645065726970685F4472697665725C7372635C73746D3332663130785F646D612E63000000000F73746D3332663130785F646D612E6300000000BCA8E100FFFFFFFF5F453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C53544D3332463130785F5374645065726970685F4472697665725C696E635C73746D3332663130785F646D612E68000000000F73746D3332663130785F646D612E68000000009CC1B600FFFFFFFF3A453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C5370692E6300000000055370692E6300000000F7B88600FFFFFFFF35453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C73746D3332663130785F69742E63000000000E73746D3332663130785F69742E6300000000D9ADC200FFFFFFFF3F453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C646563616472697665725C646563615F6465766963652E63000000000D646563615F6465766963652E6300000000A5C2D700FFFFFFFF42453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C45787465726E616C446576696365735C64775F6472697665722E63000000000B64775F6472697665722E6300000000B3A6BE00FFFFFFFF60453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C53544D3332463130785F5374645065726970685F4472697665725C7372635C73746D3332663130785F657874692E63000000001073746D3332663130785F657874692E6300000000EAD6A300FFFFFFFF43453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C646563616472697665725C646563615F6465766963655F6170692E680000000011646563615F6465766963655F6170692E6800000000F6FA7D00FFFFFFFF51453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C434D5349535C434D335C436F7265537570706F72745C636F72655F636D332E68000000000A636F72655F636D332E6800000000B5E99D00FFFFFFFF47453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C5263635F4E7669635F5379737469636B2E6800000000125263635F4E7669635F5379737469636B2E68000000005FC3CF00FFFFFFFF3B453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C64775F6170702E68000000000864775F6170702E6800000000C1838300FFFFFFFF46453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C73657269616C5F61745F636D645F6170702E63000000001373657269616C5F61745F636D645F6170702E6300000000CACAD500FFFFFFFF41453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C676C6F62616C5F706172616D2E63000000000E676C6F62616C5F706172616D2E6300000000C5D4F200FFFFFFFF3D453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C646563616472697665725C646563615F726567732E68000000000B646563615F726567732E6800000000FFDC7800FFFFFFFF78453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C434D5349535C434D335C446576696365537570706F72745C53545C53544D3332463130785C737461727475705C61726D5C737461727475705F73746D3332663130785F6D642E730000000016737461727475705F73746D3332663130785F6D642E7300000000BECEA100FFFFFFFF46453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C73657269616C5F61745F636D645F6170702E68000000001373657269616C5F61745F636D645F6170702E6800000000F0A0A100FFFFFFFF45453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C646563616472697665725C646563615F72616E67655F7461626C65732E630000000013646563615F72616E67655F7461626C65732E6300000000BCA8E100FFFFFFFF41453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C676C6F62616C5F706172616D2E68000000000E676C6F62616C5F706172616D2E68000000009CC1B600FFFFFFFF47453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C5263635F4E7669635F5379737469636B2E6300000000125263635F4E7669635F5379737469636B2E6300000000F7B88600FFFFFFFF43453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C626565705F6C6F6769635F6170702E630000000010626565705F6C6F6769635F6170702E6300000000D9ADC200FFFFFFFF3D453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C45787465726E616C446576696365735C626565702E680000000006626565702E6800000000A5C2D700FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F800000052000000FC05000069020000</Data> </MDITabState> </MDIClientArea> <ViewEx> @@ -134,7 +134,7 @@ </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>C40000006600000070040000D4000000</Data> + <Data>C60000006E00000072040000DC000000</Data> </RectRecentFloat> </Window> <Window> @@ -150,7 +150,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>030000004A000000EF00000041020000</Data> + <Data>030000004A000000EF00000031020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -170,7 +170,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>030000004A000000EF00000041020000</Data> + <Data>030000004A000000EF00000031020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -450,7 +450,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>030000004A000000EF00000041020000</Data> + <Data>030000004A000000EF00000031020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -470,7 +470,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>030000004A000000EF00000041020000</Data> + <Data>030000004A000000EF00000031020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -490,7 +490,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000075020000FD050000F5020000</Data> + <Data>0300000065020000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -530,7 +530,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000075020000FD050000F5020000</Data> + <Data>0300000065020000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -1150,7 +1150,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>030000004A000000EF00000041020000</Data> + <Data>030000004A000000EF00000031020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -1170,7 +1170,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000075020000FD050000F5020000</Data> + <Data>0300000065020000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -1190,7 +1190,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000075020000FD050000F5020000</Data> + <Data>0300000065020000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -1250,7 +1250,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000075020000FD050000F5020000</Data> + <Data>0300000065020000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -1270,7 +1270,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000075020000FD050000F5020000</Data> + <Data>0300000065020000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -1730,7 +1730,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>000000000E0300000006000021030000</Data> + <Data>00000000FE020000FA05000011030000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -1799,14 +1799,14 @@ </Window> <DockMan> <Len>3312</Len> - <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFC4000000BD00000070040000C1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C40000006600000070040000D4000000C40000004F00000070040000BD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFAC0300004F000000B0030000A5010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000B00300006600000070040000BC010000B00300004F00000070040000A501000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF200000033000000F60000005A020000010000000200001004000000010000001DFFFFFF0C050000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000004A000000F2000000710200000000000033000000F20000005A0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000091010000700400009501000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000000000000AC010000700400002E0200000000000095010000700400001702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF38020000950100003C0200001702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000005A020000000600005E020000010000000100001004000000010000003FFEFFFFF3000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000750200000006000025030000000000005E020000000600000E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data> + <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFC4000000BD00000070040000C1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C60000006E00000072040000DC000000C40000004F00000070040000BD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFAC0300004F000000B0030000A5010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000B20300006E00000072040000C4010000B00300004F00000070040000A501000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF200000033000000F60000004A020000010000000200001004000000010000001DFFFFFF0C050000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000200000052000000F4000000690200000000000033000000F20000004A0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000091010000700400009501000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000002000000B401000072040000360200000000000095010000700400001702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF38020000950100003C0200001702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000004A020000FA0500004E020000010000000100001004000000010000003FFEFFFFF3000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000020000006D020000FC0500001D030000000000004E020000FA050000FE0200000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data> </DockMan> <ToolBar> <RegID>59392</RegID> <Name>File</Name> <Buttons> - <Len>2922</Len> - <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000A416E63686F725F417070960000000000000014000A416E63686F725F4170700A4E4541525F46494E414C0D4E4541525F524553504F4E5345094E4541525F504F4C4C084E4541525F4D53470553504F4C4C1148414C5F554152545F5472616E736D69740C4442475F4D4F44455F4346471D557372576966695F52657475726E466163746F727953657474696E67730A5F52544B5F4D4F44455F115368656C6C5F47505342617564526174650D5368656C6C5F4442474D6F646505445720494409675F636F6D5F6D61702B5343422D3E4149524352203D20305830354641303030307C28756E7369676E656420696E7429307830343B0864656C61795F6D73075265637655525415557361727450617273654461746148616E646C65721055617274536572766963655F506F6C6C0D526563764D6F646275735254550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020000001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data> + <Len>2923</Len> + <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000002B5343422D3E4149524352203D20305830354641303030307C28756E7369676E656420696E7429307830343B960000000000000014002B5343422D3E4149524352203D20305830354641303030307C28756E7369676E656420696E7429307830343B0C737570657267726F75706964034150500B626967736C6F745F6E756D0A746167736C6F74706F730F4E657874536C6F7444656C61794D730F5365744E657874506F6C6C54696D650A5557425F44575F5441470A465A4E656172506F6C6C0A4745544E4541524D5347095354415254504F4C4C07524547504F4C4C0A75736172745F73656E64097461675F73746174650574657374320D544F54414C5F534C4F544E554D12494E5055545F35565F4750494F5F506F72740F424D50335F4949525F46494C5445520A6969725F66696C7465720873657474696E67730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data> </Buttons> <OriginalItems> <Len>1423</Len> @@ -1822,7 +1822,7 @@ <Name>Build</Name> <Buttons> <Len>970</Len> - <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000553544D3332960000000000000001000553544D3332000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data> + <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000553544D3332960000000000000001000553544D3332000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data> </Buttons> <OriginalItems> <Len>583</Len> @@ -1838,7 +1838,7 @@ <Name>Debug</Name> <Buttons> <Len>2373</Len> - <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data> + <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data> </Buttons> <OriginalItems> <Len>898</Len> @@ -1871,11 +1871,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>F10000004F00000000060000B5000000</Data> + <Data>2C0100004F000000B2040000BD000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>F10000006600000000060000CC000000</Data> + <Data>2E0100006E000000B4040000DC000000</Data> </RectRecentFloat> </Window> <Window> @@ -1891,11 +1891,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000066000000EA00000043020000</Data> + <Data>03000000660000002501000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>0000000066000000280100006D020000</Data> </RectRecentFloat> </Window> <Window> @@ -1911,31 +1911,31 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000066000000EA00000043020000</Data> + <Data>03000000660000002501000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000A101000091020000</Data> + <Data>0000000066000000280100006D020000</Data> </RectRecentFloat> </Window> <Window> <RegID>1465</RegID> <PaneID>1465</PaneID> - <IsVisible>0</IsVisible> + <IsVisible>1</IsVisible> <IsFloating>0</IsFloating> <IsTabbed>0</IsTabbed> <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>190200004F0000006B060000E6030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>DB010000C1FDFFFF9705000043FEFFFF</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -1947,15 +1947,15 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -1967,15 +1967,15 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -1987,15 +1987,15 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -2011,11 +2011,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2031,51 +2031,51 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>F400000066000000FD0500009C000000</Data> + <Data>2F01000066000000AF040000A4000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000F602000043010000</Data> + <Data>7000000087000000A8020000F5000000</Data> </RectRecentFloat> </Window> <Window> <RegID>1935</RegID> <PaneID>1935</PaneID> - <IsVisible>0</IsVisible> + <IsVisible>1</IsVisible> <IsFloating>0</IsFloating> <IsTabbed>0</IsTabbed> <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> <RegID>1936</RegID> <PaneID>1936</PaneID> - <IsVisible>0</IsVisible> + <IsVisible>1</IsVisible> <IsFloating>0</IsFloating> <IsTabbed>0</IsTabbed> <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -2087,15 +2087,15 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -2107,15 +2107,15 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -2127,15 +2127,15 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -2147,15 +2147,15 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -2167,15 +2167,15 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -2191,11 +2191,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000066000000EA00000043020000</Data> + <Data>03000000660000002501000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000A101000091020000</Data> + <Data>0000000066000000280100006D020000</Data> </RectRecentFloat> </Window> <Window> @@ -2211,17 +2211,17 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000066000000EA00000043020000</Data> + <Data>03000000660000002501000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000A101000091020000</Data> + <Data>0000000066000000280100006D020000</Data> </RectRecentFloat> </Window> <Window> <RegID>197</RegID> <PaneID>197</PaneID> - <IsVisible>0</IsVisible> + <IsVisible>1</IsVisible> <IsFloating>0</IsFloating> <IsTabbed>0</IsTabbed> <IsActivated>0</IsActivated> @@ -2231,11 +2231,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000077020000FD050000F5020000</Data> + <Data>0300000036020000AF040000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000F602000043010000</Data> + <Data>7000000087000000A8020000F5000000</Data> </RectRecentFloat> </Window> <Window> @@ -2251,11 +2251,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>00000000850100009704000050020000</Data> + <Data>00000000950100007004000017020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000F602000043010000</Data> + <Data>7000000087000000A8020000F5000000</Data> </RectRecentFloat> </Window> <Window> @@ -2271,11 +2271,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000077020000FD050000F5020000</Data> + <Data>0300000036020000AF040000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000F602000043010000</Data> + <Data>7000000087000000A8020000F5000000</Data> </RectRecentFloat> </Window> <Window> @@ -2291,11 +2291,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>F10000006300000000060000B5000000</Data> + <Data>2C01000063000000B2040000BD000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000F602000043010000</Data> + <Data>7000000087000000A8020000F5000000</Data> </RectRecentFloat> </Window> <Window> @@ -2311,11 +2311,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>F400000066000000FD0500009C000000</Data> + <Data>2F01000066000000AF040000A4000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000F602000043010000</Data> + <Data>7000000087000000A8020000F5000000</Data> </RectRecentFloat> </Window> <Window> @@ -2351,11 +2351,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2367,15 +2367,15 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -2391,11 +2391,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>F400000066000000FD0500009C000000</Data> + <Data>2F01000066000000AF040000A4000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000F602000043010000</Data> + <Data>7000000087000000A8020000F5000000</Data> </RectRecentFloat> </Window> <Window> @@ -2411,11 +2411,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>F400000066000000FD0500009C000000</Data> + <Data>2F01000066000000AF040000A4000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000F602000043010000</Data> + <Data>7000000087000000A8020000F5000000</Data> </RectRecentFloat> </Window> <Window> @@ -2431,11 +2431,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>F400000066000000FD0500009C000000</Data> + <Data>2F01000066000000AF040000A4000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2451,11 +2451,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>F400000066000000FD0500009C000000</Data> + <Data>2F01000066000000AF040000A4000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000F602000043010000</Data> + <Data>7000000087000000A8020000F5000000</Data> </RectRecentFloat> </Window> <Window> @@ -2471,11 +2471,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2491,11 +2491,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2511,11 +2511,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2531,11 +2531,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2551,11 +2551,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2571,11 +2571,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2591,11 +2591,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2611,11 +2611,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2631,11 +2631,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2651,11 +2651,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2671,11 +2671,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2691,11 +2691,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2711,11 +2711,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2731,11 +2731,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2751,11 +2751,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2771,11 +2771,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2791,11 +2791,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2811,11 +2811,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2831,11 +2831,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2851,11 +2851,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2871,11 +2871,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -2891,11 +2891,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000066000000EA00000043020000</Data> + <Data>03000000660000002501000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000A101000091020000</Data> + <Data>0000000066000000280100006D020000</Data> </RectRecentFloat> </Window> <Window> @@ -2911,11 +2911,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000077020000FD050000F5020000</Data> + <Data>0300000036020000AF040000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000F602000043010000</Data> + <Data>7000000087000000A8020000F5000000</Data> </RectRecentFloat> </Window> <Window> @@ -2931,11 +2931,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000077020000FD050000F5020000</Data> + <Data>0300000036020000AF040000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000A101000091020000</Data> + <Data>70000000870000005301000043020000</Data> </RectRecentFloat> </Window> <Window> @@ -2947,15 +2947,15 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -2967,15 +2967,15 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <Window> @@ -2991,11 +2991,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000077020000FD050000F5020000</Data> + <Data>0300000036020000AF040000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000A101000091020000</Data> + <Data>70000000870000005301000043020000</Data> </RectRecentFloat> </Window> <Window> @@ -3011,11 +3011,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0300000077020000FD050000F5020000</Data> + <Data>0300000036020000AF040000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000A101000091020000</Data> + <Data>70000000870000005301000043020000</Data> </RectRecentFloat> </Window> <Window> @@ -3031,11 +3031,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>F400000066000000FD0500009C000000</Data> + <Data>2F01000066000000AF040000A4000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D5000000F602000043010000</Data> + <Data>7000000087000000A8020000F5000000</Data> </RectRecentFloat> </Window> <Window> @@ -3051,11 +3051,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3071,11 +3071,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3091,11 +3091,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3111,11 +3111,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3131,11 +3131,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3151,11 +3151,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3171,11 +3171,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3191,11 +3191,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3211,11 +3211,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3231,11 +3231,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3251,11 +3251,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3271,11 +3271,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3291,11 +3291,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>0A0000000A0000006E0000006E000000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3311,11 +3311,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3331,11 +3331,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3351,11 +3351,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3371,11 +3371,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3391,11 +3391,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3411,11 +3411,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3431,11 +3431,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>DA030000660000009404000005020000</Data> + <Data>F603000066000000B004000002020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>BE000000D50000007E01000075010000</Data> + <Data>70000000870000003001000027010000</Data> </RectRecentFloat> </Window> <Window> @@ -3451,11 +3451,11 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>0000000000000000D10300001C000000</Data> + <Data>0500000000000000D60300001C000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>0A0000000A0000006E0000006E000000</Data> + <Data>0A0000000A000000D803000042000000</Data> </RectRecentFloat> </Window> <Window> @@ -3471,7 +3471,7 @@ <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>000000000E0300000006000021030000</Data> + <Data>00000000FE020000FA05000011030000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -3488,10 +3488,10 @@ <MRUWidth>476</MRUWidth> <PinState>0</PinState> <RecentFrameAlignment>8192</RecentFrameAlignment> - <RecentRowIndex>1</RecentRowIndex> + <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>000000001C000000E701000038000000</Data> + <Data>0000000000000000E70100001C000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> @@ -3508,14 +3508,14 @@ <MRUWidth>612</MRUWidth> <PinState>0</PinState> <RecentFrameAlignment>8192</RecentFrameAlignment> - <RecentRowIndex>2</RecentRowIndex> + <RecentRowIndex>1</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>040000001C0000007302000038000000</Data> + <Data>000000001C0000006F02000038000000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>0A0000000A0000007602000042000000</Data> + <Data>0A0000000A0000006E0000006E000000</Data> </RectRecentFloat> </Window> <Window> @@ -3527,27 +3527,27 @@ <IsActivated>0</IsActivated> <MRUWidth>32767</MRUWidth> <PinState>0</PinState> - <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentFrameAlignment>32768</RecentFrameAlignment> <RecentRowIndex>0</RecentRowIndex> <RectRecentDocked> <Len>16</Len> - <Data>1C0200006600000068060000CD030000</Data> + <Data>B904000066000000F7050000E5020000</Data> </RectRecentDocked> <RectRecentFloat> <Len>16</Len> - <Data>9B040000660000000006000025030000</Data> + <Data>D5040000BD010000D107000071020000</Data> </RectRecentFloat> </Window> <DockMan> - <Len>3478</Len> - <Data>000000000D000000000000000020000001000000FFFFFFFFFFFFFFFFF1000000B500000000060000B9000000010000000100001004000000010000009BFFFFFF4B010000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000001000000F10000006600000000060000CC000000F10000004F00000000060000B50000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFD30300004F000000D70300001E020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000D7030000660000009704000035020000D70300004F000000970400001E02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0353544B00000000408C000001000000FFFFFFFFFFFFFFFF054750494F4200000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFED0000004F000000F10000005C0200000100000002000010040000000100000044FEFFFFD0020000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000ED00000073020000000000004F000000ED0000005C0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000081010000970400008501000000000000010000000400000001000000A9FEFFFF1D00000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFC0030000F2020000C40300007403000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000005C020000000600006002000001000000010000100400000001000000B4FEFFFFFE000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000007702000000060000250300000000000060020000000600000E0300000000000040820056060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365010000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000000000000FFFFFFFFFFFFFFFF150200004F000000190200000E03000000000000020000000400000001000000DBFCFFFF2B0300000000000000000000000000000100000000000000000000000000000001000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000BA050000BB050000BC050000CB0900000180004000000000000019020000660000006B060000FD030000190200004F0000006B060000E603000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF00000000B905000002000000000000000000000002000000FFFFFFFF6B0600004F0000006F060000E60300000000000002000000040000000000000052FFFFFF4D0000000000000000000000000000000000000002000000FFFFFFFF8F070000B905000001000000B905000001000000FFFFFFFF8F070000000000000000000000000000</Data> + <Len>3426</Len> + <Data>000000000C000000000000000020000001000000FFFFFFFFFFFFFFFF2C010000BD000000B2040000C1000000010000000100001004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000010000002E0100006E000000B4040000DC0000002C0100004F000000B2040000BD0000000000000040280056080000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFEF0300004F000000F30300001B020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000F50300006E000000B50400003A020000F30300004F000000B30400001B02000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF054750494F4300000000408C000001000000FFFFFFFFFFFFFFFF054750494F4200000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF280100004F0000002C0100001B0200000100000002000010040000000100000001FFFFFFF6040000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000020000006E0000002A0100003A020000000000004F000000280100001B0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000063010000B10400006701000000000000010000000400000001000000000000000000000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFFD02000050020000010300000403000000000000020000000400000000000000000000000000000000000000000000000000000001000000C600000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000001B020000B20400001F02000001000000010000100400000001000000B8FDFFFF6C000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000020000003E020000B40400001D030000000000001F020000B2040000FE0200000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFFB20400004F000000B6040000FE02000001000000020000100400000001000000A2FDFFFF6402000000000000000000000000000001000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800040000001000000B80400006E000000FC0500001D030000B60400004F000000FA050000FE02000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F070000000000000000000000000000</Data> </DockMan> <ToolBar> <RegID>59392</RegID> <Name>File</Name> <Buttons> - <Len>2922</Len> - <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000A416E63686F725F417070960000000000000014000A416E63686F725F4170700A4E4541525F46494E414C0D4E4541525F524553504F4E5345094E4541525F504F4C4C084E4541525F4D53470553504F4C4C1148414C5F554152545F5472616E736D69740C4442475F4D4F44455F4346471D557372576966695F52657475726E466163746F727953657474696E67730A5F52544B5F4D4F44455F115368656C6C5F47505342617564526174650D5368656C6C5F4442474D6F646505445720494409675F636F6D5F6D61702B5343422D3E4149524352203D20305830354641303030307C28756E7369676E656420696E7429307830343B0864656C61795F6D73075265637655525415557361727450617273654461746148616E646C65721055617274536572766963655F506F6C6C0D526563764D6F646275735254550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data> + <Len>2923</Len> + <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000002B5343422D3E4149524352203D20305830354641303030307C28756E7369676E656420696E7429307830343B960000000000000014002B5343422D3E4149524352203D20305830354641303030307C28756E7369676E656420696E7429307830343B0C737570657267726F75706964034150500B626967736C6F745F6E756D0A746167736C6F74706F730F4E657874536C6F7444656C61794D730F5365744E657874506F6C6C54696D650A5557425F44575F5441470A465A4E656172506F6C6C0A4745544E4541524D5347095354415254504F4C4C07524547504F4C4C0A75736172745F73656E64097461675F73746174650574657374320D544F54414C5F534C4F544E554D12494E5055545F35565F4750494F5F506F72740F424D50335F4949525F46494C5445520A6969725F66696C7465720873657474696E67730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000300150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data> </Buttons> <OriginalItems> <Len>1423</Len> @@ -3562,8 +3562,8 @@ <RegID>59399</RegID> <Name>Build</Name> <Buttons> - <Len>955</Len> - <Data>00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000000002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050FFFFFFFF00960000000000000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000000240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data> + <Len>968</Len> + <Data>00200000000000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000044C30353196000000000000000100044C303531000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data> </Buttons> <OriginalItems> <Len>583</Len> @@ -3579,7 +3579,7 @@ <Name>Debug</Name> <Buttons> <Len>2362</Len> - <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000004002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000004002800000000000000000000000000000000010000000100000001801B80000000000400290000000000000000000000000000000001000000010000000180E57F0000000004002A00000000000000000000000000000000010000000100000001801C800000000004002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000004002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020000002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data> + <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020000002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data> </Buttons> <OriginalItems> <Len>898</Len> @@ -3603,12 +3603,12 @@ <ActiveMDIGroup>0</ActiveMDIGroup> <MDIGroup> <Size>100</Size> - <ActiveTab>0</ActiveTab> + <ActiveTab>15</ActiveTab> <Doc> <Name>..\Src\application\dw_app.c</Name> - <ColumnNumber>64</ColumnNumber> - <TopLine>867</TopLine> - <CurrentLine>874</CurrentLine> + <ColumnNumber>19</ColumnNumber> + <TopLine>734</TopLine> + <CurrentLine>739</CurrentLine> <Folding>1</Folding> <ContractedFolders></ContractedFolders> <PaneID>0</PaneID> @@ -3616,7 +3616,7 @@ <Doc> <Name>..\Src\main.c</Name> <ColumnNumber>0</ColumnNumber> - <TopLine>218</TopLine> + <TopLine>151</TopLine> <CurrentLine>225</CurrentLine> <Folding>1</Folding> <ContractedFolders></ContractedFolders> @@ -3705,7 +3705,7 @@ </Doc> <Doc> <Name>..\Src\decadriver\deca_device_api.h</Name> - <ColumnNumber>60</ColumnNumber> + <ColumnNumber>62</ColumnNumber> <TopLine>1423</TopLine> <CurrentLine>1424</CurrentLine> <Folding>1</Folding> @@ -3741,18 +3741,18 @@ </Doc> <Doc> <Name>..\Src\application\serial_at_cmd_app.c</Name> - <ColumnNumber>74</ColumnNumber> - <TopLine>170</TopLine> - <CurrentLine>184</CurrentLine> + <ColumnNumber>21</ColumnNumber> + <TopLine>116</TopLine> + <CurrentLine>137</CurrentLine> <Folding>1</Folding> <ContractedFolders></ContractedFolders> <PaneID>0</PaneID> </Doc> <Doc> <Name>..\Src\application\global_param.c</Name> - <ColumnNumber>60</ColumnNumber> - <TopLine>16</TopLine> - <CurrentLine>41</CurrentLine> + <ColumnNumber>49</ColumnNumber> + <TopLine>26</TopLine> + <CurrentLine>42</CurrentLine> <Folding>1</Folding> <ContractedFolders></ContractedFolders> <PaneID>0</PaneID> @@ -3796,7 +3796,7 @@ <Doc> <Name>..\Src\application\global_param.h</Name> <ColumnNumber>0</ColumnNumber> - <TopLine>17</TopLine> + <TopLine>13</TopLine> <CurrentLine>23</CurrentLine> <Folding>1</Folding> <ContractedFolders></ContractedFolders> @@ -3815,7 +3815,7 @@ <Name>..\Src\application\beep_logic_app.c</Name> <ColumnNumber>10</ColumnNumber> <TopLine>2</TopLine> - <CurrentLine>3</CurrentLine> + <CurrentLine>4</CurrentLine> <Folding>1</Folding> <ContractedFolders></ContractedFolders> <PaneID>0</PaneID> diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" index 3ee7364..7a2dc80 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvoptx" @@ -130,7 +130,7 @@ <SetRegEntry> <Number>0</Number> <Key>DLGUARM</Key> - <Name></Name> + <Name>d</Name> </SetRegEntry> <SetRegEntry> <Number>0</Number> diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvprojx" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvprojx" index dc54e29..42d602c 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvprojx" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvprojx" @@ -10,7 +10,7 @@ <TargetName>STM32</TargetName> <ToolsetNumber>0x4</ToolsetNumber> <ToolsetName>ARM-ADS</ToolsetName> - <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed> + <pCCUsed>5060750::V5.06 update 6 (build 750)::.\ARMCC</pCCUsed> <uAC6>0</uAC6> <TargetOption> <TargetCommonOption> @@ -185,6 +185,7 @@ <uocXRam>0</uocXRam> <RvdsVP>0</RvdsVP> <RvdsMve>0</RvdsMve> + <RvdsCdeCp>0</RvdsCdeCp> <hadIRAM2>0</hadIRAM2> <hadIROM2>0</hadIROM2> <StupSel>8</StupSel> @@ -351,7 +352,7 @@ <NoWarn>0</NoWarn> <uSurpInc>0</uSurpInc> <useXO>0</useXO> - <uClangAs>0</uClangAs> + <ClangAsOpt>4</ClangAsOpt> <VariousControls> <MiscControls></MiscControls> <Define></Define> @@ -669,4 +670,19 @@ <files/> </RTE> + <LayerInfo> + <Layers> + <Layer> + <LayName><Project Info></LayName> + <LayDesc></LayDesc> + <LayUrl></LayUrl> + <LayKeys></LayKeys> + <LayCat></LayCat> + <LayLic></LayLic> + <LayTarg>0</LayTarg> + <LayPrjMark>1</LayPrjMark> + </Layer> + </Layers> + </LayerInfo> + </Project> diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" index 4545b90..5231c92 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/beep_logic_app.c" @@ -21,7 +21,7 @@ // //除UWB之外的其他代码... // static uint16_t beep_judge_cnt = 0; // if(beep_judge_cnt++ >= 100) -// { +// { // beep_judge_cnt = 0; // min_dist=0xffff; // for(i = 0; i < 255;i++) @@ -30,9 +30,9 @@ // { // min_dist=g_Tagdist[i]; // } -// +// // } -// +// // if (min_dist <= g_com_map[ALARM_DISTANCE2]+distoffset1) // { // beep_ontime = ONTIME2; @@ -54,7 +54,7 @@ // distoffset1=0; // distoffset2=0; // } -// +// // if(beep_state!=0) // { // if(timer_state==1) @@ -62,7 +62,7 @@ // if(beep_timer++ < beep_ontime) // { // RELAY1_ON; -// RELAY2_ON; +// RELAY2_ON; // }else{ // timer_state=0; // beep_timer=0; @@ -76,15 +76,15 @@ // timer_state=1; // beep_timer=0; // } -// +// // } -// +// // } else { // RELAY1_OFF; // RELAY2_OFF; // } // } -} +} diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" index 2a418c0..1a97a71 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" @@ -2,21 +2,21 @@ #include "ADC.h" enum enumtagstate { - DISCPOLL, - GETNEARMSG, - NEARPOLL, -}tag_state=GETNEARMSG; + DISCPOLL, + GETNEARMSG, + NEARPOLL, +} tag_state=GETNEARMSG; static dwt_config_t config = { - 2, /* Channel number. */ - DWT_PRF_64M, /* Pulse repetition frequency. */ - DWT_PLEN_128, /* Preamble length. */ - DWT_PAC8, /* Preamble acquisition chunk size. Used in RX only. */ - 9, /* TX preamble code. Used in TX only. */ - 9, /* RX preamble code. Used in RX only. */ - 1, /* Use non-standard SFD (Boolean) */ - DWT_BR_6M8, /* Data rate. */ - DWT_PHRMODE_STD, /* PHY header mode. */ - (129 + 8 - 8) /* SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */ + 2, /* Channel number. */ + DWT_PRF_64M, /* Pulse repetition frequency. */ + DWT_PLEN_128, /* Preamble length. */ + DWT_PAC8, /* Preamble acquisition chunk size. Used in RX only. */ + 9, /* TX preamble code. Used in TX only. */ + 9, /* RX preamble code. Used in RX only. */ + 1, /* Use non-standard SFD (Boolean) */ + DWT_BR_6M8, /* Data rate. */ + DWT_PHRMODE_STD, /* PHY header mode. */ + (129 + 8 - 8) /* SFD timeout (preamble length + 1 + SFD length - PAC size). Used in RX only. */ }; static uint8_t tx_poll_msg[20] = {0}; static uint8_t tx_sync_msg[14] = {0}; @@ -28,7 +28,7 @@ static uint8_t tx_near_msg[80] = {0}; - uint32_t frame_seq_nb = 0, frame_seq_nb2 = 0; +uint32_t frame_seq_nb = 0, frame_seq_nb2 = 0; static uint32_t status_reg = 0; static uint8_t rx_buffer[100]; static uint64_t poll_rx_ts; @@ -41,7 +41,7 @@ uint32_t anc_id_recv = 0; uint8_t random_delay_tim = 0; double distance, dist_no_bias, dist_cm; -uint32_t g_UWB_com_interval = 0; +uint32_t g_UWB_com_interval = 0; float dis_after_filter; //当前距离值 LPFilter_Frac* p_Dis_Filter; //测距用的低通滤波器 int32_t g_Tagdist[TAG_NUM_IN_SYS]; @@ -97,58 +97,58 @@ extern int32_t tagdist_list[TAG_NUM_IN_SYS]; void TagDistClear(void) { - static uint16_t clear_judge_cnt; - uint16_t i; - for(i=0;i<255;i++) - { - g_flag_Taggetdist[i]++; - if(g_flag_Taggetdist[i]>=2) - { - tagdist_list[i]=0x1ffff; - } - } + static uint16_t clear_judge_cnt; + uint16_t i; + for(i=0; i<255; i++) + { + g_flag_Taggetdist[i]++; + if(g_flag_Taggetdist[i]>=2) + { + tagdist_list[i]=0x1ffff; + } + } } void Dw1000_Init(void) { - /* Reset and initialise DW1000. + /* Reset and initialise DW1000. * For initialisation, DW1000 clocks must be temporarily set to crystal speed. After initialisation SPI rate can be increased for optimum * performance. */ Reset_DW1000();//重启DW1000 /* Target specific drive of RSTn line into DW1000 low for a period. */ - status_reg = dwt_read32bitreg(SYS_STATUS_ID); + status_reg = dwt_read32bitreg(SYS_STATUS_ID); dwt_initialise(DWT_LOADUCODE);//初始化DW1000 - status_reg = dwt_read32bitreg(SYS_STATUS_ID); - Spi_ChangePrescaler(SPIx_PRESCALER_FAST); //设置为快速模式 + status_reg = dwt_read32bitreg(SYS_STATUS_ID); + Spi_ChangePrescaler(SPIx_PRESCALER_FAST); //设置为快速模式 /* Configure DW1000. See NOTE 6 below. */ dwt_configure(&config);//配置DW1000 - -dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1); - + + dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1); + /* Apply default antenna delay value. See NOTE 1 below. */ dwt_setrxantennadelay(RX_ANT_DLY); //设置接收天线延迟 dwt_settxantennadelay(TX_ANT_DLY); //设置发射天线延迟 /* Set expected response's delay and timeout. See NOTE 4 and 5 below. * As this example only handles one incoming frame with always the same delay and timeout, those values can be set here once for all. */ - //设置接收超时时间 + //设置接收超时时间 } void Dw1000_App_Init(void) { //g_com_map[DEV_ID] = 0x0b; - tx_poll_msg[MESSAGE_TYPE_IDX]=POLL; - tx_resp_msg[MESSAGE_TYPE_IDX]=RESPONSE; - tx_final_msg[MESSAGE_TYPE_IDX]=FINAL; - tx_sync_msg[MESSAGE_TYPE_IDX]=SYNC; - - memcpy(&tx_poll_msg[TAG_ID_IDX], &dev_id, 2); - memcpy(&tx_final_msg[TAG_ID_IDX], &dev_id, 2); - memcpy(&tx_resp_msg[ANCHOR_ID_IDX], &dev_id, 2); - memcpy(&tx_sync_msg[ANCHOR_ID_IDX], &dev_id, 2); - memcpy(&tx_nearresp_msg[ANCHOR_ID_IDX], &dev_id, 2); - memcpy(&tx_nearpoll_msg[TAG_ID_IDX], &dev_id, 2); - memcpy(&tx_nearfinal_msg[TAG_ID_IDX], &dev_id, 2); -} -uint16_t Checksum_u16(uint8_t* pdata, uint32_t len) + tx_poll_msg[MESSAGE_TYPE_IDX]=POLL; + tx_resp_msg[MESSAGE_TYPE_IDX]=RESPONSE; + tx_final_msg[MESSAGE_TYPE_IDX]=FINAL; + tx_sync_msg[MESSAGE_TYPE_IDX]=SYNC; + + memcpy(&tx_poll_msg[TAG_ID_IDX], &dev_id, 2); + memcpy(&tx_final_msg[TAG_ID_IDX], &dev_id, 2); + memcpy(&tx_resp_msg[ANCHOR_ID_IDX], &dev_id, 2); + memcpy(&tx_sync_msg[ANCHOR_ID_IDX], &dev_id, 2); + memcpy(&tx_nearresp_msg[ANCHOR_ID_IDX], &dev_id, 2); + memcpy(&tx_nearpoll_msg[TAG_ID_IDX], &dev_id, 2); + memcpy(&tx_nearfinal_msg[TAG_ID_IDX], &dev_id, 2); +} +uint16_t Checksum_u16(uint8_t* pdata, uint32_t len) { uint16_t sum = 0; uint32_t i; @@ -164,32 +164,32 @@ extern uint8_t g_pairstart; void tag_sleep_configuraion(void) { - dwt_configuresleep(0x940, 0x7); - dwt_entersleep(); + dwt_configuresleep(0x940, 0x7); + dwt_entersleep(); } extern uint8_t g_start_send_flag; u8 g_start_sync_flag; void SyncPoll(u8 sync_seq) -{u8 result; +{ u8 result; // g_start_sync_flag=1; //中断模式,退出终端后,需要重新来过 - dwt_forcetrxoff(); //关闭接收,以防在RX ON 状态 - - - tx_sync_msg[SYNC_SEQ_IDX]=sync_seq; - memcpy(&tx_sync_msg[ANCHOR_ID_IDX],&dev_id,4); - dwt_writetxdata(sizeof(tx_sync_msg), tx_sync_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 - dwt_writetxfctrl(sizeof(tx_sync_msg), 0);//设置超宽带发送数据长度 - dwt_starttx(DWT_START_TX_IMMEDIATE); - if(result==0) - { - while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))//不断查询芯片状态直到发送完成 - { }; - } - dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS);//清楚标志位 - - dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 - dwt_rxenable(0);//打开接收 + dwt_forcetrxoff(); //关闭接收,以防在RX ON 状态 + + + tx_sync_msg[SYNC_SEQ_IDX]=sync_seq; + memcpy(&tx_sync_msg[ANCHOR_ID_IDX],&dev_id,4); + dwt_writetxdata(sizeof(tx_sync_msg), tx_sync_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 + dwt_writetxfctrl(sizeof(tx_sync_msg), 0);//设置超宽带发送数据长度 + dwt_starttx(DWT_START_TX_IMMEDIATE); + if(result==0) + { + while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))//不断查询芯片状态直到发送完成 + { }; + } + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS);//清楚标志位 + + dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 + dwt_rxenable(0);//打开接收 } uint16_t g_Resttimer; uint8_t result; @@ -213,35 +213,39 @@ extern uint32_t tagpos_binary; void SetNextPollTime(u16 time) { - current_slotnum++; - if(current_slotnum==total_slotnum) - current_slotnum-=total_slotnum; - //time=5; - target_time=((current_slotnum*g_com_map[COM_INTERVAL])+time); + current_slotnum++; + if(current_slotnum==total_slotnum) + current_slotnum-=total_slotnum; + //time=5; + target_time=((current_slotnum*g_com_map[COM_INTERVAL])+time); - last_time=target_time; - if(target_time>=990&&target_time<992) - { - current_slotnum++; - target_time+=g_com_map[COM_INTERVAL]; - tagslotpos=GetRandomSlotPos(rec_tagpos_binary|tagpos_binary); - tyncpoll_time = (tagslotpos--%max_slotpos)*slottime; - } - if(target_time>=1000) - {target_time-=1000;} - if(target_time<0) - {target_time+=1000;} + last_time=target_time; + if(target_time>=990&&target_time<992) + { + current_slotnum++; + target_time+=g_com_map[COM_INTERVAL]; + tagslotpos=GetRandomSlotPos(rec_tagpos_binary|tagpos_binary); + tyncpoll_time = (tagslotpos--%max_slotpos)*slottime; + } + if(target_time>=1000) + { + target_time-=1000; + } + if(target_time<0) + { + target_time+=1000; + } } u8 FindNearBasePos(u16 baseid) { - u8 i; - for(i=0;i<last_nearbase_num;i++) - { - if(baseid==nearbaseid_list[i]) - return i; - } - return i; + u8 i; + for(i=0; i<last_nearbase_num; i++) + { + if(baseid==nearbaseid_list[i]) + return i; + } + return i; } u8 recbase_num=0; #define CHANGE_BASE_THRESHOLD 5 @@ -270,66 +274,66 @@ // }else{ // change_base_count=0; // } -// last_mainbase_id=nearbaseid_list[nearbase_minpos]; +// last_mainbase_id=nearbaseid_list[nearbase_minpos]; // }else{ // change_base_count=0; // } //} uint8_t GetRandomValue(void) { - uint8_t random_value=0,temp_adc,i; - for(i=0;i<8;i++) - { - temp_adc=Get_ADC_Value(); - random_value=random_value|((temp_adc&0x01)<<i); - } - return random_value; + uint8_t random_value=0,temp_adc,i; + for(i=0; i<8; i++) + { + temp_adc=Get_ADC_Value(); + random_value=random_value|((temp_adc&0x01)<<i); + } + return random_value; } u8 GetRandomSlotPos(uint32_t emptyslot) { - u8 i,temp_value; - temp_value = GetRandomValue(); - for(i=temp_value%max_slotpos;i<max_slotpos;i++) - { - if(((emptyslot>>i)&0x1)==0) - { - return i; - } - } - - for(i=1;i<max_slotpos;i++) - { - if(((emptyslot>>i)&0x1)==0) - { - return i; - } - } -return max_slotpos-1; + u8 i,temp_value; + temp_value = GetRandomValue(); + for(i=temp_value%max_slotpos; i<max_slotpos; i++) + { + if(((emptyslot>>i)&0x1)==0) + { + return i; + } + } + + for(i=1; i<max_slotpos; i++) + { + if(((emptyslot>>i)&0x1)==0) + { + return i; + } + } + return max_slotpos-1; } dwt_rxdiag_t d1; u8 test=0; u8 anclost_times=0; u8 exsistbase_list[MAX_NEARBASE_NUM],report_num,get_newbase=0; u16 temp_sync_timer1,temp_sync_timer2; - double firstpath_power, rx_power; - double f1, f2, r1, r2; +double firstpath_power, rx_power; +double f1, f2, r1, r2; uint16_t F1,F2,F3,N,C; double B = 131072; double A = 121.74; double min_power; double LOS(dwt_rxdiag_t *dia) { - F1 = dia->firstPathAmp1; - F2 = dia->firstPathAmp2; - F3 = dia->firstPathAmp3; - N = dia->rxPreamCount; - C = dia->maxGrowthCIR; - + F1 = dia->firstPathAmp1; + F2 = dia->firstPathAmp2; + F3 = dia->firstPathAmp3; + N = dia->rxPreamCount; + C = dia->maxGrowthCIR; + firstpath_power=10* log10((F1*F1+F2*F2+F3*F3)/(N*N))-A; rx_power=10*log10(C*B/(N*N))-A; - // min_power = - 10 * log10((F1 *F1 + F2 * F2 + F3 * F3) / (C *B)); + // min_power = - 10 * log10((F1 *F1 + F2 * F2 + F3 * F3) / (C *B)); return min_power; - } +} u8 nearmsg_mainbase=0,rec_tagpos_emptylist[32]; @@ -341,25 +345,25 @@ int32_t tagdist_list[TAG_NUM_IN_SYS]; void TagListUpdate(void) { - u16 i,j=0,temp[TAG_NUM_IN_SYS]; - for(i=0;i<taglist_num;i++) - { - if(tagofflinetime[i]++<QUIT_SLOT_TIME) - { - tagid_list[j]=tagid_list[i]; - tagofflinetime[j++]=tagofflinetime[i]; - } - } - taglist_num=j; + u16 i,j=0,temp[TAG_NUM_IN_SYS]; + for(i=0; i<taglist_num; i++) + { + if(tagofflinetime[i]++<QUIT_SLOT_TIME) + { + tagid_list[j]=tagid_list[i]; + tagofflinetime[j++]=tagofflinetime[i]; + } + } + taglist_num=j; } u16 CmpTagInList(u16 tagid) -{u16 i; - for(i=0;i<taglist_num;i++) - { - if(memcmp(&tagid,&tagid_list[i],2)==0) - break; - } - return i; +{ u16 i; + for(i=0; i<taglist_num; i++) + { + if(memcmp(&tagid,&tagid_list[i],2)==0) + break; + } + return i; } u8 misdist_num[TAG_NUM_IN_SYS],seize_anchor,waittagconfig_reponse,motorstate=0; uint32_t frame_len; @@ -367,108 +371,108 @@ uint8_t rec_nearbase_num,anc_report_num; void Anchor_RecPoll(void) { - tmp_time=TIM3->CNT; - memcpy(&tx_resp_msg[ANCTIMEMS],&sync_timer,2); - memcpy(&tx_resp_msg[ANCTIMEUS],&tmp_time,2); - memcpy(&tx_resp_msg[TAGSLOTPOS],&taglist_pos,1); - - poll_rx_ts = get_rx_timestamp_u64();//获得Poll包接收时间T2 + tmp_time=TIM3->CNT; + memcpy(&tx_resp_msg[ANCTIMEMS],&sync_timer,2); + memcpy(&tx_resp_msg[ANCTIMEUS],&tmp_time,2); + memcpy(&tx_resp_msg[TAGSLOTPOS],&taglist_pos,1); - resp_tx_time = (poll_rx_ts + (POLL_RX_TO_RESP_TX_DLY_UUS * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。 - dwt_setdelayedtrxtime(resp_tx_time);//设置Response发送时间T3 - dwt_setrxaftertxdelay(RESP_TX_TO_FINAL_RX_DLY_UUS);//设置发送完成后开启接收延迟时间 - dwt_setrxtimeout(FINAL_RX_TIMEOUT_UUS);//接收超时时间 - - memcpy(&tx_resp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4); - memcpy(&tx_resp_msg[TAG_ID_IDX],&tag_id_recv,2); - - dwt_writetxdata(sizeof(tx_resp_msg), tx_resp_msg, 0);//写入发送数据 - dwt_writetxfctrl(sizeof(tx_resp_msg), 0);//设定发送长度 - result = dwt_starttx(DWT_START_TX_DELAYED | DWT_RESPONSE_EXPECTED);//延迟发送,等待接收 + poll_rx_ts = get_rx_timestamp_u64();//获得Poll包接收时间T2 - - frame_seq_nb2 = rx_buffer[SEQUENCE_IDX]; - if(result==0) - { - while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))///不断查询芯片状态直到接收成功或者出现错误 - { }; - } - if (status_reg & SYS_STATUS_RXFCG)//接收成功 - { - dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚标志位 - frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;//数据长度 - dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据 - if (rx_buffer[MESSAGE_TYPE_IDX] == DISCOVERFINAL&&!memcmp(&rx_buffer[TAG_ID_IDX],&tag_id_recv,2)) //判断是否为Final包 - { - uint32_t poll_tx_ts, resp_rx_ts, final_tx_ts; - uint32_t poll_rx_ts_32, resp_tx_ts_32, final_rx_ts_32; - double Ra, Rb, Da, Db; - int64_t tof_dtu; - resp_tx_ts = get_tx_timestamp_u64();//获得response发送时间T3 - final_rx_ts = get_rx_timestamp_u64();//获得final接收时间T6 - final_msg_get_ts(&rx_buffer[FINAL_MSG_POLL_TX_TS_IDX], &poll_tx_ts);//从接收数据中读取T1,T4,T5 - final_msg_get_ts(&rx_buffer[FINAL_MSG_RESP_RX_TS_IDX], &resp_rx_ts); - final_msg_get_ts(&rx_buffer[FINAL_MSG_FINAL_TX_TS_IDX], &final_tx_ts); - poll_rx_ts_32 = (uint32_t)poll_rx_ts;//使用32位数据计算 - resp_tx_ts_32 = (uint32_t)resp_tx_ts; - final_rx_ts_32 = (uint32_t)final_rx_ts; - Ra = (double)(resp_rx_ts - poll_tx_ts);//Tround1 = T4 - T1 - Rb = (double)(final_rx_ts_32 - resp_tx_ts_32);//Tround2 = T6 - T3 - Da = (double)(final_tx_ts - resp_rx_ts);//Treply2 = T5 - T4 - Db = (double)(resp_tx_ts_32 - poll_rx_ts_32);//Treply1 = T3 - T2 - tof_dtu = (int64_t)((Ra * Rb - Da * Db) / (Ra + Rb + Da + Db));//计算公式 - tof = tof_dtu * DWT_TIME_UNITS; - distance = tof * SPEED_OF_LIGHT;//距离=光速*飞行时间 - dist_no_bias = distance - dwt_getrangebias(config.chan, (float)distance, config.prf); //距离减去矫正系数 - dist_cm = dist_no_bias * 100; //dis 为单位为cm的距离 - /*--------------------------以下为非测距逻辑------------------------*/ - //dist_cm=33000; - - LED0_BLINK; //每成功一次通讯则闪烁一次 - dis_after_filter=dist_cm; - hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]; -if(hex_dist>-1000&&hex_dist<200000) - { - g_flag_Taggetdist[taglist_pos]=0; - if(abs(hex_dist-his_dist[taglist_pos])<1500||misdist_num[taglist_pos]>3) - { - misdist_num[taglist_pos]=0; - tagdist_list[taglist_pos] = hex_dist; - his_dist[taglist_pos]=hex_dist; - g_Tagdist[taglist_pos]=hex_dist; - #ifndef USART_INTEGRATE_OUTPUT - usart_send[2] = 1;//正常模式 - usart_send[3] = 17;//数据段长度 - usart_send[4] = frame_seq_nb2;//数据段长度 - memcpy(&usart_send[5],&tag_id_recv,2); - memcpy(&usart_send[7],&dev_id,2); - memcpy(&usart_send[9],&tagdist_list[taglist_pos],4); - usart_send[13] = battary; - usart_send[14] = button; - usart_send[15] = firstpath_power; - usart_send[16] = (rx_power-firstpath_power)*10; - usart_send[17] = tag_frequency; - usart_send[18] = tag_slotpos; - checksum = Checksum_u16(&usart_send[2],17); - memcpy(&usart_send[19],&checksum,2); - UART_PushFrame(usart_send,21); - #else - memcpy(&usart_send_anc[4+6*anc_report_num],&tag_id_recv,2); - memcpy(&usart_send_anc[6+6*anc_report_num],&tagdist_list[taglist_pos],4); - anc_report_num++; - #endif - #ifdef DEBUG_INF - printf("序号:%d\r\n",frame_seq_nb2); - #endif - }else{ - // printf("%d",hex_dist); - misdist_num[taglist_pos]++; - } - } - } - }else{ - dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); - } + resp_tx_time = (poll_rx_ts + (POLL_RX_TO_RESP_TX_DLY_UUS * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。 + dwt_setdelayedtrxtime(resp_tx_time);//设置Response发送时间T3 + dwt_setrxaftertxdelay(RESP_TX_TO_FINAL_RX_DLY_UUS);//设置发送完成后开启接收延迟时间 + dwt_setrxtimeout(FINAL_RX_TIMEOUT_UUS);//接收超时时间 + + memcpy(&tx_resp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4); + memcpy(&tx_resp_msg[TAG_ID_IDX],&tag_id_recv,2); + + dwt_writetxdata(sizeof(tx_resp_msg), tx_resp_msg, 0);//写入发送数据 + dwt_writetxfctrl(sizeof(tx_resp_msg), 0);//设定发送长度 + result = dwt_starttx(DWT_START_TX_DELAYED | DWT_RESPONSE_EXPECTED);//延迟发送,等待接收 + + + frame_seq_nb2 = rx_buffer[SEQUENCE_IDX]; + if(result==0) + { + while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))///不断查询芯片状态直到接收成功或者出现错误 + { }; + } + if (status_reg & SYS_STATUS_RXFCG)//接收成功 + { + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚标志位 + frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;//数据长度 + dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据 + if (rx_buffer[MESSAGE_TYPE_IDX] == DISCOVERFINAL&&!memcmp(&rx_buffer[TAG_ID_IDX],&tag_id_recv,2)) //判断是否为Final包 + { + uint32_t poll_tx_ts, resp_rx_ts, final_tx_ts; + uint32_t poll_rx_ts_32, resp_tx_ts_32, final_rx_ts_32; + double Ra, Rb, Da, Db; + int64_t tof_dtu; + resp_tx_ts = get_tx_timestamp_u64();//获得response发送时间T3 + final_rx_ts = get_rx_timestamp_u64();//获得final接收时间T6 + final_msg_get_ts(&rx_buffer[FINAL_MSG_POLL_TX_TS_IDX], &poll_tx_ts);//从接收数据中读取T1,T4,T5 + final_msg_get_ts(&rx_buffer[FINAL_MSG_RESP_RX_TS_IDX], &resp_rx_ts); + final_msg_get_ts(&rx_buffer[FINAL_MSG_FINAL_TX_TS_IDX], &final_tx_ts); + poll_rx_ts_32 = (uint32_t)poll_rx_ts;//使用32位数据计算 + resp_tx_ts_32 = (uint32_t)resp_tx_ts; + final_rx_ts_32 = (uint32_t)final_rx_ts; + Ra = (double)(resp_rx_ts - poll_tx_ts);//Tround1 = T4 - T1 + Rb = (double)(final_rx_ts_32 - resp_tx_ts_32);//Tround2 = T6 - T3 + Da = (double)(final_tx_ts - resp_rx_ts);//Treply2 = T5 - T4 + Db = (double)(resp_tx_ts_32 - poll_rx_ts_32);//Treply1 = T3 - T2 + tof_dtu = (int64_t)((Ra * Rb - Da * Db) / (Ra + Rb + Da + Db));//计算公式 + tof = tof_dtu * DWT_TIME_UNITS; + distance = tof * SPEED_OF_LIGHT;//距离=光速*飞行时间 + dist_no_bias = distance - dwt_getrangebias(config.chan, (float)distance, config.prf); //距离减去矫正系数 + dist_cm = dist_no_bias * 100; //dis 为单位为cm的距离 + /*--------------------------以下为非测距逻辑------------------------*/ + //dist_cm=33000; + + LED0_BLINK; //每成功一次通讯则闪烁一次 + dis_after_filter=dist_cm; + hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]; + if(hex_dist>-1000&&hex_dist<200000) + { + g_flag_Taggetdist[taglist_pos]=0; + if(abs(hex_dist-his_dist[taglist_pos])<1500||misdist_num[taglist_pos]>3) + { + misdist_num[taglist_pos]=0; + tagdist_list[taglist_pos] = hex_dist; + his_dist[taglist_pos]=hex_dist; + g_Tagdist[taglist_pos]=hex_dist; +#ifndef USART_INTEGRATE_OUTPUT + usart_send[2] = 1;//正常模式 + usart_send[3] = 17;//数据段长度 + usart_send[4] = frame_seq_nb2;//数据段长度 + memcpy(&usart_send[5],&tag_id_recv,2); + memcpy(&usart_send[7],&dev_id,2); + memcpy(&usart_send[9],&tagdist_list[taglist_pos],4); + usart_send[13] = battary; + usart_send[14] = button; + usart_send[15] = firstpath_power; + usart_send[16] = (rx_power-firstpath_power)*10; + usart_send[17] = tag_frequency; + usart_send[18] = tag_slotpos; + checksum = Checksum_u16(&usart_send[2],17); + memcpy(&usart_send[19],&checksum,2); + UART_PushFrame(usart_send,21); +#else + memcpy(&usart_send_anc[4+6*anc_report_num],&tag_id_recv,2); + memcpy(&usart_send_anc[6+6*anc_report_num],&tagdist_list[taglist_pos],4); + anc_report_num++; +#endif +#ifdef DEBUG_INF + printf("序号:%d\r\n",frame_seq_nb2); +#endif + } else { + // printf("%d",hex_dist); + misdist_num[taglist_pos]++; + } + } + } + } else { + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); + } } uint32_t time_monitor[10]; extern uint16_t configremotetagID; @@ -483,163 +487,163 @@ u8 tagpossend_flag; u8 Anchor_RecNearPoll(u8 ancrec_nearbasepos) //0 mainbase 1 first near_base { - - tmp_time=TIM3->CNT; - memcpy(&tx_nearresp_msg[NR_NEARSWITCH_DISTANCE],&g_com_map[NEARSWITCH_DISTANCE_INDEX],2); - memcpy(&tx_nearresp_msg[ANCTIMEMS],&sync_timer,2); - memcpy(&tx_nearresp_msg[ANCTIMEUS],&tmp_time,2); - memcpy(&tx_nearresp_msg[TAGSLOTPOS],&taglist_pos,2); - memcpy(&tx_nearresp_msg[TAG_ID_IDX],&tag_id_recv,2); - poll_rx_ts = get_rx_timestamp_u64();//获得Poll包接收时间T2 - resp_tx_time = (poll_rx_ts + ((POLL_RX_TO_RESP_TX_DLY_UUS+(ancrec_nearbasepos)*DELAY_BETWEEN_TWO_FRAME_UUS) * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。 - dwt_setdelayedtrxtime(resp_tx_time);//设置Response发送时间T3 - dwt_setrxaftertxdelay(RESP_TX_TO_FINAL_RX_DLY_UUS+(rec_nearbase_num+1-ancrec_nearbasepos)*DELAY_BETWEEN_TWO_FRAME_UUS);//设置发送完成后开启接收延迟时间 - dwt_setrxtimeout(FINAL_RX_TIMEOUT_UUS);//接收超时时间 - //dwt_readdiagnostics(&d1); - if(tagpos[taglist_pos].tagid==tag_id_recv&&userdatasend_flag[taglist_pos] == 1) + tmp_time=TIM3->CNT; + memcpy(&tx_nearresp_msg[NR_NEARSWITCH_DISTANCE],&g_com_map[NEARSWITCH_DISTANCE_INDEX],2); + memcpy(&tx_nearresp_msg[ANCTIMEMS],&sync_timer,2); + memcpy(&tx_nearresp_msg[ANCTIMEUS],&tmp_time,2); + memcpy(&tx_nearresp_msg[TAGSLOTPOS],&taglist_pos,2); + memcpy(&tx_nearresp_msg[TAG_ID_IDX],&tag_id_recv,2); + poll_rx_ts = get_rx_timestamp_u64();//获得Poll包接收时间T2 + + resp_tx_time = (poll_rx_ts + ((POLL_RX_TO_RESP_TX_DLY_UUS+(ancrec_nearbasepos)*DELAY_BETWEEN_TWO_FRAME_UUS) * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。 + dwt_setdelayedtrxtime(resp_tx_time);//设置Response发送时间T3 + dwt_setrxaftertxdelay(RESP_TX_TO_FINAL_RX_DLY_UUS+(rec_nearbase_num+1-ancrec_nearbasepos)*DELAY_BETWEEN_TWO_FRAME_UUS);//设置发送完成后开启接收延迟时间 + dwt_setrxtimeout(FINAL_RX_TIMEOUT_UUS);//接收超时时间 + //dwt_readdiagnostics(&d1); + if(tagpos[taglist_pos].tagid==tag_id_recv&&userdatasend_flag[taglist_pos] == 1) + { + memcpy(&tx_nearresp_msg[TAGPOS_INDEX],&tagpos[taglist_pos],tagpos[taglist_pos].datalen+3); + tagpossend_flag = 1; + } else { + tagpossend_flag = 0; + } + if(new_tagid) + { + tagdist_list[taglist_pos]=0x1ffff; + } + memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4); + memcpy(&tx_nearresp_msg[ANC_SIGNALPOWER],&signalpower_list[taglist_pos],2); + tx_nearresp_msg[MAINBASE_INDEX]=flag_syncbase; + tx_nearresp_msg[MESSAGE_TYPE_IDX]=POS_RESPONSE; + //tx_nearresp_msg[MOTORSTATE_INDEX]=(remotesend_state<<4)|motorstate; + waittagconfig_reponse=0; + finalsend = 0; + if(pwtag.remain_time>0) + { uint8_t i; + for(i=0; i<pwtag.groupnum; i++) + { + if(pwtag.groupid[i][0]<=tag_id_recv&&tag_id_recv<=pwtag.groupid[i][1]) { - memcpy(&tx_nearresp_msg[TAGPOS_INDEX],&tagpos[taglist_pos],tagpos[taglist_pos].datalen+3); - tagpossend_flag = 1; - }else{ - tagpossend_flag = 0; + remotesend_state=1; + tx_nearresp_msg[MOTORSTATE_INDEX]=(remotesend_state<<4)|motorstate; + remotetag_paralen = 2+3; + remotetag_para[0] = 2; + remotetag_para[1] = pwtag.index; + remotetag_para[2] = 2; + memcpy(&remotetag_para[3],&pwtag.group_interval[i],2); + memcpy(&tx_nearresp_msg[REMOTEPARA_INDEX],remotetag_para,remotetag_paralen); + dwt_writetxdata(24+remotetag_paralen, tx_nearresp_msg, 0);//写入发送数据 + dwt_writetxfctrl(24+remotetag_paralen, 0);//设定发送长度 + remotesend_state=0; + finalsend = 1; + break; } - if(new_tagid) - { - tagdist_list[taglist_pos]=0x1ffff; - } - memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4); - memcpy(&tx_nearresp_msg[ANC_SIGNALPOWER],&signalpower_list[taglist_pos],2); - tx_nearresp_msg[MAINBASE_INDEX]=flag_syncbase; - tx_nearresp_msg[MESSAGE_TYPE_IDX]=POS_RESPONSE; - //tx_nearresp_msg[MOTORSTATE_INDEX]=(remotesend_state<<4)|motorstate; - waittagconfig_reponse=0; - finalsend = 0; - if(pwtag.remain_time>0) - {uint8_t i; - for(i=0;i<pwtag.groupnum;i++) - { - if(pwtag.groupid[i][0]<=tag_id_recv&&tag_id_recv<=pwtag.groupid[i][1]) - { - remotesend_state=1; - tx_nearresp_msg[MOTORSTATE_INDEX]=(remotesend_state<<4)|motorstate; - remotetag_paralen = 2+3; - remotetag_para[0] = 2; - remotetag_para[1] = pwtag.index; - remotetag_para[2] = 2; - memcpy(&remotetag_para[3],&pwtag.group_interval[i],2); - memcpy(&tx_nearresp_msg[REMOTEPARA_INDEX],remotetag_para,remotetag_paralen); - dwt_writetxdata(24+remotetag_paralen, tx_nearresp_msg, 0);//写入发送数据 - dwt_writetxfctrl(24+remotetag_paralen, 0);//设定发送长度 - remotesend_state=0; - finalsend = 1; - break; - } - } - }else{ - - } - - if(finalsend == 0) - { - memcpy(&tx_nearresp_msg[MAXRANGE_DISTANCE],&g_com_map[MAXRANGDIST_INDEX],2); - dwt_writetxdata(28+tagpossend_flag*(tagpos[taglist_pos].datalen+3), tx_nearresp_msg, 0);//д???????? - dwt_writetxfctrl(28+tagpossend_flag*(tagpos[taglist_pos].datalen+3), 0);//?趨??????? - } - + } + } else { + + } + + if(finalsend == 0) + { + memcpy(&tx_nearresp_msg[MAXRANGE_DISTANCE],&g_com_map[MAXRANGDIST_INDEX],2); + dwt_writetxdata(28+tagpossend_flag*(tagpos[taglist_pos].datalen+3), tx_nearresp_msg, 0);//д???????? + dwt_writetxfctrl(28+tagpossend_flag*(tagpos[taglist_pos].datalen+3), 0);//?趨??????? + } + // if(remotesend_state&&tag_id_recv==configremotetagID) // { // memcpy(&tx_nearresp_msg[REMOTEPARA_INDEX],remotetag_para,remotetag_paralen); // dwt_writetxdata(22+remotetag_paralen, tx_nearresp_msg, 0);//写入发送数据 -// dwt_writetxfctrl(22+remotetag_paralen, 0);//设定发送长度 +// dwt_writetxfctrl(22+remotetag_paralen, 0);//设定发送长度 // waittagconfig_reponse=1; // }else{ - result = dwt_starttx(DWT_START_TX_DELAYED | DWT_RESPONSE_EXPECTED);//延迟发送,等待接收 + result = dwt_starttx(DWT_START_TX_DELAYED | DWT_RESPONSE_EXPECTED);//延迟发送,等待接收 - if(result==0) - { - while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))///不断查询芯片状态直到接收成功或者出现错误 - { }; - }else{ - result++; - } - - if (status_reg & SYS_STATUS_RXFCG)//接收成功 - { - - dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚标志位 - frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;//数据长度 - dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据 - if(seize_anchor&&memcmp(&rx_buffer[ANCHOR_ID_IDX],&dev_id,2)) //抢占anchor 失败 - { - return 1; - } - if (rx_buffer[MESSAGE_TYPE_IDX] == POS_FINAL&&!memcmp(&rx_buffer[TAG_ID_IDX],&tag_id_recv,2)) //判断是否为Final包 - { - - resp_tx_ts = get_tx_timestamp_u64();//获得response发送时间T3 - final_rx_ts = get_rx_timestamp_u64();//获得final接收时间T6 + if(result==0) + { + while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))///不断查询芯片状态直到接收成功或者出现错误 + { }; + } else { + result++; + } + + if (status_reg & SYS_STATUS_RXFCG)//接收成功 + { + + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG | SYS_STATUS_TXFRS);//清楚标志位 + frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFLEN_MASK;//数据长度 + dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据 + if(seize_anchor&&memcmp(&rx_buffer[ANCHOR_ID_IDX],&dev_id,2)) //抢占anchor 失败 + { + return 1; + } + if (rx_buffer[MESSAGE_TYPE_IDX] == POS_FINAL&&!memcmp(&rx_buffer[TAG_ID_IDX],&tag_id_recv,2)) //判断是否为Final包 + { + + resp_tx_ts = get_tx_timestamp_u64();//获得response发送时间T3 + final_rx_ts = get_rx_timestamp_u64();//获得final接收时间T6 // dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 // dwt_rxenable(0);//打开接收 - - final_msg_get_ts(&rx_buffer[FINAL_MSG_POLL_TX_TS_IDX], &poll_tx_ts);//从接收数据中读取T1,T4,T5 - final_msg_get_ts(&rx_buffer[FINAL_MSG_RESP_RX_NEARBASE_IDX+ancrec_nearbasepos*4], &resp_rx_ts); - final_msg_get_ts(&rx_buffer[FINAL_MSG_FINAL_TX_TS_IDX], &final_tx_ts); - poll_rx_ts_32 = (uint32_t)poll_rx_ts;//使用32位数据计算 - resp_tx_ts_32 = (uint32_t)resp_tx_ts; - final_rx_ts_32 = (uint32_t)final_rx_ts; -// time_monitor[1] = sync_timer*1000+TIM3->CNT; - Ra = (double)(resp_rx_ts - poll_tx_ts);//Tround1 = T4 - T1 - Rb = (double)(final_rx_ts_32 - resp_tx_ts_32);//Tround2 = T6 - T3 - Da = (double)(final_tx_ts - resp_rx_ts);//Treply2 = T5 - T4 - Db = (double)(resp_tx_ts_32 - poll_rx_ts_32);//Treply1 = T3 - T2 - tof_dtu = (int64_t)((Ra * Rb - Da * Db) / (Ra + Rb + Da + Db));//计算公式 - tof = tof_dtu * DWT_TIME_UNITS; - distance = tof * SPEED_OF_LIGHT;//距离=光速*飞行时间 - dist_no_bias = distance - dwt_getrangebias(config.chan, (float)distance, config.prf); //距离减去矫正系数 - dist_cm = dist_no_bias * 100; //dis 为单位为cm的距离 - dwt_readdiagnostics(&d1); -// time_monitor[2] = sync_timer*1000+TIM3->CNT; - LOS(&d1); - // time_monitor[3] = sync_timer*1000+TIM3->CNT; - /*--------------------------以下为非测距逻辑------------------------*/ - //dist_cm=33000; - //GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_RESET); - LED0_BLINK; //每成功一次通讯则闪烁一次 - dis_after_filter=dist_cm; - hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]; - userdatasend_flag[taglist_pos] =0; - if(hex_dist>-1000&&hex_dist<200000) - { - g_flag_Taggetdist[taglist_pos]=0; - if(abs(hex_dist-his_dist[taglist_pos])<1500||misdist_num[taglist_pos]>3) - { - goodtimes++; - misdist_num[taglist_pos]=0; - tagdist_list[taglist_pos] = hex_dist; - his_dist[taglist_pos]=hex_dist; - g_Tagdist[taglist_pos]=hex_dist; + final_msg_get_ts(&rx_buffer[FINAL_MSG_POLL_TX_TS_IDX], &poll_tx_ts);//从接收数据中读取T1,T4,T5 + final_msg_get_ts(&rx_buffer[FINAL_MSG_RESP_RX_NEARBASE_IDX+ancrec_nearbasepos*4], &resp_rx_ts); + final_msg_get_ts(&rx_buffer[FINAL_MSG_FINAL_TX_TS_IDX], &final_tx_ts); + + poll_rx_ts_32 = (uint32_t)poll_rx_ts;//使用32位数据计算 + resp_tx_ts_32 = (uint32_t)resp_tx_ts; + final_rx_ts_32 = (uint32_t)final_rx_ts; +// time_monitor[1] = sync_timer*1000+TIM3->CNT; + Ra = (double)(resp_rx_ts - poll_tx_ts);//Tround1 = T4 - T1 + Rb = (double)(final_rx_ts_32 - resp_tx_ts_32);//Tround2 = T6 - T3 + Da = (double)(final_tx_ts - resp_rx_ts);//Treply2 = T5 - T4 + Db = (double)(resp_tx_ts_32 - poll_rx_ts_32);//Treply1 = T3 - T2 + tof_dtu = (int64_t)((Ra * Rb - Da * Db) / (Ra + Rb + Da + Db));//计算公式 + tof = tof_dtu * DWT_TIME_UNITS; + distance = tof * SPEED_OF_LIGHT;//距离=光速*飞行时间 + dist_no_bias = distance - dwt_getrangebias(config.chan, (float)distance, config.prf); //距离减去矫正系数 + dist_cm = dist_no_bias * 100; //dis 为单位为cm的距离 + dwt_readdiagnostics(&d1); +// time_monitor[2] = sync_timer*1000+TIM3->CNT; + LOS(&d1); + // time_monitor[3] = sync_timer*1000+TIM3->CNT; + /*--------------------------以下为非测距逻辑------------------------*/ + //dist_cm=33000; + //GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_RESET); + LED0_BLINK; //每成功一次通讯则闪烁一次 + dis_after_filter=dist_cm; + hex_dist = dist_cm+(int16_t)g_com_map[DIST_OFFSET]; + userdatasend_flag[taglist_pos] =0; + if(hex_dist>-1000&&hex_dist<200000) + { + g_flag_Taggetdist[taglist_pos]=0; + if(abs(hex_dist-his_dist[taglist_pos])<1500||misdist_num[taglist_pos]>3) + { + goodtimes++; + misdist_num[taglist_pos]=0; + tagdist_list[taglist_pos] = hex_dist; + his_dist[taglist_pos]=hex_dist; + g_Tagdist[taglist_pos]=hex_dist; signalpower_list[taglist_pos] = ((uint8_t)firstpath_power<<8)|(uint8_t)((rx_power-firstpath_power)*10); // #ifndef USART_INTEGRATE_OUTPUT - usart_send[2] = 1;//正常模式 - usart_send[3] = 17;//数据段长度 - usart_send[4] = frame_seq_nb2;//数据段长度 - memcpy(&usart_send[5],&tag_id_recv,2); - memcpy(&usart_send[7],&dev_id,2); - memcpy(&usart_send[9],&tagdist_list[taglist_pos],4); - usart_send[13] = battary; - usart_send[14] = button; - usart_send[15] = firstpath_power; - usart_send[16] = (rx_power-firstpath_power)*10; - usart_send[17] = tag_frequency; - usart_send[18] = tag_slotpos; - checksum = Checksum_u16(&usart_send[2],17); - memcpy(&usart_send[19],&checksum,2); - //UART_PushFrame(usart_send,21); -// #else + usart_send[2] = 1;//正常模式 + usart_send[3] = 17;//数据段长度 + usart_send[4] = frame_seq_nb2;//数据段长度 + memcpy(&usart_send[5],&tag_id_recv,2); + memcpy(&usart_send[7],&dev_id,2); + memcpy(&usart_send[9],&tagdist_list[taglist_pos],4); + usart_send[13] = battary; + usart_send[14] = button; + usart_send[15] = firstpath_power; + usart_send[16] = (rx_power-firstpath_power)*10; + usart_send[17] = tag_frequency; + usart_send[18] = tag_slotpos; + checksum = Checksum_u16(&usart_send[2],17); + memcpy(&usart_send[19],&checksum,2); + //UART_PushFrame(usart_send,21); +// #else // memcpy(&usart_send_anc[4+6*anc_report_num],&tag_id_recv,2); // memcpy(&usart_send_anc[6+6*anc_report_num],&tagdist_list[taglist_pos],4); // anc_report_num++; @@ -647,43 +651,43 @@ // #ifdef DEBUG_INF // printf("序号:%d\r\n",frame_seq_nb2); // #endif - }else{ - // printf("%d",hex_dist); - misdist_num[taglist_pos]++; - } - }else{ - errortimes++; - usart_send[13] = battary; - } - if(rx_buffer[TAGCONFIGSUCCESS_INDEX]==1) - { - - remotesend_state = 0; - usart_send[2] = 7;//正常模式 - usart_send[3] = 5;//数据段长度 - memcpy(&usart_send[4],&tag_id_recv,2); - usart_send[6] = 1;//数据段长度 - checksum = Checksum_u16(&usart_send[2],5); - memcpy(&usart_send[7],&checksum,2); - UART_PushFrame(usart_send,9); - } - } - }else{ - #ifdef DEBUG_INF - printf("final包失败:%x/n",status_reg); - #endif - dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); - } + } else { + // printf("%d",hex_dist); + misdist_num[taglist_pos]++; + } + } else { + errortimes++; + usart_send[13] = battary; + } + if(rx_buffer[TAGCONFIGSUCCESS_INDEX]==1) + { + + remotesend_state = 0; + usart_send[2] = 7;//正常模式 + usart_send[3] = 5;//数据段长度 + memcpy(&usart_send[4],&tag_id_recv,2); + usart_send[6] = 1;//数据段长度 + checksum = Checksum_u16(&usart_send[2],5); + memcpy(&usart_send[7],&checksum,2); + UART_PushFrame(usart_send,9); + } + } + } else { +#ifdef DEBUG_INF + printf("final包失败:%x/n",status_reg); +#endif + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); + } } void Anchor_Start(void) { -dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG); - g_start_sync_flag=0; + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG); + g_start_sync_flag=0; - dwt_setrxtimeout(1000);//设定接收超时时间,0位没有超时时间 - dwt_rxenable(0);//打开接收 + dwt_setrxtimeout(1000);//设定接收超时时间,0位没有超时时间 + dwt_rxenable(0);//打开接收 // while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR))&&!g_start_send_flag&&!g_start_sync_flag)//不断查询芯片状态直到接收成功或者出现错误 -// { +// { // //IdleTask(); // }; } @@ -691,7 +695,7 @@ extern u16 synclost_count; uint32_t current_syncid=0xffffffff,synclost_timer; extern u8 flag_syncbase,waitsync_flag; -u8 tagpos_rec[50],tagpos_send[50],ancidlist_num,zero_matrix[100]={0}; +u8 tagpos_rec[50],tagpos_send[50],ancidlist_num,zero_matrix[100]= {0}; u16 ancidlist_rec[20],ancidlist_send[20]; u16 recnearbaselist_id[30],rec_taganc_signalpower_list[11]; int32_t recnearbaselist_dist[30]; @@ -699,53 +703,53 @@ u16 timm = 0; void Anchor_App(void) { - - u8 send_len,i; - u16 tempid; - uint32_t rec_syncid; - + + u8 send_len,i; + u16 tempid; + uint32_t rec_syncid; + // dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR| SYS_STATUS_TXFRS |SYS_STATUS_RXFCG); // g_start_sync_flag=0; // dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 // dwt_rxenable(0);//打开接收 -// GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET); +// GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET); // while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR)))//不断查询芯片状态直到接收成功或者出现错误 -// { +// { // //IdleTask(); // }; -//GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_RESET); - dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 0); - status_reg = dwt_read32bitreg(SYS_STATUS_ID); - if (status_reg & SYS_STATUS_RXFCG)//成功接收 - { u16 tag_recv_interval; - float temp_tagpos; +//GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_RESET); + dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 0); + status_reg = dwt_read32bitreg(SYS_STATUS_ID); + if (status_reg & SYS_STATUS_RXFCG)//成功接收 + { u16 tag_recv_interval; + float temp_tagpos; // time_monitor[0] = sync_timer*1000+TIM3->CNT; - g_Resttimer=0; - dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG);//清除标志位 - frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;//获得接收数据长度 - dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据 - memcpy(&anc_id_recv,&rx_buffer[ANCHOR_ID_IDX],2); - //将收到的tag_id分别写入各次通讯的包中,为多标签通讯服务,防止一次通讯中接收到不同ID标签的数据 - memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2); - switch(rx_buffer[MESSAGE_TYPE_IDX]) - { - uint16_t checksum; - case DISCOVERPOLL: - if (anchor_type == rx_buffer[ANCHOR_ID_IDX]&&g_com_map[NEARSWITCH_DISTANCE_INDEX] != 0) - { + g_Resttimer=0; + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_RXFCG);//清除标志位 + frame_len = dwt_read32bitreg(RX_FINFO_ID) & RX_FINFO_RXFL_MASK_1023;//获得接收数据长度 + dwt_readrxdata(rx_buffer, frame_len, 0);//读取接收数据 + memcpy(&anc_id_recv,&rx_buffer[ANCHOR_ID_IDX],2); + //将收到的tag_id分别写入各次通讯的包中,为多标签通讯服务,防止一次通讯中接收到不同ID标签的数据 + memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2); + switch(rx_buffer[MESSAGE_TYPE_IDX]) + { + uint16_t checksum; + case DISCOVERPOLL: + if (anchor_type == rx_buffer[ANCHOR_ID_IDX]&&g_com_map[NEARSWITCH_DISTANCE_INDEX] != 0) + { taglist_pos=CmpTagInList(tag_id_recv); - if(taglist_pos==taglist_num) - { - taglist_pos=taglist_num; - tagid_list[taglist_num++]=tag_id_recv; - - new_tagid=1; - }else{ - new_tagid=0; - } - tagofflinetime[taglist_pos]=0; - + if(taglist_pos==taglist_num) + { + taglist_pos=taglist_num; + tagid_list[taglist_num++]=tag_id_recv; + + new_tagid=1; + } else { + new_tagid=0; + } + tagofflinetime[taglist_pos]=0; + rec_nearbase_num=rx_buffer[NEARBASENUM_INDEX]; if(rec_nearbase_num>=30) { @@ -754,32 +758,32 @@ battary = rx_buffer[BATTARY_IDX]; button = rx_buffer[BUTTON_IDX]; frame_seq_nb2 = rx_buffer[SEQUENCE_IDX]; - tag_frequency = rx_buffer[NEARP_TAGFREQ_INDEX]; - tag_slotpos = rx_buffer[NEARP_TAGSLOTPOS_INDEX]; - - ////////////////基站汇总模式数据 - memcpy(&rec_tagheight,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*6],2); + tag_frequency = rx_buffer[NEARP_TAGFREQ_INDEX]; + tag_slotpos = rx_buffer[NEARP_TAGSLOTPOS_INDEX]; + + ////////////////基站汇总模式数据 + memcpy(&rec_tagheight,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*6],2); memcpy(&recnearbaselist_id,&rx_buffer[NEARBASEID_INDEX],rec_nearbase_num*2); memcpy(&recnearbaselist_dist,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*2],rec_nearbase_num*4); - Anchor_RecPoll(); - } - break; - case SPOLL: - //if (anchor_type == rx_buffer[ANC_TYPE_IDX]) + Anchor_RecPoll(); + } + break; + case SPOLL: + //if (anchor_type == rx_buffer[ANC_TYPE_IDX]) if(dev_id==anc_id_recv) { taglist_pos=CmpTagInList(tag_id_recv); - if(taglist_pos==taglist_num) - { - taglist_pos=taglist_num; - tagid_list[taglist_num++]=tag_id_recv; - - new_tagid=1; - }else{ - new_tagid=0; - } - tagofflinetime[taglist_pos]=0; - + if(taglist_pos==taglist_num) + { + taglist_pos=taglist_num; + tagid_list[taglist_num++]=tag_id_recv; + + new_tagid=1; + } else { + new_tagid=0; + } + tagofflinetime[taglist_pos]=0; + rec_nearbase_num=rx_buffer[NEARBASENUM_INDEX]; if(rec_nearbase_num>=30) { @@ -788,210 +792,210 @@ battary = rx_buffer[BATTARY_IDX]; button = rx_buffer[BUTTON_IDX]; frame_seq_nb2 = rx_buffer[SEQUENCE_IDX]; - tag_frequency = rx_buffer[NEARP_TAGFREQ_INDEX]; - tag_slotpos = rx_buffer[NEARP_TAGSLOTPOS_INDEX]; - - ////////////////基站汇总模式数据 - memcpy(&rec_tagheight,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*6],2); + tag_frequency = rx_buffer[NEARP_TAGFREQ_INDEX]; + tag_slotpos = rx_buffer[NEARP_TAGSLOTPOS_INDEX]; + + ////////////////基站汇总模式数据 + memcpy(&rec_tagheight,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*6],2); memcpy(&recnearbaselist_id,&rx_buffer[NEARBASEID_INDEX],rec_nearbase_num*2); memcpy(&recnearbaselist_dist,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*2],rec_nearbase_num*4); - usart_send[2] = 0x0c;//正常模式 - usart_send[3] = 15+8*(rec_nearbase_num);//数据段长度 - memcpy(&usart_send[4],&tag_id_recv,2); - usart_send[6] = rx_buffer[SEQUENCE_IDX]; - usart_send[7] = rx_buffer[SEQUENCEH_IDX]; - usart_send[8] = battary; - usart_send[9] = button; - memcpy(&usart_send[10],&rec_tagheight,2); - usart_send[12] = tag_frequency; - usart_send[13] = tag_slotpos; - usart_send[14] = 0; - usart_send[15] = 0; - usart_send[16] = rec_nearbase_num; - - memcpy(&usart_send[17],&recnearbaselist_id,2*rec_nearbase_num); - memcpy(&usart_send[17+rec_nearbase_num*2],&recnearbaselist_dist,4*rec_nearbase_num); - memcpy(&usart_send[17+rec_nearbase_num*6],zero_matrix,2*rec_nearbase_num); - - checksum = Checksum_u16(&usart_send[2],15+8*rec_nearbase_num); - memcpy(&usart_send[17+8*rec_nearbase_num],&checksum,2); - UART_PushFrame(usart_send,19+8*rec_nearbase_num); - Anchor_RecPoll(); + usart_send[2] = 0x0c;//正常模式 + usart_send[3] = 15+8*(rec_nearbase_num);//数据段长度 + memcpy(&usart_send[4],&tag_id_recv,2); + usart_send[6] = rx_buffer[SEQUENCE_IDX]; + usart_send[7] = rx_buffer[SEQUENCEH_IDX]; + usart_send[8] = battary; + usart_send[9] = button; + memcpy(&usart_send[10],&rec_tagheight,2); + usart_send[12] = tag_frequency; + usart_send[13] = tag_slotpos; + usart_send[14] = 0; + usart_send[15] = 0; + usart_send[16] = rec_nearbase_num; + + memcpy(&usart_send[17],&recnearbaselist_id,2*rec_nearbase_num); + memcpy(&usart_send[17+rec_nearbase_num*2],&recnearbaselist_dist,4*rec_nearbase_num); + memcpy(&usart_send[17+rec_nearbase_num*6],zero_matrix,2*rec_nearbase_num); + + checksum = Checksum_u16(&usart_send[2],15+8*rec_nearbase_num); + memcpy(&usart_send[17+8*rec_nearbase_num],&checksum,2); + UART_PushFrame(usart_send,19+8*rec_nearbase_num); + Anchor_RecPoll(); } - break; - case SYNC: - memcpy(&rec_syncid,&rx_buffer[ANCHOR_ID_IDX],4); - if(anc_id_recv==g_com_map[SYNCBASEID]) - { - synclost_count = 0; - flag_syncbase=0; - sync_seq=rx_buffer[SYNC_SEQ_IDX]+1; - TIM3->CNT = (sync_seq*325%1000)-27; - sync_timer = (sync_seq*325/1000); - synclost_timer=0; - if(g_com_map[BASESYNCSEQ]==2) - SyncPoll(sync_seq); - } - break; - case POS_MSG: - if(anc_id_recv==dev_id) - { - rx_buffer[TAGSLOTPOS]=taglist_pos; - tx_near_msg[MESSAGE_TYPE_IDX] = POS_MSG; - memcpy(&tx_near_msg[TAG_ID_IDX],&tag_id_recv,2); - memcpy(&tx_near_msg[NEARMSG_EMPTYSLOTPOS_INDEX],&tagpos_binary,4); - ancidlist_num=g_com_map[NEARBASE_NUM]; - tx_near_msg[NEARBASENUM_INDEX]=g_com_map[NEARBASE_NUM]; - memcpy(&tx_near_msg[NEARBASEID_INDEX],&g_com_map[NEARBASE_ID1],g_com_map[NEARBASE_NUM]*2); - send_len=21+ancidlist_num*2; - dwt_writetxdata(send_len, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 - dwt_writetxfctrl(send_len, 0);//设置超宽带发送数据长度 - dwt_starttx(DWT_START_TX_IMMEDIATE); - } - break; - case REG_POLL: - for(i=0;i<MAX_REGTAGNUM;i++) - { - if(tag_id_recv==regtag_map.tagid[i]&®tag_map.remain_time[i]>0) - { - tx_near_msg[REGR_TAGSLOTPOS_INDEX]=regtag_map.tag_slotpos[i]; - tx_near_msg[REGR_TAGFREQ_INDEX] = regtag_map.tag_frequency[i]; - memcpy(&tx_near_msg[TAG_ID_IDX],&tag_id_recv,2); - memcpy(&tx_near_msg[ANCHOR_ID_IDX],&dev_id,2); - tx_near_msg[MESSAGE_TYPE_IDX] = REG_RESPONSE; - ancidlist_num=g_com_map[NEARBASE_NUM]; - tx_near_msg[NEARBASENUM_INDEX]=g_com_map[NEARBASE_NUM]; - memcpy(&tx_near_msg[NEARBASEID_INDEX],&g_com_map[NEARBASE_ID1],g_com_map[NEARBASE_NUM]*2); - send_len=21+ancidlist_num*2; - dwt_writetxdata(send_len, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 - dwt_writetxfctrl(send_len, 0);//设置超宽带发送数据长度 - dwt_starttx(DWT_START_TX_IMMEDIATE); - regtag_map.tagid[i] = 0; - break; - } - - } - if(i==MAX_REGTAGNUM&&g_com_map[NEARSWITCH_DISTANCE_INDEX] != 0) - { - dwt_readdiagnostics(&d1); - LOS(&d1); - usart_send[2]=0x0a; - usart_send[3]=20; - memcpy(&usart_send[4],&dev_id,2); - memcpy(&usart_send[6],&tag_id_recv,2); - memcpy(&usart_send[8],&rx_buffer[10],9); - usart_send[17] = firstpath_power; - memcpy(&usart_send[18],&rx_buffer[19],2); - checksum = Checksum_u16(&usart_send[2],20); - memcpy(&usart_send[22],&checksum,2); - UART_PushFrame(usart_send,24); - } - break; - case POS_POLL: - // GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET); - - memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2); - taglist_pos=CmpTagInList(tag_id_recv); - if(taglist_pos==taglist_num) - { - taglist_pos=taglist_num; - tagid_list[taglist_num++]=tag_id_recv; - - new_tagid=1; - }else{ - new_tagid=0; - } - tagofflinetime[taglist_pos]=0; - temp_tagpos=round((float)(sync_timer%g_com_map[COM_INTERVAL])/slottime); - tagpos_rec[(u8)temp_tagpos]=1; - rec_nearbase_num=rx_buffer[NEARBASENUM_INDEX]; - if(rec_nearbase_num>30) + break; + case SYNC: + memcpy(&rec_syncid,&rx_buffer[ANCHOR_ID_IDX],4); + if(anc_id_recv==g_com_map[SYNCBASEID]) + { + synclost_count = 0; + flag_syncbase=0; + sync_seq=rx_buffer[SYNC_SEQ_IDX]+1; + TIM3->CNT = (sync_seq*325%1000)-27; + sync_timer = (sync_seq*325/1000); + synclost_timer=0; + if(g_com_map[BASESYNCSEQ]==2) + SyncPoll(sync_seq); + } + break; + case POS_MSG: + if(anc_id_recv==dev_id) + { + rx_buffer[TAGSLOTPOS]=taglist_pos; + tx_near_msg[MESSAGE_TYPE_IDX] = POS_MSG; + memcpy(&tx_near_msg[TAG_ID_IDX],&tag_id_recv,2); + memcpy(&tx_near_msg[NEARMSG_EMPTYSLOTPOS_INDEX],&tagpos_binary,4); + ancidlist_num=g_com_map[NEARBASE_NUM]; + tx_near_msg[NEARBASENUM_INDEX]=g_com_map[NEARBASE_NUM]; + memcpy(&tx_near_msg[NEARBASEID_INDEX],&g_com_map[NEARBASE_ID1],g_com_map[NEARBASE_NUM]*2); + send_len=21+ancidlist_num*2; + dwt_writetxdata(send_len, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 + dwt_writetxfctrl(send_len, 0);//设置超宽带发送数据长度 + dwt_starttx(DWT_START_TX_IMMEDIATE); + } + break; + case REG_POLL: + for(i=0; i<MAX_REGTAGNUM; i++) + { + if(tag_id_recv==regtag_map.tagid[i]&®tag_map.remain_time[i]>0) { + tx_near_msg[REGR_TAGSLOTPOS_INDEX]=regtag_map.tag_slotpos[i]; + tx_near_msg[REGR_TAGFREQ_INDEX] = regtag_map.tag_frequency[i]; + memcpy(&tx_near_msg[TAG_ID_IDX],&tag_id_recv,2); + memcpy(&tx_near_msg[ANCHOR_ID_IDX],&dev_id,2); + tx_near_msg[MESSAGE_TYPE_IDX] = REG_RESPONSE; + ancidlist_num=g_com_map[NEARBASE_NUM]; + tx_near_msg[NEARBASENUM_INDEX]=g_com_map[NEARBASE_NUM]; + memcpy(&tx_near_msg[NEARBASEID_INDEX],&g_com_map[NEARBASE_ID1],g_com_map[NEARBASE_NUM]*2); + send_len=21+ancidlist_num*2; + dwt_writetxdata(send_len, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去 + dwt_writetxfctrl(send_len, 0);//设置超宽带发送数据长度 + dwt_starttx(DWT_START_TX_IMMEDIATE); + regtag_map.tagid[i] = 0; break; } - battary = rx_buffer[BATTARY_IDX]; - button = rx_buffer[BUTTON_IDX]; - frame_seq_nb2 = rx_buffer[SEQUENCE_IDX]; - tag_frequency = rx_buffer[NEARP_TAGFREQ_INDEX]; - tag_slotpos = rx_buffer[NEARP_TAGSLOTPOS_INDEX]; - ////////////////基站汇总模式数据 - memcpy(&rec_tagheight,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*8+6],2); - memcpy(&recnearbaselist_id,&rx_buffer[NEARBASEID_INDEX],rec_nearbase_num*2); - memcpy(&recnearbaselist_dist,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*2],rec_nearbase_num*4+4); - memcpy(&rec_taganc_signalpower_list,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*6+4],rec_nearbase_num*2+2); - if(anc_id_recv == dev_id||g_com_map[OUTPUTALLNEARPOLLMSG] == 1 ) - { - usart_send[2] = 0x0c;//正常模式 - usart_send[3] = 15+8*(rec_nearbase_num+1);//数据段长度 - memcpy(&usart_send[4],&tag_id_recv,2); - usart_send[6] = rx_buffer[SEQUENCE_IDX]; - usart_send[7] = rx_buffer[SEQUENCEH_IDX]; - usart_send[8] = battary; - usart_send[9] = button; - memcpy(&usart_send[10],&rec_tagheight,2); - usart_send[12] = tag_frequency; - usart_send[13] = tag_slotpos; - usart_send[14] = 0; - usart_send[15] = 0; - usart_send[16] = rec_nearbase_num+1; - memcpy(&usart_send[17],&anc_id_recv,2); - memcpy(&usart_send[19],&recnearbaselist_id,2*rec_nearbase_num); - memcpy(&usart_send[19+rec_nearbase_num*2],&recnearbaselist_dist,4*rec_nearbase_num+4); - memcpy(&usart_send[19+rec_nearbase_num*6+4],&rec_taganc_signalpower_list,2*rec_nearbase_num+2); - - checksum = Checksum_u16(&usart_send[2],23+8*rec_nearbase_num); - memcpy(&usart_send[25+8*rec_nearbase_num],&checksum,2); - UART_PushFrame(usart_send,27+8*rec_nearbase_num); + } + if(i==MAX_REGTAGNUM&&g_com_map[NEARSWITCH_DISTANCE_INDEX] != 0) + { + dwt_readdiagnostics(&d1); + LOS(&d1); + usart_send[2]=0x0a; + usart_send[3]=20; + memcpy(&usart_send[4],&dev_id,2); + memcpy(&usart_send[6],&tag_id_recv,2); + memcpy(&usart_send[8],&rx_buffer[10],9); + usart_send[17] = firstpath_power; + memcpy(&usart_send[18],&rx_buffer[19],2); + checksum = Checksum_u16(&usart_send[2],20); + memcpy(&usart_send[22],&checksum,2); + UART_PushFrame(usart_send,24); + } + break; + case POS_POLL: + // GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET); + + memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2); + taglist_pos=CmpTagInList(tag_id_recv); + if(taglist_pos==taglist_num) + { + taglist_pos=taglist_num; + tagid_list[taglist_num++]=tag_id_recv; + + new_tagid=1; + } else { + new_tagid=0; + } + tagofflinetime[taglist_pos]=0; + temp_tagpos=round((float)(sync_timer%g_com_map[COM_INTERVAL])/slottime); + tagpos_rec[(u8)temp_tagpos]=1; + rec_nearbase_num=rx_buffer[NEARBASENUM_INDEX]; + if(rec_nearbase_num>30) + { + break; + } + battary = rx_buffer[BATTARY_IDX]; + button = rx_buffer[BUTTON_IDX]; + frame_seq_nb2 = rx_buffer[SEQUENCE_IDX]; + tag_frequency = rx_buffer[NEARP_TAGFREQ_INDEX]; + tag_slotpos = rx_buffer[NEARP_TAGSLOTPOS_INDEX]; + ////////////////基站汇总模式数据 + memcpy(&rec_tagheight,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*8+6],2); + memcpy(&recnearbaselist_id,&rx_buffer[NEARBASEID_INDEX],rec_nearbase_num*2); + memcpy(&recnearbaselist_dist,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*2],rec_nearbase_num*4+4); + memcpy(&rec_taganc_signalpower_list,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*6+4],rec_nearbase_num*2+2); + if(anc_id_recv == dev_id||g_com_map[OUTPUTALLNEARPOLLMSG] == 1 ) + { + usart_send[2] = 0x0c;//正常模式 + usart_send[3] = 15+8*(rec_nearbase_num+1);//数据段长度 + memcpy(&usart_send[4],&tag_id_recv,2); + usart_send[6] = rx_buffer[SEQUENCE_IDX]; + usart_send[7] = rx_buffer[SEQUENCEH_IDX]; + usart_send[8] = battary; + usart_send[9] = button; + + memcpy(&usart_send[10],&rec_tagheight,2); + usart_send[12] = tag_frequency; + usart_send[13] = tag_slotpos; + usart_send[14] = 0; + usart_send[15] = 0; + usart_send[16] = rec_nearbase_num+1; + memcpy(&usart_send[17],&anc_id_recv,2); + memcpy(&usart_send[19],&recnearbaselist_id,2*rec_nearbase_num); + memcpy(&usart_send[19+rec_nearbase_num*2],&recnearbaselist_dist,4*rec_nearbase_num+4); + memcpy(&usart_send[19+rec_nearbase_num*6+4],&rec_taganc_signalpower_list,2*rec_nearbase_num+2); + + checksum = Checksum_u16(&usart_send[2],23+8*rec_nearbase_num); + memcpy(&usart_send[25+8*rec_nearbase_num],&checksum,2); + UART_PushFrame(usart_send,27+8*rec_nearbase_num); // UART_CheckSend(); - - timm++; + + timm++; + } + ////////////////////////////////////////////////////////////// + + + GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET); + if(anc_id_recv==dev_id) + { + Anchor_RecNearPoll(rec_nearbase_num); + } else { + + for(i=0; i<rec_nearbase_num; i++) + { + memcpy(&tempid,&rx_buffer[NEARBASEID_INDEX+i*2],2); + if(tempid==dev_id) + { + + seize_anchor=0; //非抢占。已存在列表中 + Anchor_RecNearPoll(i); + break; + } } - ////////////////////////////////////////////////////////////// - - -GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET); - if(anc_id_recv==dev_id) - { - Anchor_RecNearPoll(rec_nearbase_num); - }else{ - - for(i=0;i<rec_nearbase_num;i++) - { - memcpy(&tempid,&rx_buffer[NEARBASEID_INDEX+i*2],2); - if(tempid==dev_id) - { - - seize_anchor=0; //非抢占。已存在列表中 - Anchor_RecNearPoll(i); - break; - } - } - } - //抢占模式 + } + //抢占模式 // if(i==rec_nearbase_num) // { // seize_anchor=1; //抢占anchor -// Anchor_RecNearPoll(i); +// Anchor_RecNearPoll(i); // } // if(tag_id_recv==0x4008) // printf("标签高度: %d,基站高度: %d,高度差: %d. \r\n",rec_tagheight,intheight,intheight-rec_tagheight); - - break; - default: - - break; - } - }else{ - #ifdef DEBUG_INF - printf("poll包失败:%x/n",status_reg); - #endif - dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); - } -UART_CheckSend(); - dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1); - dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 - dwt_rxenable(0);//打开接收 - + + break; + default: + + break; + } + } else { +#ifdef DEBUG_INF + printf("poll包失败:%x/n",status_reg); +#endif + dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR); + } + UART_CheckSend(); + dwt_setinterrupt( DWT_INT_RFCG | (DWT_INT_ARFE | DWT_INT_RFSL | DWT_INT_SFDT | DWT_INT_RPHE | DWT_INT_RFCE | DWT_INT_RFTO | DWT_INT_RXPTO), 1); + dwt_setrxtimeout(0);//设定接收超时时间,0位没有超时时间 + dwt_rxenable(0);//打开接收 + } diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/global_param.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/global_param.c" index 929bb81..4c1fe6e 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/global_param.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/global_param.c" @@ -8,54 +8,54 @@ uint32_t save_com_map_to_flash(void) { - uint32_t result = 0; + uint32_t result = 0; - __disable_irq(); - result = FLASH_Prepare(FLASH_IAP_CTRL_MAP, (COM_MAP_SIZE<<1)); - if(result) - result = FLASH_Write(FLASH_IAP_CTRL_MAP, (const uint8_t*)g_com_map, (COM_MAP_SIZE<<1)); - __enable_irq(); - return result; + __disable_irq(); + result = FLASH_Prepare(FLASH_IAP_CTRL_MAP, (COM_MAP_SIZE<<1)); + if(result) + result = FLASH_Write(FLASH_IAP_CTRL_MAP, (const uint8_t*)g_com_map, (COM_MAP_SIZE<<1)); + __enable_irq(); + return result; } void parameter_init(void) { - FLASH_Read(FLASH_IAP_CTRL_MAP, (uint8_t*)&g_com_map, (COM_MAP_SIZE<<1)); - - if(g_com_map[0] != 0x55AA) - { - g_com_map[0] = 0x55AA; - g_com_map[DEV_ID] =0x9818;//DEFAULT_DEV_ID; //默认设备ID + FLASH_Read(FLASH_IAP_CTRL_MAP, (uint8_t*)&g_com_map, (COM_MAP_SIZE<<1)); - g_com_map[COM_INTERVAL]=100; - g_com_map[MAX_REPORT_ANC_NUM]=10; - g_com_map[MIN_REPORT_ANC_NUM]=2; - g_com_map[DIST_OFFSET]=-40; + if(g_com_map[0] != 0x55AA) + { + g_com_map[0] = 0x55AA; + g_com_map[DEV_ID] =0x9818;//DEFAULT_DEV_ID; //默认设备ID + + g_com_map[COM_INTERVAL]=100; + g_com_map[MAX_REPORT_ANC_NUM]=10; + g_com_map[MIN_REPORT_ANC_NUM]=2; + g_com_map[DIST_OFFSET]=-40; // #ifndef WORK_MODE_TAG // g_com_map[DEV_ROLE] =0x1; //标签 // #else - g_com_map[DEV_ROLE] =0x0; //基站 + g_com_map[DEV_ROLE] =0x0; //基站 // #endif - g_com_map[ANC_POLL]=0; - g_com_map[ALARM_DEV] = 0; - g_com_map[NEARSWITCH_DISTANCE_INDEX] = 0; //默认报警距离50cm + g_com_map[ANC_POLL]=0; + g_com_map[ALARM_DEV] = 0; + g_com_map[NEARSWITCH_DISTANCE_INDEX] = 0; //默认报警距离50cm // g_com_map[ALARM_DISTANCE2] = 0; //默认报警距离50cm - g_com_map[ALARM_DISTANCE3] = 0; //默认报警距离50cm - g_com_map[HEARTBEAT]=1; - g_com_map[CNT_RESTART]=0; - g_com_map[CNT_REBOOT]=0; - g_com_map[CNT_UPDATE]=0; - g_com_map[NEARBASE_NUM]=5; - g_com_map[POWER]=DEFAULT_RFPOWER; - g_com_map[SYNCBASEID] = 0; - g_com_map[BASESYNCSEQ] = 0; + g_com_map[ALARM_DISTANCE3] = 0; //默认报警距离50cm + g_com_map[HEARTBEAT]=1; + g_com_map[CNT_RESTART]=0; + g_com_map[CNT_REBOOT]=0; + g_com_map[CNT_UPDATE]=0; + g_com_map[NEARBASE_NUM]=5; + g_com_map[POWER]=DEFAULT_RFPOWER; + g_com_map[SYNCBASEID] = 0; + g_com_map[BASESYNCSEQ] = 0; g_com_map[HEIGHTOFFEST_INDEX] = 0; g_com_map[OUTPUTALLNEARPOLLMSG] = 1; g_com_map[MAXRANGDIST_INDEX] = 65535; - memcpy(&g_com_map[BOARD_TYPE],boardtype,4); - //save_com_map_to_flash(); - } - // g_com_map[BASESYNCSEQ] = 1; - //g_com_map[SYNCBASEID] = 0x9801; + memcpy(&g_com_map[BOARD_TYPE],boardtype,4); + //save_com_map_to_flash(); + } + // g_com_map[BASESYNCSEQ] = 1; + //g_com_map[SYNCBASEID] = 0x9801; } diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c" index 8ad53cf..1f0914a 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/serial_at_cmd_app.c" @@ -16,65 +16,65 @@ #define CMD_REPLY 3 struct pwtag_structure pwtag; -typedef enum{ UsartReceiveWaitHead0, - UsartReceiveWaitHead1, - UsartReceiveWaitMsgType, - UsartReceiveWaitLength, - UsartReceiveWaitCMD, - UsartReceiveWaitIndex, - UsartReceiveWaitDataLen, - UsartReceiveWaitData, - UsartReceiveWaitChecksum -}UsartRecvPackState; +typedef enum { UsartReceiveWaitHead0, + UsartReceiveWaitHead1, + UsartReceiveWaitMsgType, + UsartReceiveWaitLength, + UsartReceiveWaitCMD, + UsartReceiveWaitIndex, + UsartReceiveWaitDataLen, + UsartReceiveWaitData, + UsartReceiveWaitChecksum + } UsartRecvPackState; uint8_t mUsartReceivePack[100] = {0}; uint8_t send_frame[200]; void SendConfigConfirm(uint8_t pack_msgtype,uint8_t pack_length) { - uint16_t checksum = 0; - send_frame[0] = 0x55; - send_frame[1] = 0xAA; - send_frame[2] = 0x09; - send_frame[3] = 8; - send_frame[4] = pack_msgtype; - send_frame[5] = pack_length; + uint16_t checksum = 0; + send_frame[0] = 0x55; + send_frame[1] = 0xAA; + send_frame[2] = 0x09; + send_frame[3] = 8; + send_frame[4] = pack_msgtype; + send_frame[5] = pack_length; - checksum = Checksum_u16(&send_frame[2],8); - memcpy(&send_frame[10],&checksum,2); - - UART_PushFrame(send_frame, 12); + checksum = Checksum_u16(&send_frame[2],8); + memcpy(&send_frame[10],&checksum,2); + + UART_PushFrame(send_frame, 12); } void SendAnchorState(uint16_t state) { - uint16_t checksum = 0; - send_frame[0] = 0x55; - send_frame[1] = 0xAA; - send_frame[2] = 0x10; - send_frame[3] = 14; + uint16_t checksum = 0; + send_frame[0] = 0x55; + send_frame[1] = 0xAA; + send_frame[2] = 0x10; + send_frame[3] = 14; memcpy(&send_frame[4],&dev_id,2); - send_frame[6] = state; + send_frame[6] = state; - checksum = Checksum_u16(&send_frame[2],14); - memcpy(&send_frame[16],&checksum,2); - - USART_puts(send_frame, 17); + checksum = Checksum_u16(&send_frame[2],14); + memcpy(&send_frame[16],&checksum,2); + + USART_puts(send_frame, 17); } void SendComMap(uint8_t data_length, uint8_t index) { - uint16_t checksum = 0; - send_frame[0] = 0x55; - send_frame[1] = 0xAA; - send_frame[2] = 0x03; - send_frame[3] = data_length+5; - send_frame[4] = CMD_REPLY; - send_frame[5] = index; - send_frame[6] = data_length; - memcpy(&send_frame[7], &g_com_map[index>>1], data_length); + uint16_t checksum = 0; + send_frame[0] = 0x55; + send_frame[1] = 0xAA; + send_frame[2] = 0x03; + send_frame[3] = data_length+5; + send_frame[4] = CMD_REPLY; + send_frame[5] = index; + send_frame[6] = data_length; + memcpy(&send_frame[7], &g_com_map[index>>1], data_length); - checksum = Checksum_u16(&send_frame[2],5+data_length); - memcpy(&send_frame[7+data_length],&checksum,2); - - UART_PushFrame(send_frame, data_length+9); + checksum = Checksum_u16(&send_frame[2],5+data_length); + memcpy(&send_frame[7+data_length],&checksum,2); + + UART_PushFrame(send_frame, data_length+9); } u8 remotetag_para[30],remotetag_paralen,userdatasend_flag[TAG_NUM_IN_SYS]; u8 remotesend_state=0; @@ -84,140 +84,142 @@ struct tagpos_structure tagpos[30]; void UsartParseDataHandler(uint8_t data) { - static UsartRecvPackState usart_receive_state = UsartReceiveWaitHead0; - uint16_t checksum = 0; - static uint8_t pack_datalen = 0,pack_length = 0,pack_index = 0,pack_msgtype = 0,pack_cmd = CMD_READ; - static uint8_t index = 0; - uint8_t i; + static UsartRecvPackState usart_receive_state = UsartReceiveWaitHead0; + uint16_t checksum = 0; + static uint8_t pack_datalen = 0,pack_length = 0,pack_index = 0,pack_msgtype = 0,pack_cmd = CMD_READ; + static uint8_t index = 0; + uint8_t i; - - if(usart_receive_state == UsartReceiveWaitChecksum) { //若收到校验和包 - checksum = 0; - for(int i = 0; i<pack_length-2; i++) { - checksum += mUsartReceivePack[i]; - } - checksum += pack_msgtype; - checksum += pack_length; -rec_times1++; - if(((data + checksum)&0xff) == 0xFF) //校验通过 - { - switch(pack_msgtype) - { - uint16_t serial_tag_id_recv; - case MSG_RW: - pack_cmd = mUsartReceivePack[0]; - pack_index = mUsartReceivePack[1]; - pack_datalen = mUsartReceivePack[2]; - switch(pack_cmd) - { - case CMD_WRITE: - //从mUsartReceivePack中读取pack_length长度的字节,放到全局变量中 - memcpy((uint8_t*)&g_com_map + pack_index, &mUsartReceivePack[3], pack_datalen); - // memcpy((uint8_t*)&g_com_map2 + pack_index, &mUsartReceivePack[3], pack_datalen); - //返回一个error状态 - //SendComMap(pack_datalen,pack_index); - if(pack_index==CNT_RESTART*2) - { - SendAnchorState(SM_RESTART); - SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader - } - if(pack_index==CNT_UPDATE*2) - { - uint32_t result = 0; - u16 tmp = 0xAAAA; - SendAnchorState(SM_UPDATE); - __disable_irq(); - result = FLASH_Prepare(0x8004A38, 2); - if(result) - result = FLASH_Write(0x8004A38, (const uint8_t*)&tmp, 2); - __enable_irq(); - printf("进入升级模式\r\n"); - //delay_ms(100); - SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader - } - save_com_map_to_flash(); - delay_ms(100); - NVIC_SystemReset(); - break; - case CMD_READ: - //read包中data字节,即mUsartReceivePack[0]表示数据长度; - //从g_com_data结构体中的第index位置读取长度为mUsartReceivePack[0]的字节,发送出来 - rec_times2++; - SendComMap(pack_datalen,pack_index); - break; - default: - break; - } - break; - case MSG_WTAG: //修改标签参数 - remotesend_state=1; - memcpy(&configremotetagID,&mUsartReceivePack[0],2); - //configremotetagID = pack_cmd|pack_index<<8; - //remotetag_para[0] = mUsartReceivePack[2]; - remotetag_paralen = mUsartReceivePack[4]+3; - memcpy(&remotetag_para[1],&mUsartReceivePack[3],remotetag_paralen); - break; - case MSG_PWTAG: //批量修改标签参数 - pwtag.groupnum = mUsartReceivePack[0]; - pwtag.index = mUsartReceivePack[1]; - pwtag.remain_time = 5; - for(i=0;i<pwtag.groupnum;i++) - { - memcpy(pwtag.groupid[i],&mUsartReceivePack[i*6+2],4); - memcpy(&pwtag.group_interval[i],&mUsartReceivePack[i*6+6],2); - } - break; - case MSG_REGTAGRESPONSE: - regtag_map.index++; - if(regtag_map.index==MAX_REGTAGNUM) - {regtag_map.index = 0;} - regtag_map.remain_time[regtag_map.index]=5; - memcpy(®tag_map.tagid[regtag_map.index],&mUsartReceivePack[0],2); - memcpy(®tag_map.tag_frequency[regtag_map.index],&mUsartReceivePack[2],2); - memcpy(®tag_map.tag_slotpos[regtag_map.index],&mUsartReceivePack[4],2); - break; - case MSG_TAGPOS: - memcpy(&serial_tag_id_recv,&mUsartReceivePack[0],2); - taglist_pos=CmpTagInList(serial_tag_id_recv); - tagpos[taglist_pos].tagid = serial_tag_id_recv; - tagpos[taglist_pos].datalen = mUsartReceivePack[2]; - if(mUsartReceivePack[2]<=MAX_FRAME_LEN&&taglist_pos<30) + + if(usart_receive_state == UsartReceiveWaitChecksum) { //若收到校验和包 + checksum = 0; + for(int i = 0; i<pack_length-2; i++) { + checksum += mUsartReceivePack[i]; + } + checksum += pack_msgtype; + checksum += pack_length; + rec_times1++; + if(((data + checksum)&0xff) == 0xFF) //校验通过 + { + switch(pack_msgtype) + { + uint16_t serial_tag_id_recv; + case MSG_RW: + pack_cmd = mUsartReceivePack[0]; + pack_index = mUsartReceivePack[1]; + pack_datalen = mUsartReceivePack[2]; + switch(pack_cmd) + { + case CMD_WRITE: + //从mUsartReceivePack中读取pack_length长度的字节,放到全局变量中 + memcpy((uint8_t*)&g_com_map + pack_index, &mUsartReceivePack[3], pack_datalen); + // memcpy((uint8_t*)&g_com_map2 + pack_index, &mUsartReceivePack[3], pack_datalen); + //返回一个error状态 + //SendComMap(pack_datalen,pack_index); + if(pack_index==CNT_RESTART*2) { - userdatasend_flag[taglist_pos] = 1; - memcpy(&tagpos[taglist_pos].data,&mUsartReceivePack[3],mUsartReceivePack[2]); + SendAnchorState(SM_RESTART); + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader } + if(pack_index==CNT_UPDATE*2) + { + uint32_t result = 0; + u16 tmp = 0xAAAA; + SendAnchorState(SM_UPDATE); + __disable_irq(); + result = FLASH_Prepare(0x8004A38, 2); + if(result) + result = FLASH_Write(0x8004A38, (const uint8_t*)&tmp, 2); + __enable_irq(); + printf("进入升级模式\r\n"); + //delay_ms(100); + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader + } + save_com_map_to_flash(); + delay_ms(100); + NVIC_SystemReset(); break; - } - SendConfigConfirm(pack_msgtype,pack_length); - } - usart_receive_state = UsartReceiveWaitHead0; - pack_index = 0; - pack_length = 0; - index=0; - } else if(usart_receive_state == UsartReceiveWaitData) { //若果收到的是正常通讯包 - mUsartReceivePack[index] = data; - index++; - if(index == pack_length-2) { //如果收到的index与长度相等 - usart_receive_state = UsartReceiveWaitChecksum; - } - } else if(usart_receive_state == UsartReceiveWaitLength) { //收到长度字节 - - pack_length = data; - pack_index = 0; - usart_receive_state = UsartReceiveWaitData; - - } else if((usart_receive_state == UsartReceiveWaitHead0) && (data == 0x55)) { //收到第一个包头 - usart_receive_state = UsartReceiveWaitHead1; - } else if((usart_receive_state == UsartReceiveWaitHead1) && (data == 0xAA)) { //收到第二个包头 - usart_receive_state = UsartReceiveWaitMsgType; - }else if ((usart_receive_state == UsartReceiveWaitMsgType)) { - usart_receive_state = UsartReceiveWaitLength; - pack_msgtype = data; - } - else { - usart_receive_state = UsartReceiveWaitHead0; - pack_index = 0; - pack_length = 0; - } + case CMD_READ: + //read包中data字节,即mUsartReceivePack[0]表示数据长度; + //从g_com_data结构体中的第index位置读取长度为mUsartReceivePack[0]的字节,发送出来 + rec_times2++; + SendComMap(pack_datalen,pack_index); + break; + default: + break; + } + break; + case MSG_WTAG: //修改标签参数 + remotesend_state=1; + memcpy(&configremotetagID,&mUsartReceivePack[0],2); + //configremotetagID = pack_cmd|pack_index<<8; + //remotetag_para[0] = mUsartReceivePack[2]; + remotetag_paralen = mUsartReceivePack[4]+3; + memcpy(&remotetag_para[1],&mUsartReceivePack[3],remotetag_paralen); + break; + case MSG_PWTAG: //批量修改标签参数 + pwtag.groupnum = mUsartReceivePack[0]; + pwtag.index = mUsartReceivePack[1]; + pwtag.remain_time = 5; + for(i=0; i<pwtag.groupnum; i++) + { + memcpy(pwtag.groupid[i],&mUsartReceivePack[i*6+2],4); + memcpy(&pwtag.group_interval[i],&mUsartReceivePack[i*6+6],2); + } + break; + case MSG_REGTAGRESPONSE: + regtag_map.index++; + if(regtag_map.index==MAX_REGTAGNUM) + { + regtag_map.index = 0; + } + regtag_map.remain_time[regtag_map.index]=5; + memcpy(®tag_map.tagid[regtag_map.index],&mUsartReceivePack[0],2); + memcpy(®tag_map.tag_frequency[regtag_map.index],&mUsartReceivePack[2],2); + memcpy(®tag_map.tag_slotpos[regtag_map.index],&mUsartReceivePack[4],2); + break; + case MSG_TAGPOS: + memcpy(&serial_tag_id_recv,&mUsartReceivePack[0],2); + taglist_pos=CmpTagInList(serial_tag_id_recv); + tagpos[taglist_pos].tagid = serial_tag_id_recv; + tagpos[taglist_pos].datalen = mUsartReceivePack[2]; + if(mUsartReceivePack[2]<=MAX_FRAME_LEN&&taglist_pos<30) + { + userdatasend_flag[taglist_pos] = 1; + memcpy(&tagpos[taglist_pos].data,&mUsartReceivePack[3],mUsartReceivePack[2]); + } + break; + } + SendConfigConfirm(pack_msgtype,pack_length); + } + usart_receive_state = UsartReceiveWaitHead0; + pack_index = 0; + pack_length = 0; + index=0; + } else if(usart_receive_state == UsartReceiveWaitData) { //若果收到的是正常通讯包 + mUsartReceivePack[index] = data; + index++; + if(index == pack_length-2) { //如果收到的index与长度相等 + usart_receive_state = UsartReceiveWaitChecksum; + } + } else if(usart_receive_state == UsartReceiveWaitLength) { //收到长度字节 + + pack_length = data; + pack_index = 0; + usart_receive_state = UsartReceiveWaitData; + + } else if((usart_receive_state == UsartReceiveWaitHead0) && (data == 0x55)) { //收到第一个包头 + usart_receive_state = UsartReceiveWaitHead1; + } else if((usart_receive_state == UsartReceiveWaitHead1) && (data == 0xAA)) { //收到第二个包头 + usart_receive_state = UsartReceiveWaitMsgType; + } else if ((usart_receive_state == UsartReceiveWaitMsgType)) { + usart_receive_state = UsartReceiveWaitLength; + pack_msgtype = data; + } + else { + usart_receive_state = UsartReceiveWaitHead0; + pack_index = 0; + pack_length = 0; + } } -- Gitblit v1.9.3