From bdad051416564607f0b31df44732e3ea97b7174a Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期日, 25 八月 2019 17:56:12 +0800 Subject: [PATCH] 华星火车项目测试完成 --- 源码/核心板/Src/application/dw_app.h | 15 源码/核心板/Src/application/global_param.c | 28 源码/核心板/Src/main.c | 77 + 源码/核心板/Src/ExternalDevices/beep.h | 4 源码/核心板/Src/application/serial_at_cmd_app.c | 284 +++----- 源码/核心板/Src/stm32f10x_it.c | 32 源码/核心板/MDK-ARM/Project.uvoptx | 6 源码/核心板/Src/application/global_param.h | 30 源码/核心板/MDK-ARM/Project.uvguix.Administrator | 1423 +++++++++++++++++++++++++++++++++++++++++ 源码/核心板/Src/application/dw_app.c | 131 ++- 10 files changed, 1,728 insertions(+), 302 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvguix.Administrator" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvguix.Administrator" new file mode 100644 index 0000000..4931c64 --- /dev/null +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/MDK-ARM/Project.uvguix.Administrator" @@ -0,0 +1,1423 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no" ?> +<ProjectGui xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_guix.xsd"> + + <SchemaVersion>-5.1</SchemaVersion> + + <Header>### uVision Project, (C) Keil Software</Header> + + <ViewPool/> + + <SECTreeCtrl> + <View> + <WinId>38003</WinId> + <ViewName>Registers</ViewName> + <TableColWidths>115 275</TableColWidths> + </View> + <View> + <WinId>346</WinId> + <ViewName>Code Coverage</ViewName> + <TableColWidths>370 160</TableColWidths> + </View> + <View> + <WinId>204</WinId> + <ViewName>Performance Analyzer</ViewName> + <TableColWidths>530</TableColWidths> + </View> + </SECTreeCtrl> + + <TreeListPane> + <View> + <WinId>1506</WinId> + <ViewName>Symbols</ViewName> + <UserString></UserString> + <TableColWidths>133 133 133</TableColWidths> + </View> + <View> + <WinId>1936</WinId> + <ViewName>Watch 1</ViewName> + <UserString></UserString> + <TableColWidths>133 133 133</TableColWidths> + </View> + <View> + <WinId>1937</WinId> + <ViewName>Watch 2</ViewName> + <UserString></UserString> + <TableColWidths>133 133 133</TableColWidths> + </View> + <View> + <WinId>1935</WinId> + <ViewName>Call Stack + Locals</ViewName> + <UserString></UserString> + <TableColWidths>133 133 133</TableColWidths> + </View> + <View> + <WinId>2506</WinId> + <ViewName>Trace Data</ViewName> + <UserString></UserString> + <TableColWidths>75 135 130 95 70 230 200 150</TableColWidths> + </View> + </TreeListPane> + + <WindowSettings> + <LogicAnalizer> + <ShowLACursor>1</ShowLACursor> + <ShowSignalInfo>1</ShowSignalInfo> + <ShowCycles>0</ShowCycles> + <LeftSideBarSize>0</LeftSideBarSize> + <TimeBaseIndex>-1</TimeBaseIndex> + </LogicAnalizer> + </WindowSettings> + + <WinLayoutEx> + <sActiveDebugView></sActiveDebugView> + <WindowPosition> + <length>44</length> + <flags>2</flags> + <showCmd>3</showCmd> + <MinPosition> + <xPos>-32000</xPos> + <yPos>-32000</yPos> + </MinPosition> + <MaxPosition> + <xPos>-1</xPos> + <yPos>-1</yPos> + </MaxPosition> + <NormalPosition> + <Top>104</Top> + <Left>104</Left> + <Right>1064</Right> + <Bottom>585</Bottom> + </NormalPosition> + </WindowPosition> + <MDIClientArea> + <RegID>0</RegID> + <MDITabState> + <Len>957</Len> + <Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000008000000040000000100000041453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C676C6F62616C5F706172616D2E63000000000E676C6F62616C5F706172616D2E6300000000C5D4F200FFFFFFFF46453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C73657269616C5F61745F636D645F6170702E63000000001373657269616C5F61745F636D645F6170702E6300000000D9ADC200FFFFFFFF43453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C626565705F6C6F6769635F6170702E630000000010626565705F6C6F6769635F6170702E6300000000F7B88600FFFFFFFF2D453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6D61696E2E6300000000066D61696E2E63000000009CC1B600FFFFFFFF3B453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C64775F6170702E63000000000864775F6170702E6300000000BCA8E100FFFFFFFF78453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4C69627261726965735C434D5349535C434D335C446576696365537570706F72745C53545C53544D3332463130785C737461727475705C61726D5C737461727475705F73746D3332663130785F6D642E730000000016737461727475705F73746D3332663130785F6D642E7300000000F0A0A100FFFFFFFF3B453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C6170706C69636174696F6E5C64775F6170702E68000000000864775F6170702E6800000000BECEA100FFFFFFFF3A453A5C4749545C5557425F536D616C6C4D6F64756C655CD4B4C2EB5CBACBD0C4B0E55C5372635C4F6E43686970446576696365735C5370692E6300000000055370692E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000094010000660000000005000007020000</Data> + </MDITabState> + </MDIClientArea> + <ViewEx> + <ViewType>0</ViewType> + <ViewName>Build</ViewName> + <Window> + <RegID>-1</RegID> + <PaneID>-1</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>940100004F000000B0030000B3000000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>9401000066000000B0030000CA000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1005</RegID> + <PaneID>1005</PaneID> + <IsVisible>1</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>03000000660000008D010000D7010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>109</RegID> + <PaneID>109</PaneID> + <IsVisible>1</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>03000000660000008D010000D7010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000F8000000B5010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1465</RegID> + <PaneID>1465</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1466</RegID> + <PaneID>1466</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1467</RegID> + <PaneID>1467</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1468</RegID> + <PaneID>1468</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1506</RegID> + <PaneID>1506</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>16384</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1913</RegID> + <PaneID>1913</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>9701000066000000AD0300009A000000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1935</RegID> + <PaneID>1935</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>32768</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1936</RegID> + <PaneID>1936</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1937</RegID> + <PaneID>1937</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1939</RegID> + <PaneID>1939</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1940</RegID> + <PaneID>1940</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1941</RegID> + <PaneID>1941</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>1942</RegID> + <PaneID>1942</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>195</RegID> + <PaneID>195</PaneID> + <IsVisible>1</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>03000000660000008D010000D7010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000F8000000B5010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>196</RegID> + <PaneID>196</PaneID> + <IsVisible>1</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>03000000660000008D010000D7010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000F8000000B5010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>197</RegID> + <PaneID>197</PaneID> + <IsVisible>1</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>32768</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0000000008020000000500007E020000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>198</RegID> + <PaneID>198</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>32768</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>000000003B010000B0030000A7010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>199</RegID> + <PaneID>199</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>030000000B020000FD040000AC020000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>203</RegID> + <PaneID>203</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>8192</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>9701000066000000AD0300009A000000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>204</RegID> + <PaneID>204</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>9701000066000000AD0300009A000000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>221</RegID> + <PaneID>221</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>00000000000000000000000000000000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>0A0000000A0000006E0000006E000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>2506</RegID> + <PaneID>2506</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>2507</RegID> + <PaneID>2507</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>343</RegID> + <PaneID>343</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>9701000066000000AD0300009A000000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>346</RegID> + <PaneID>346</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>9701000066000000AD0300009A000000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35824</RegID> + <PaneID>35824</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>9701000066000000AD0300009A000000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35885</RegID> + <PaneID>35885</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35886</RegID> + <PaneID>35886</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35887</RegID> + <PaneID>35887</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35888</RegID> + <PaneID>35888</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35889</RegID> + <PaneID>35889</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35890</RegID> + <PaneID>35890</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35891</RegID> + <PaneID>35891</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35892</RegID> + <PaneID>35892</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35893</RegID> + <PaneID>35893</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35894</RegID> + <PaneID>35894</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35895</RegID> + <PaneID>35895</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35896</RegID> + <PaneID>35896</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35897</RegID> + <PaneID>35897</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35898</RegID> + <PaneID>35898</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35899</RegID> + <PaneID>35899</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35900</RegID> + <PaneID>35900</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35901</RegID> + <PaneID>35901</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35902</RegID> + <PaneID>35902</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35903</RegID> + <PaneID>35903</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35904</RegID> + <PaneID>35904</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>35905</RegID> + <PaneID>35905</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>2302000066000000AD03000026010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>38003</RegID> + <PaneID>38003</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>03000000660000008D01000090010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000F8000000B5010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>38007</RegID> + <PaneID>38007</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>030000000B020000FD040000AC020000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C0000005300000014020000AB000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>436</RegID> + <PaneID>436</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>030000000B020000FD040000AC020000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000F8000000B5010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>437</RegID> + <PaneID>437</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>440</RegID> + <PaneID>440</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0300000052010000AD0300008E010000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>3C00000053000000CC010000E3010000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>59392</RegID> + <PaneID>59392</PaneID> + <IsVisible>1</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>940</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>8192</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>0000000000000000B70300001C000000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>0A0000000A0000006E0000006E000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>59393</RegID> + <PaneID>0</PaneID> + <IsVisible>1</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>32767</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>4096</RecentFrameAlignment> + <RecentRowIndex>0</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>000000007E0200000005000091020000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>0A0000000A0000006E0000006E000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>59399</RegID> + <PaneID>59399</PaneID> + <IsVisible>1</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>463</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>8192</RecentFrameAlignment> + <RecentRowIndex>1</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>000000001C000000DA01000038000000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>0A0000000A0000006E0000006E000000</Data> + </RectRecentFloat> + </Window> + <Window> + <RegID>59400</RegID> + <PaneID>59400</PaneID> + <IsVisible>0</IsVisible> + <IsFloating>0</IsFloating> + <IsTabbed>0</IsTabbed> + <IsActivated>0</IsActivated> + <MRUWidth>612</MRUWidth> + <PinState>0</PinState> + <RecentFrameAlignment>8192</RecentFrameAlignment> + <RecentRowIndex>2</RecentRowIndex> + <RectRecentDocked> + <Len>16</Len> + <Data>00000000380000006F02000054000000</Data> + </RectRecentDocked> + <RectRecentFloat> + <Len>16</Len> + <Data>0A0000000A0000006E0000006E000000</Data> + </RectRecentFloat> + </Window> + <DockMan> + <Len>2619</Len> + <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000B3000000B0030000B7000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E6500200000000000009401000066000000B0030000CA000000940100004F000000B0030000B30000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF1C0200004F000000200200003F010000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C0000018000400000000000002002000066000000B003000056010000200200004F000000B00300003F0100000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF900100004F00000094010000F0010000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000006600000090010000C0010000000000004F00000090010000F00100000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000037010000B00300003B01000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB090000018000800000000000000000000052010000B0030000BE010000000000003B010000B0030000A701000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFD80100003B010000DC010000A701000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F001000000050000F401000001000000010000100400000001000000ABFEFFFFCF000000FFFFFFFF04000000C5000000C7000000B4010000779400000180008000000100000000000000C4010000000500009502000000000000F4010000000500007E0200000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data> + </DockMan> + <ToolBar> + <RegID>59392</RegID> + <Name>File</Name> + <Buttons> + <Len>2002</Len> + <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data> + </Buttons> + <OriginalItems> + <Len>1423</Len> + <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000</Data> + </OriginalItems> + <OrigResetItems> + <Len>1423</Len> + <Data>2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000</Data> + </OrigResetItems> + </ToolBar> + <ToolBar> + <RegID>59399</RegID> + <Name>Build</Name> + <Buttons> + <Len>672</Len> + <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000553544D3332960000000000000001000553544D3332000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000</Data> + </Buttons> + <OriginalItems> + <Len>583</Len> + <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000</Data> + </OriginalItems> + <OrigResetItems> + <Len>583</Len> + <Data>1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000</Data> + </OrigResetItems> + </ToolBar> + <ToolBar> + <RegID>59400</RegID> + <Name>Debug</Name> + <Buttons> + <Len>2220</Len> + <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data> + </Buttons> + <OriginalItems> + <Len>898</Len> + <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000</Data> + </OriginalItems> + <OrigResetItems> + <Len>898</Len> + <Data>1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000</Data> + </OrigResetItems> + </ToolBar> + <ControlBarsSummary> + <Bars>0</Bars> + <ScreenCX>1280</ScreenCX> + <ScreenCY>720</ScreenCY> + </ControlBarsSummary> + </ViewEx> + </WinLayoutEx> + + <MDIGroups> + <Orientation>1</Orientation> + <ActiveMDIGroup>0</ActiveMDIGroup> + <MDIGroup> + <Size>100</Size> + <ActiveTab>4</ActiveTab> + <Doc> + <Name>..\Src\application\global_param.c</Name> + <ColumnNumber>0</ColumnNumber> + <TopLine>17</TopLine> + <CurrentLine>39</CurrentLine> + <Folding>1</Folding> + <ContractedFolders></ContractedFolders> + <PaneID>0</PaneID> + </Doc> + <Doc> + <Name>..\Src\application\serial_at_cmd_app.c</Name> + <ColumnNumber>0</ColumnNumber> + <TopLine>1</TopLine> + <CurrentLine>1</CurrentLine> + <Folding>1</Folding> + <ContractedFolders></ContractedFolders> + <PaneID>0</PaneID> + </Doc> + <Doc> + <Name>..\Src\application\beep_logic_app.c</Name> + <ColumnNumber>0</ColumnNumber> + <TopLine>1</TopLine> + <CurrentLine>1</CurrentLine> + <Folding>1</Folding> + <ContractedFolders></ContractedFolders> + <PaneID>0</PaneID> + </Doc> + <Doc> + <Name>..\Src\main.c</Name> + <ColumnNumber>9</ColumnNumber> + <TopLine>76</TopLine> + <CurrentLine>96</CurrentLine> + <Folding>1</Folding> + <ContractedFolders></ContractedFolders> + <PaneID>0</PaneID> + </Doc> + <Doc> + <Name>..\Src\application\dw_app.c</Name> + <ColumnNumber>3</ColumnNumber> + <TopLine>586</TopLine> + <CurrentLine>605</CurrentLine> + <Folding>1</Folding> + <ContractedFolders></ContractedFolders> + <PaneID>0</PaneID> + </Doc> + <Doc> + <Name>..\Src\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_md.s</Name> + <ColumnNumber>0</ColumnNumber> + <TopLine>130</TopLine> + <CurrentLine>133</CurrentLine> + <Folding>1</Folding> + <ContractedFolders></ContractedFolders> + <PaneID>0</PaneID> + </Doc> + <Doc> + <Name>..\Src\application\dw_app.h</Name> + <ColumnNumber>2</ColumnNumber> + <TopLine>3</TopLine> + <CurrentLine>9</CurrentLine> + <Folding>1</Folding> + <ContractedFolders></ContractedFolders> + <PaneID>0</PaneID> + </Doc> + <Doc> + <Name>..\Src\OnChipDevices\Spi.c</Name> + <ColumnNumber>0</ColumnNumber> + <TopLine>146</TopLine> + <CurrentLine>161</CurrentLine> + <Folding>1</Folding> + <ContractedFolders></ContractedFolders> + <PaneID>0</PaneID> + </Doc> + </MDIGroup> + </MDIGroups> + +</ProjectGui> 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 59279e6..842ed65 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" @@ -77,7 +77,7 @@ <tvExpOptDlg>0</tvExpOptDlg> <IsCurrentTarget>1</IsCurrentTarget> </OPTFL> - <CpuCode>255</CpuCode> + <CpuCode>18</CpuCode> <Books> <Book> <Number>0</Number> @@ -141,10 +141,6 @@ <pMon>Segger\JL2CM3.dll</pMon> </DebugOpt> <TargetDriverDllRegistry> - <SetRegEntry> - <Number>0</Number> - <Key>DLGUARM</Key> - </SetRegEntry> <SetRegEntry> <Number>0</Number> <Key>UL2CM3</Key> diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/beep.h" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/beep.h" index cdbcd2e..130dcc4 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/beep.h" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/ExternalDevices/beep.h" @@ -8,8 +8,8 @@ #define KEY0_GPIO GPIOB #define READ_KEY0 GPIO_ReadInputDataBit(KEY0_GPIO,KEY0_PIN) -#define BEEP_PIN GPIO_Pin_6 -#define BEEP_GPIO GPIOB +#define BEEP_PIN GPIO_Pin_12 +#define BEEP_GPIO GPIOA #define BEEP_ON GPIO_WriteBit(BEEP_GPIO, BEEP_PIN, Bit_SET) #define BEEP_OFF GPIO_WriteBit(BEEP_GPIO, BEEP_PIN, Bit_RESET) 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 2a1e753..643eb8b 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" @@ -69,9 +69,13 @@ #define TAG_ID_IDX 5 #define MESSAGE_TYPE_IDX 9 #define DIST_IDX 10 +//Poll #define ANC_TYPE_IDX 14 #define BATTARY_IDX 15 #define BUTTON_IDX 16 + +//respose +#define TIMECORRE 14 #define POLL 0x01 #define RESPONSE 0x02 @@ -98,7 +102,7 @@ static uint8_t tx_final_msg[] = {0x41, 0x88, 0, 0xCA, 0xDE, 'W', 'A', 'V', 'E', 0x23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; //static uint8_t rx_poll_msg[] = {0x00, 0x88, 0, 0xCA, 0xDE, 'W', 'A', 'V', 'E', 0x21, 0, 0}; -static uint8_t tx_resp_msg[16] = {0}; +static uint8_t tx_resp_msg[18] = {0}; //static uint8_t rx_final_msg[] = {0x41, 0x88, 0, 0xCA, 0xDE, 'W', 'A', 'V', 'E', 0x23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; /* Frame sequence number, incremented after each transmission. */ @@ -125,7 +129,7 @@ static double tof; -uint32_t anchor_dist_last_frm[TAG_NUM_IN_SYS]; +uint32_t anchor_dist_last_frm[TAG_NUM_IN_SYS],his_dist[TAG_NUM_IN_SYS]; ; uint32_t tag_id = 0; uint32_t tag_id_recv = 0; uint8_t random_delay_tim = 0; @@ -136,7 +140,7 @@ float dis_after_filter; //当前距离值 LPFilter_Frac* p_Dis_Filter; //测距用的低通滤波器 -uint16_t g_Tagdist[TOTAL_TAG_NUM]; +uint16_t g_Tagdist[TAG_NUM_IN_SYS]; uint8_t g_flag_Taggetdist[256]; /*------------------------------------ Functions ------------------------------------------*/ @@ -279,7 +283,7 @@ return sum; } -u16 tag_time_recv[TOTAL_TAG_NUM]; +u16 tag_time_recv[TAG_NUM_IN_SYS]; u8 usart_send[25]; u8 battary,button; extern uint8_t g_pairstart; @@ -293,6 +297,7 @@ u8 tag_succ_times=0; u32 hex_dist; u16 checksum; +int8_t tag_delaytime; void Tag_App(void)//发送模式(TAG标签) { uint32_t frame_len; @@ -308,7 +313,7 @@ tx_poll_msg[BATTARY_IDX] = Get_Battary(); tx_poll_msg[BUTTON_IDX] = !READ_KEY0; - for(i=0;i<REPOET_ANC_NUM;i++) + for(i=0;i<g_com_map[MAX_REPORT_ANC_NUM];i++) { /* Write frame data to DW1000 and prepare transmission. See NOTE 7 below. */ tx_poll_msg[ANC_TYPE_IDX] = i; @@ -354,6 +359,15 @@ poll_tx_ts = get_tx_timestamp_u64(); //获得POLL发送时间T1 resp_rx_ts = get_rx_timestamp_u64(); //获得RESPONSE接收时间T4 + if(i==0) + { + tag_delaytime=rx_buffer[TIMECORRE]; + if(tag_delaytime>g_com_map[COM_INTERVAL]/2) + { + tag_delaytime=tag_delaytime-g_com_map[COM_INTERVAL]; + } + } + memcpy(&anchor_dist_last_frm[0], &rx_buffer[DIST_IDX], 4); memcpy(&tx_final_msg[ANCHOR_ID_IDX], &rx_buffer[ANCHOR_ID_IDX], 4); /* Compute final message transmission time. See NOTE 9 below. */ @@ -375,25 +389,23 @@ result=dwt_starttx(DWT_START_TX_DELAYED);//设定为延迟发送 tag_succ_times++; - #ifdef WORK_MODE_TAG + LED0_BLINK; - #endif - #ifdef HEX_OUTPUT - usart_send[2] = frame_seq_nb++; - //usart_send[6] = tag_id_recv; - //usart_send[8] = g_com_map[DEV_ID]; - memcpy(&usart_send[3],&dev_id,4); - memcpy(&usart_send[7],&rx_buffer[ANCHOR_ID_IDX],4); - hex_dist = anchor_dist_last_frm[0]; - memcpy(&usart_send[11],&hex_dist,4); - usart_send[15] = battary; - usart_send[16] = button; - checksum = Checksum_u16(&usart_send[2],19); - memcpy(&usart_send[21],&checksum,2); - UART_PushFrame(usart_send,23); - #else - printf("Anchor ID: %d, Tag ID: %d, Dist = %d cm\n", g_com_map[DEV_ID_L]|g_com_map[DEV_ID_L]<<8, tag_id_recv, (uint16_t)dist_cm); - #endif + + + usart_send[2] = 1;//正常模式 + usart_send[3] = 17;//数据段长度 + usart_send[4] = frame_seq_nb++;//数据段长度 + memcpy(&usart_send[5],&dev_id,2); + memcpy(&usart_send[7],&rx_buffer[ANCHOR_ID_IDX],2); + hex_dist = anchor_dist_last_frm[0];; + memcpy(&usart_send[9],&hex_dist,4); + usart_send[13] = battary; + usart_send[14] = button; + checksum = Checksum_u16(&usart_send[2],17); + memcpy(&usart_send[19],&checksum,2); + UART_PushFrame(usart_send,21); + /* Poll DW1000 until TX frame sent event set. See NOTE 8 below. */ if(result==0) {while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS))//不断查询芯片状态直到发送完成 @@ -420,16 +432,15 @@ // deca_sleep(10); } // dwt_entersleep(); - if(tag_succ_times<REPOET_ANC_NUM_MIN) + if(tag_succ_times<g_com_map[MIN_REPORT_ANC_NUM]) { - random_delay_tim =time32_incr&0x8f+7; - deca_sleep(random_delay_tim); + //poll_timer +=time32_incr&0x7+3; } - //LED0_BLINK; - RTC_SET_ALARM(1); + /* Execute a delay between ranging exchanges. */ } +int8_t correction_time; extern uint8_t g_start_send_flag; void Anchor_App(void) { @@ -445,8 +456,7 @@ /* Poll for reception of a frame or error/timeout. See NOTE 7 below. */ while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFCG | SYS_STATUS_ALL_RX_ERR))&&!g_start_send_flag)//不断查询芯片状态直到接收成功或者出现错误 { - UART_CheckReceive(); - UART_CheckSend(); + IdleTask(); g_Resttimer=0; }; @@ -478,6 +488,13 @@ if (rx_buffer[MESSAGE_TYPE_IDX] == POLL&&(anchor_type == rx_buffer[ANC_TYPE_IDX])) //判断是否是poll包数据 { + correction_time=tag_timer-(tag_id_recv%GROUP_TAG_NUM)*3; + if(correction_time == g_com_map[COM_INTERVAL]) + correction_time = 0; + tx_resp_msg[TIMECORRE] = correction_time; +// if(correction_time>10) +// {correction_time++;} + /* Retrieve poll reception timestamp. */ poll_rx_ts = get_rx_timestamp_u64();//获得Poll包接收时间T2 @@ -490,7 +507,7 @@ dwt_setrxtimeout(FINAL_RX_TIMEOUT_UUS);//接收超时时间 /* Write and send the response message. See NOTE 9 below.*/ - if(tag_id_recv-TAG_ID_START<=TOTAL_TAG_NUM) + if(tag_id_recv-TAG_ID_START<=TAG_NUM_IN_SYS) memcpy(&tx_resp_msg[DIST_IDX], &anchor_dist_last_frm[tag_id_recv-TAG_ID_START], 4); dwt_writetxdata(sizeof(tx_resp_msg), tx_resp_msg, 0);//写入发送数据 @@ -559,38 +576,28 @@ LED0_BLINK; //每成功一次通讯则闪烁一次 g_UWB_com_interval = 0; dis_after_filter=dist_cm; - // g_Tagdist[tag_id_recv-TAG_ID_START]=dist_cm; -// if(g_pairstart==1&&dist_cm<20) -// { -// g_pairstart=0; -// g_com_map[PAIR_ID]=tag_id_recv; -// save_com_map_to_flash(); -// BEEP2_ON; -// delay_ms(1000); -// printf("Pair Finish PairID: %d. \r\n",g_com_map[PAIR_ID]); -// } - // tag_time_recv[tag_id_recv] = tag_recv_timer; - if(tag_id_recv-TAG_ID_START<=TOTAL_TAG_NUM) - { - g_flag_Taggetdist[tag_id_recv-TAG_ID_START]=0; - anchor_dist_last_frm[tag_id_recv-TAG_ID_START] = dist_cm; - } - #ifdef HEX_OUTPUT - usart_send[2] = frame_seq_nb++; - //usart_send[6] = tag_id_recv; - //usart_send[8] = g_com_map[DEV_ID]; - memcpy(&usart_send[3],&tag_id_recv,4); - memcpy(&usart_send[7],&dev_id,4); + hex_dist = (int16_t)(dist_cm+g_com_map[DIST_OFFSET]); + if(tag_id_recv-TAG_ID_START<=TAG_NUM_IN_SYS) + if(abs(hex_dist-his_dist[tag_id_recv-TAG_ID_START])<1000) + { + g_Tagdist[tag_id_recv-TAG_ID_START] = hex_dist; + anchor_dist_last_frm[tag_id_recv-TAG_ID_START] = hex_dist; + } + his_dist[tag_id_recv-TAG_ID_START]=hex_dist; + + usart_send[2] = 1;//正常模式 + usart_send[3] = 17;//数据段长度 + usart_send[4] = frame_seq_nb++;//数据段长度 + memcpy(&usart_send[5],&tag_id_recv,2); + memcpy(&usart_send[7],&dev_id,2); hex_dist = dist_cm; - memcpy(&usart_send[11],&hex_dist,4); - usart_send[15] = battary; - usart_send[16] = button; - checksum = Checksum_u16(&usart_send[2],19); - memcpy(&usart_send[21],&checksum,2); - UART_PushFrame(usart_send,23); - #else - printf("Anchor ID: %d, Tag ID: %d, Dist = %d cm\n", g_com_map[DEV_ID_L]|g_com_map[DEV_ID_L]<<8, tag_id_recv, (uint16_t)dist_cm); - #endif + memcpy(&usart_send[9],&hex_dist,4); + usart_send[13] = battary; + usart_send[14] = button; + checksum = Checksum_u16(&usart_send[2],17); + memcpy(&usart_send[19],&checksum,2); + UART_PushFrame(usart_send,21); + //dis_after_filter = LP_Frac_Update(p_Dis_Filter, dist_cm); diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.h" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.h" index b9a4427..e3388ff 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.h" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.h" @@ -2,11 +2,12 @@ #ifndef __DW_APP_H__ #define __DW_APP_H__ +#include <string.h> #include "stm32f10x.h" #include "filters.h" #include "ADC.h" -#define WORK_MODE_TAG -//#define WORK_MODE_ANCHOR +//#define WORK_MODE_TAG +#define WORK_MODE_ANCHOR //#define NEWBOARD //#define TAG_OUTPUT @@ -14,12 +15,12 @@ #define REPOET_ANC_NUM 1 #define REPOET_ANC_NUM_MIN 1 -#define TOTAL_TAG_NUM 200 #define TAG_ID_START 0// 0x00980000 - +#define GROUP_TAG_NUM 2 #define TAG_NUM_IN_SYS 256 #define DFT_RAND_DLY_TIM_MS 1 - +extern u16 poll_timer,tag_timer; +extern int8_t tag_delaytime; extern u32 dev_id; extern u8 anchor_type; extern volatile uint32_t time32_incr; @@ -30,11 +31,13 @@ extern LPFilter_Frac* p_Dis_Filter; //测距用的低通滤波器 extern u8 usart_send[25]; +void IdleTask(void); +uint16_t Checksum_u16(uint8_t* pdata, uint32_t len); void Dw1000_Init(void); void Tag_App(void); void Anchor_App(void); void tag_sleep_configuraion(void); -extern uint16_t g_Tagdist[TOTAL_TAG_NUM]; +extern uint16_t g_Tagdist[TAG_NUM_IN_SYS]; extern uint8_t g_flag_Taggetdist[256]; extern void TagDistClear(void); void Dw1000_App_Init(void); 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 59524bd..99177bc 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" @@ -25,13 +25,27 @@ if(g_com_map[0] != 0x55AA) { g_com_map[0] = 0x55AA; -// g_com_map[ALARM_DISTANCE1] = 100; //默认报警距离50cm -// g_com_map[ALARM_DISTANCE2] = 600; //默认报警距离50cm -// g_com_map[ALARM_DISTANCE3] = 900; //默认报警距离50cm -// g_com_map[ALARM_DEV] = 1; - g_com_map[DEV_ID_L] =0x04;//DEFAULT_DEV_ID; //默认设备ID - g_com_map[DEV_ID_H] =0x00;//DEFAULT_DEV_ID; //默认设备ID - g_com_map[COM_INTERVAL]=1000; + g_com_map[VERSION] = 0x0100; + g_com_map[DEV_ID] =0x04;//DEFAULT_DEV_ID; //默认设备ID + + g_com_map[COM_INTERVAL]=50; + g_com_map[MAX_REPORT_ANC_NUM]=2; + g_com_map[MIN_REPORT_ANC_NUM]=2; + g_com_map[DIST_OFFSET]=-26; + #ifdef WORK_MODE_TAG + g_com_map[DEV_ROLE] =0x1; + #else + g_com_map[DEV_ROLE] =0x0; + #endif + g_com_map[ANC_POLL]=0; + g_com_map[ALARM_DEV] = 1; + g_com_map[ALARM_DISTANCE1] = 100; //默认报警距离50cm + g_com_map[ALARM_DISTANCE2] = 600; //默认报警距离50cm + g_com_map[ALARM_DISTANCE3] = 900; //默认报警距离50cm + g_com_map[HEARTBEAT]=0; + g_com_map[CNT_RESTART]=0; + g_com_map[CNT_REBOOT]=0; + g_com_map[CNT_UPDATE]=0; save_com_map_to_flash(); } } diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/global_param.h" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/global_param.h" index 2438903..317c3fe 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/global_param.h" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/global_param.h" @@ -8,17 +8,27 @@ #define DEFAULT_DEV_ID 5555 //默认设备ID是5555 /*---------------Map Definition-------------------*/ -#define DEV_ROLE 0x10 //该设备是anchor还是tag -#define DEV_ID_L 0x11 //设备的Id号低8位 -#define DEV_ID_H 0x12 //设备的Id号高8位 -#define COM_INTERVAL 0x13 //通讯间隔 -#define DEV_GROUP_ID 0x14 //通讯组ID +#define VERSION 0x1 +#define DEV_ID 0x2 //设备的Id +#define COM_INTERVAL 0x3 //通讯间隔 +#define MAX_REPORT_ANC_NUM 0x4 //单次通讯基站上限 +#define MIN_REPORT_ANC_NUM 0x5 //单次通讯基站下限 +#define DIST_OFFSET 0x6 +#define DEV_ROLE 0x7 //该设备是anchor还是tag +#define ANC_POLL 0x8 //该设备是anchor还是tag -#define ALARM_DEV 0x20 //是哪个设备报警 -#define ALARM_DISTANCE1 0x21 //小于多少距离报警 -#define ALARM_DISTANCE2 0x22 //小于多少距离报警 -#define ALARM_DISTANCE3 0x23 //小于多少距离报警 -#define PAIR_ID 0x24 //小于多少距离报警 +#define ALARM_DEV 0x9 //是哪个设备报警 +#define ALARM_DISTANCE1 0xA //小于多少距离报警 +#define ALARM_DISTANCE2 0xB //小于多少距离报警 +#define ALARM_DISTANCE3 0xC //小于多少距离报警 +#define PAIR_ID 0xD //小于多少距离报警 +#define HEARTBEAT 0xE + +#define CNT_RESTART 0x30 +#define CNT_REBOOT 0x31 +#define CNT_UPDATE 0x32 + + /*------------END Map Definition-------------------*/ 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 fe9b6d4..60b4204 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" @@ -4,188 +4,124 @@ #include <stdio.h> #include "dw_app.h" #include "RTC.h" -uint8_t m_frame_data[MAX_FRAME_LEN] = {0}; -uint8_t m_frame_data_len = 0; -uint8_t g_pairstart=0; -void ParseFrame(void) + + +#define CMD_READ 1 +#define CMD_WRITE 2 +#define CMD_REPLY 3 +#define EUART_RX_BUF_SIZE 100 +typedef enum{ UsartReceiveWaitHead0, + UsartReceiveWaitHead1, + UsartReceiveWaitMsgType, + UsartReceiveWaitLength, + UsartReceiveWaitCMD, + UsartReceiveWaitIndex, + UsartReceiveWaitDataLen, + UsartReceiveWaitData, + UsartReceiveWaitChecksum +}UsartRecvPackState; +uint8_t mUsartReceivePack[100] = {0}; + +void SendComMap(uint8_t data_length, uint8_t index) { - if(!memcmp(m_frame_data, "DIS1", 4)) + static uint8_t send_frame[EUART_RX_BUF_SIZE]; + 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], data_length); + for(int i = 0; i<(data_length+5); i++) { - g_com_map[ALARM_DISTANCE1] =0; - for(uint8_t i=5; i < m_frame_data_len; i++) - { - if(m_frame_data[i]<58 && m_frame_data[i]>47) - { - g_com_map[ALARM_DISTANCE1] = g_com_map[ALARM_DISTANCE1]*10 + m_frame_data[i]- '0'; - } - else - { - printf("Error: Wrong DISTANCE.\r\n"); - break; - } - } - printf("When distance1 < %d cm, alarm1 is on.\n", g_com_map[ALARM_DISTANCE1]); - save_com_map_to_flash(); + checksum += send_frame[2+i]; } - else if(!memcmp(m_frame_data, "DIS2", 4)) - { - g_com_map[ALARM_DISTANCE2] =0; - for(uint8_t i=5; i < m_frame_data_len; i++) - { - if(m_frame_data[i]<58 && m_frame_data[i]>47) - { - g_com_map[ALARM_DISTANCE2] = g_com_map[ALARM_DISTANCE2]*10 + m_frame_data[i]- '0'; - } - else - { - printf("Error: Wrong DISTANCE.\r\n"); - break; - } - } - printf("When distance2 < %d cm, alarm2 is on.\n", g_com_map[ALARM_DISTANCE2]); - save_com_map_to_flash(); - } - else if(!memcmp(m_frame_data, "DIS3", 4)) - { - g_com_map[ALARM_DISTANCE3] =0; - for(uint8_t i=5; i < m_frame_data_len; i++) - { - if(m_frame_data[i]<58 && m_frame_data[i]>47) - { - g_com_map[ALARM_DISTANCE3] = g_com_map[ALARM_DISTANCE3]*10 + m_frame_data[i]- '0'; - } - else - { - printf("Error: Wrong DISTANCE.\r\n"); - break; - } - } - printf("When distance3 < %d cm, alarm3 is on.\n", g_com_map[ALARM_DISTANCE3]); - save_com_map_to_flash(); - } - else if(!memcmp(m_frame_data, "DEV", 3)) - { - g_com_map[ALARM_DEV] = m_frame_data[4]-'0'; - printf("Alarm device is %d. \n", g_com_map[ALARM_DEV]); - save_com_map_to_flash(); - } - else if(!memcmp(m_frame_data, "ID", 2)) - { - dev_id = 0; - for(uint8_t i=3; i < m_frame_data_len; i++) - { - if(m_frame_data[i]<='9' && m_frame_data[i]>='0') - { - dev_id = (dev_id<<4)|(m_frame_data[i]- '0'); - }else if(m_frame_data[i]<='f' && m_frame_data[i]>='a') - { - dev_id = (dev_id<<4)|(m_frame_data[i]- 'a'+10); - }else if(m_frame_data[i]<='F' && m_frame_data[i]>='A') - { - dev_id = (dev_id<<4)|(m_frame_data[i]- 'A'+10); - } - else - { - printf("Error: Wrong ID.\r\n"); - break; - } - } - g_com_map[DEV_ID_L] = dev_id; - g_com_map[DEV_ID_H] = dev_id>>16; - Dw1000_App_Init(); - printf("set dev id = %x. \r\n", dev_id); - save_com_map_to_flash(); - }else if(!memcmp(m_frame_data, "INT", 3)) - { - g_com_map[COM_INTERVAL] = 0; - for(uint8_t i=4; i < m_frame_data_len; i++) - { - if(m_frame_data[i]<58 && m_frame_data[i]>47) - { - g_com_map[COM_INTERVAL] = g_com_map[COM_INTERVAL]*10 + m_frame_data[i]- '0'; - } - else - { - printf("Error: Wrong COM_INTERVAL.\r\n"); - break; - } - } - printf("set dev interval = %d ms. \r\n", g_com_map[COM_INTERVAL]); - RTC_Configuration(g_com_map[COM_INTERVAL]*20); - save_com_map_to_flash(); - }else if(!memcmp(m_frame_data, "PAIRID", 6)) - { - g_com_map[PAIR_ID] = 0; - for(uint8_t i=7; i < m_frame_data_len; i++) - { - if(m_frame_data[i]<58 && m_frame_data[i]>47) - { - g_com_map[PAIR_ID] = g_com_map[PAIR_ID]*10 + m_frame_data[i]- '0'; - } - else - { - printf("Error: Wrong PAIR_ID.\r\n"); - break; - } - } - printf("set dev PAIR_ID = %d . \r\n", g_com_map[PAIR_ID]); - save_com_map_to_flash(); - }else if(!memcmp(m_frame_data, "STARTPAIR", 9)) - { - g_pairstart=1; - printf("Start Pair Mode. \r\n"); - }else{ - printf("Error: Wrong Command.\r\n"); - } + checksum = Checksum_u16(&send_frame[2],5+data_length); + memcpy(&send_frame[7+data_length],&checksum,2); + + UART_PushFrame(send_frame, data_length+9); } void UsartParseDataHandler(uint8_t data) { - static uint8_t s_usart_state = 0; - static uint8_t s_data_pos; + 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; + + - switch(s_usart_state) - { - case 0: - if(data=='A') s_usart_state= 1; - break; - - case 1: - if(data=='T') s_usart_state = 2; - break; + if(usart_receive_state == UsartReceiveWaitChecksum) { //若收到校验和包 + checksum = 0; + for(int i = 0; i<pack_length-5; i++) { + checksum += mUsartReceivePack[i]; + } + checksum += pack_cmd; + checksum += pack_length; + checksum += pack_index; + checksum += pack_datalen; + checksum += pack_msgtype; + if((data + checksum)&0xff == 0xFF) //校验通过 + { + switch(pack_cmd) + { + case CMD_WRITE: + //从mUsartReceivePack中读取pack_length长度的字节,放到全局变量中 + memcpy((uint8_t*)&g_com_map + pack_index, mUsartReceivePack, pack_length); + //返回一个error状态 + //SendComMap(pack_datalen,pack_index); + save_com_map_to_flash(); + delay_ms(100); + NVIC_SystemReset(); + break; + case CMD_READ: + //read包中data字节,即mUsartReceivePack[0]表示数据长度; + //从g_com_data结构体中的第index位置读取长度为mUsartReceivePack[0]的字节,发送出来 + SendComMap(pack_datalen,pack_index>>1); + break; + default: + break; + } + } + usart_receive_state = UsartReceiveWaitHead0; + pack_index = 0; + pack_length = 0; + index=0; + } else if((usart_receive_state == UsartReceiveWaitData) && (pack_index < pack_length)) { //若果收到的是正常通讯包 + mUsartReceivePack[index] = data; + index++; + if(index == pack_length-5) { //如果收到的index与长度相等 + usart_receive_state = UsartReceiveWaitChecksum; + } + } else if(usart_receive_state == UsartReceiveWaitDataLen) { //收到指令类型字节 + pack_datalen = data; + usart_receive_state = UsartReceiveWaitData; + }else if(usart_receive_state == UsartReceiveWaitIndex) { //收到指令类型字节 + pack_index = data; + usart_receive_state = UsartReceiveWaitDataLen; + } else if(usart_receive_state == UsartReceiveWaitCMD) { //收到指令类型字节 + pack_cmd = data; + usart_receive_state = UsartReceiveWaitIndex; + } else if(usart_receive_state == UsartReceiveWaitLength) { //收到长度字节 - case 2: - if(data=='+') - { - s_usart_state = 3; - s_data_pos = 0; - m_frame_data_len = 0; - } - break; - - case 3: - m_frame_data_len = s_data_pos; - m_frame_data[s_data_pos++] = data; - if(data == 0x0d) - { - s_usart_state = 4; - } - if(s_data_pos >= MAX_FRAME_LEN) //如果超过最大长度 - { - m_frame_data_len = MAX_FRAME_LEN; - ParseFrame(); - s_usart_state = 0; - } - break; - - case 4: - if(data == 0x0a) - { - ParseFrame(); - s_usart_state = 0; - } - break; - - default: break; + pack_length = data; + pack_index = 0; + usart_receive_state = UsartReceiveWaitCMD; + + } 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) && (data == 0x3)) { + usart_receive_state = UsartReceiveWaitLength; + pack_msgtype = data; } + else { + usart_receive_state = UsartReceiveWaitHead0; + pack_index = 0; + pack_length = 0; + } + } diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" index 5cf332a..e07463e 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/main.c" @@ -29,25 +29,39 @@ } u8 anchor_type; u32 dev_id; +u8 hbsend[16]; +void HeartBeatInit(void) +{ + u16 checksum; + hbsend[0]=0x55; + hbsend[1]=0xAA; + hbsend[2]=0x2; + hbsend[3]=0xc; + memcpy(&hbsend[4],&g_com_map[DEV_ID],2); + checksum = Checksum_u16(&hbsend[2],12); + memcpy(&hbsend[14],&checksum,2); +} void Program_Init(void) {uint16_t i; Usart1ParseDataCallback = UsartParseDataHandler; parameter_init(); //deca_sleep(1000); - dev_id = g_com_map[DEV_ID_H]<<16|g_com_map[DEV_ID_L]; - #ifdef WORK_MODE_TAG + HeartBeatInit(); + dev_id = g_com_map[DEV_ID]; + if(g_com_map[DEV_ROLE]) + { printf("标签ID: %d .\r\n",dev_id); printf("通讯间隔: %d ms.\r\n",g_com_map[COM_INTERVAL]); - printf("单次通讯基站数量: %d个.\r\n",REPOET_ANC_NUM); - #else - anchor_type = dev_id%REPOET_ANC_NUM; + printf("单次通讯基站数量: %d个.\r\n",g_com_map[MAX_REPORT_ANC_NUM]); + }else{ + anchor_type = dev_id%g_com_map[MAX_REPORT_ANC_NUM]; printf("基站ID: %x .\r\n",dev_id); printf("基站类型: %c .\r\n",anchor_type+0x41); - printf("单次通讯基站数量: %d个.\r\n",REPOET_ANC_NUM); - + printf("单次通讯基站数量: %d个.\r\n",g_com_map[MAX_REPORT_ANC_NUM]); + } // printf("DEVICE PAIRID: %d .\r\n",g_com_map[PAIR_ID]); // printf("DEVICE ALARM DISTANCE: 1.%d 2.%d 3.%d .\r\n",g_com_map[ALARM_DISTANCE1],g_com_map[ALARM_DISTANCE2],g_com_map[ALARM_DISTANCE3]); - #endif + for(i=0;i<255;i++) { @@ -64,7 +78,41 @@ * * @return none */ +void HeatBeat(void) +{ +UART_PushFrame(hbsend,16); +} +u16 heartbeat_timer,poll_timer; +void IdleTask(void) +{ + UART_CheckReceive(); + UART_CheckSend(); + if(heartbeat_timer>1000) + { + heartbeat_timer=0; + if(g_com_map[HEARTBEAT]&&g_com_map[DEV_ROLE]==0) + HeatBeat(); + } + if(poll_timer>=g_com_map[COM_INTERVAL]-tag_delaytime) + { + poll_timer=0; + if(g_com_map[ANC_POLL]||g_com_map[DEV_ROLE]) + { + if(g_com_map[DEV_ROLE]==0) + {int8_t correction_time; + correction_time=tag_timer-(GROUP_TAG_NUM+1)*3; + tag_delaytime=correction_time; + if(tag_delaytime>g_com_map[COM_INTERVAL]/2) + { + tag_delaytime=tag_delaytime-g_com_map[COM_INTERVAL]; + } + } + g_start_send_flag=1; + } + + } + } int main(void) { @@ -72,10 +120,6 @@ Program_Init(); Dw1000_Init(); delay_ms(10); -//#ifdef WORK_MODE_TAG - RTC_Configuration(g_com_map[COM_INTERVAL]*20); -// tag_sleep_configuraion(); -//#endif Dw1000_App_Init(); /* Loop forever initiating ranging exchanges. */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); @@ -83,19 +127,16 @@ usart_send[1]=0xAA; while(1) { - UART_CheckSend(); + IdleTask(); if(g_start_send_flag) { g_start_send_flag = 0; Tag_App(); } -// UART_CheckReceive(); - //PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); -#ifdef WORK_MODE_ANCHOR + +if(g_com_map[DEV_ROLE]==0) Anchor_App(); -#endif - } } diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.c" index ba07c44..ab9ecfb 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/stm32f10x_it.c" @@ -33,27 +33,35 @@ uint8_t tt=0; uint8_t g_start_send_flag = 0; uint16_t sysscal; -u16 tag_recv_timer; -extern uint16_t g_Resttimer; +u16 tag_recv_timer, tag_timer; +extern uint16_t g_Resttimer,heartbeat_timer; extern uint8_t g_pairstart; + void SysTick_Handler(void) { time32_incr++; g_UWB_com_interval++; + heartbeat_timer++; + poll_timer++; + if(tag_timer++>=g_com_map[COM_INTERVAL]) + {tag_timer=0;} if(g_Resttimer++>2000) { NVIC_SystemReset(); } + // if(g_UWB_com_interval > 1000) // { // dis_after_filter = DEFAULT_DISTANCE; // } //#ifdef WORK_MODE_ANCHOR - //tag_recv_timer++; -// TagDistClear(); -// if(g_pairstart!=1) -// main_logic(); + if(!g_com_map[DEV_ROLE]) + {tag_recv_timer++; + TagDistClear(); + //if(g_pairstart!=1) + main_logic(); + } //#endif } @@ -70,18 +78,6 @@ } } -void RTCAlarm_IRQHandler(void) -{ - // LED0_BLINK; - RCC_Configuration(); - // LED0_BLINK; - EXTI_ClearITPendingBit(EXTI_Line17); - RTC_ClearITPendingBit(RTC_FLAG_ALR); - g_start_send_flag = 1; - - tt++; - //SYS.wake_id|=1<<17; -} void USART1_IRQHandler(void) { if(USART_GetITStatus(EXT_UART, USART_IT_RXNE) != RESET)//????????? -- Gitblit v1.9.3