| | |
| | | * @{
|
| | | */
|
| | | #if !defined (HSE_VALUE)
|
| | | #define HSE_VALUE 8000000U /*!< Value of the HSE oscillator in Hz */
|
| | | #define HSE_VALUE 12000000U /*!< Value of the HSE oscillator in Hz */
|
| | | #endif /* HSE_VALUE */
|
| | |
|
| | | #if !defined (HSI_VALUE)
|
| | |
| | | /* Define to prevent recursive inclusion -------------------------------------*/
|
| | | #ifndef __BSP_H__
|
| | | #define __BSP_H__
|
| | |
|
| | | #include "stm32f0xx_ll_rcc.h"
|
| | | #include "stm32f0xx_ll_adc.h"
|
| | | #include "stm32f0xx_ll_crc.h"
|
| | | #include "stm32f0xx_ll_dma.h"
|
| | | #include "stm32f0xx_ll_spi.h"
|
| | | #include "stm32f0xx_ll_usart.h"
|
| | | #include "stm32f0xx_ll_rcc.h"
|
| | | #include "stm32f0xx_ll_system.h"
|
| | | #include "stm32f0xx_ll_gpio.h"
|
| | | #include "stm32f0xx_ll_exti.h"
|
| | |
| | | #include "stm32f0xx_ll_cortex.h"
|
| | | #include "stm32f0xx_ll_utils.h"
|
| | | #include "stm32f0xx_ll_pwr.h"
|
| | | #include "stm32f0xx_ll_tim.h"
|
| | |
|
| | | void SystemClock_Config(void);
|
| | | void MX_IWDG_Init(void);
|
| | |
| | | void MX_DMA_Init(void);
|
| | | void MX_USART1_UART_Init(void);
|
| | | void MX_USART2_UART_Init(void);
|
| | | void MX_TIM6_Init(void);
|
| | | void MX_SPI1_Init(void);
|
| | | void MX_SPI2_Init(void);
|
| | |
|
| | |
| | | BOARD_V42_SLAVE, //10 New V4.2 Slave 8 in 8 o
|
| | |
|
| | | BOARD_V30_MINI =11, //11 Mini Board
|
| | | |
| | | BOARD_EXT_FP0 = 12,
|
| | | BOARD_V45_NET = 13,
|
| | | BOARD_V50_RADIO = 15, |
| | | };
|
| | |
|
| | | #define XLAT_FREQ 8
|
| | | #define BOARD_TYPE 9
|
| | | #define BOARD_TYPE 11
|
| | | #define XLAT_FREQ 12
|
| | |
|
| | |
|
| | | extern int GetBoardType(void);
|
| | | #define GetBoardType() (BOARD_TYPE)
|
| | |
|
| | | extern volatile int PendSvCount;
|
| | |
|
| | |
| | | #define __KBUS_H__
|
| | | typedef unsigned char uchar;
|
| | |
|
| | | extern int bMaster,bSlave;
|
| | | extern unsigned char bMaster,bSlave,bRepeater;
|
| | | enum enCMDs
|
| | | {
|
| | | cmdNone = '0', //Nothing
|
| | |
| | | extern unsigned char nCurPollId;
|
| | | extern unsigned char nSeq;
|
| | |
|
| | | extern volatile int MasterRecved;
|
| | | extern volatile int MasterRecvOK;
|
| | | extern volatile int SlaveRecved;
|
| | | extern volatile unsigned char MasterRecved;
|
| | | extern volatile unsigned char MasterRecvOK;
|
| | | extern volatile unsigned char SlaveRecved;
|
| | | extern unsigned int SendTimeuS;
|
| | | extern volatile int RecvTimeuS;
|
| | | extern int DelayuS;
|
| | |
| | | };
|
| | | };
|
| | | } stChnStat;
|
| | | extern stChnStat ChnStats[8];
|
| | |
|
| | | extern stChnStat ChnStats[9];
|
| | |
|
| | | typedef struct tagSlaveStat
|
| | | {
|
| | |
| | | S_TIMEOUT=2
|
| | |
|
| | | } ;
|
| | |
|
| | | int RepeaterFunc(int nChn);
|
| | | int MasterFunc(int nChn);
|
| | | int SlaveFunc(int nChn);
|
| | |
|
| | | unsigned char BCC(void * pData, int nSize);
|
| | | //
|
| | |
|
| | | /* Make a Packet and return Packet Length */
|
| | | int MakePacket(pPacket p1,uchar Src, uchar Dst, uchar nType, uchar nSEQ, uchar DataLen, void *pData );
|
| | |
|
| | | /* */
|
| | | int CheckPacket(pPacket p1,int len1);
|
| | | int CheckPacket(int nChn, pPacket p1, int len1);
|
| | |
|
| | | /* */
|
| | | int ParsePacket(pPacket p1, int Len1);
|
| | | int ParsePacket(int nChn, pPacket p1, int Len1);
|
| | | typedef struct tagMachineConfig
|
| | | {
|
| | | int bMaster;
|
| | |
| | |
|
| | | } ;
|
| | |
|
| | | enum {KLSignStart='%',
|
| | | KLSignReply='U',
|
| | | enum {KLSignStart='%', //0x25
|
| | | KLSignReply='U', //0x55
|
| | | KLSignEnd=0x0D,
|
| | | KLMaxPacketLength=64,
|
| | | };
|
| | |
| | | int KLMakeRplyPacket(void * pBuf1, uchar Dst, uchar Status, uchar nCmd, uchar DataLen, const void *pData );
|
| | |
|
| | | /* */
|
| | | int KLCheckPacket(void * pBuf1,int len1);
|
| | | int KLCheckPacket(int nChn, void * pBuf1, int len1);
|
| | |
|
| | | /* */
|
| | | int KLParsePacket(void * pBuf1, int Len1);
|
| | | int KLParsePacket(int nChn, void * pBuf1, int Len1);
|
| | |
|
| | | //int ReadData(void);
|
| | |
|
| | |
| | | typedef unsigned short WORD;
|
| | | typedef unsigned char BYTE;
|
| | |
|
| | | #define LoBofW(x) ((x)&0xff)
|
| | | #define HiBofW(x) (((x)>>8)&0xff)
|
| | |
|
| | | #define LoHofB(x) ((x)&0xf)
|
| | | #define HiHofB(x) (((x)>>4)&0xf)
|
| | |
|
| | | enum enStoreCfg
|
| | | {
|
| | | START_SIGN = 0x55aa,
|
| | |
| | | PortType_KNet = 4, // KNetͨѶ
|
| | | PortType_ModbusRTU = 5, //Modbus RTU ͨѶ
|
| | | };
|
| | |
|
| | | //每个模块有 0/1/2/3/4/5/6/7/8个 通讯port
|
| | | //不限于 UART, 网口,无线,单总线等,都是port
|
| | | //甚至可以有虚拟的port
|
| | |
|
| | | typedef struct tagPortStat
|
| | | {
|
| | | UCHAR nWorking; //工作中
|
| | | UCHAR nStation; //自己站号
|
| | | UCHAR bBus; //总线?,,全双工?
|
| | | UCHAR bMaster; //主机
|
| | | UCHAR PortType; //端口工作模式
|
| | | UCHAR nDevices; //连接的设备数量//不包括自己 //device list;
|
| | | |
| | | }stPortStat,*pPortStat;
|
| | |
|
| | | enum enKeventType
|
| | | {
|
| | |
| | | unsigned char CurVALs[TOTAL_CurVAL];
|
| | | unsigned char CurVAL;
|
| | | stTimer Timers[TOTALTIMERS];
|
| | | |
| | |
|
| | | union {
|
| | | unsigned short WX[KLDataWXCount]; //本机的X和Y
|
| | | unsigned char WXB[KLDataWXCount*2]; |
| | | };
|
| | | union {
|
| | | unsigned short WY[KLDataWYCount]; //本机的X和Y
|
| | | unsigned char WYB[KLDataWYCount*2]; //本机的X和Y
|
| | | }; |
| | | unsigned short WR[KLDataWRCount];
|
| | |
|
| | | unsigned short WT[16];
|
| | |
| | | unsigned short WLR[16];
|
| | | unsigned short WSR[16];
|
| | |
|
| | | union {
|
| | | unsigned int DTD[KLDataDTCount];
|
| | | unsigned short DT[KLDataDTCount];
|
| | | |
| | | unsigned char DTB[KLDataDTCount*2];
|
| | | }; |
| | | // 配置寄存器
|
| | | // 系统状态寄存器
|
| | | // 特殊寄存器
|
| | |
| | | extern stKMem KMem;
|
| | | extern const stKMInfoBlock KMInfoBlock;
|
| | |
|
| | | extern volatile int PowerDownEvent;
|
| | | extern volatile int OldPowerDownEvent;
|
| | | extern volatile int OldPowerDownEventTime;
|
| | |
|
| | | int KMachineInit(void);
|
| | | int ReadFlashMem(void * pBuf, void * pAddrFlash, int nByteSize);
|
| | | int WriteToFlashMemNoErase(void * pBuf, void * pAddrFlash, unsigned int nByteSize);
|
| | |
| | | int Uart3TriggerSendDMA(void );
|
| | | void TriggerPendSV(void);
|
| | | void PendSvCallBack(void);
|
| | | |
| | | void SPI1_IRQ_CallBack(void);
|
| | |
|
| | | void Uart1SendDone(void);
|
| | | void Uart1RecvDone(void);
|
| | | void Uart2SendDone(void);
|
| | | void Uart2RecvDone(void);
|
| | | int PutStr(char * str1, int len1);
|
| | | void clearscreen(void );
|
| | | void Locate(int x,int y);
|
| | | int SendPacket1(void * pBuf,int len1);
|
| | | int SendPacket2(pPacket p1,int len1);
|
| | | int SendPacket(int nChn, void * pBuf,int len1);
|
| | | //int SendPacket1(void * pBuf,int len1);
|
| | | //int SendPacket2(pPacket p1,int len1);
|
| | | void ToggleRunLed(void );
|
| | | void ToggleErrLed(void );
|
| | | void ToggleOutStat(void );
|
| | |
| | | void EnableDisIn(uchar bEnable);
|
| | | void displayInput(unsigned int cc);
|
| | | void PutOutputSPI1(unsigned int Y);
|
| | | |
| | |
|
| | | #endif /* __MYFUNCTIONS_H__ */
|
| | |
| | | #include "stm32f0xx_ll_exti.h"
|
| | | #include "stm32f0xx_ll_bus.h"
|
| | | #include "stm32f0xx_ll_cortex.h"
|
| | | #include "stm32f0xx_ll_tim.h"
|
| | | #include "stm32f0xx_ll_utils.h"
|
| | | #include "stm32f0xx_ll_pwr.h"
|
| | |
|
| | |
| | | * (when HSE is used as system clock source, directly or through the PLL).
|
| | | */
|
| | | #if !defined (HSE_VALUE)
|
| | | #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
|
| | | #define HSE_VALUE ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */
|
| | | #endif /* HSE_VALUE */
|
| | |
|
| | | /**
|
| | |
| | | void SVC_Handler(void);
|
| | | void PendSV_Handler(void);
|
| | | void SysTick_Handler(void);
|
| | | void TIM6_IRQHandler(void);
|
| | | void SPI1_IRQHandler(void);
|
| | | void DMA1_Channel2_3_IRQHandler(void);
|
| | | void DMA1_Channel4_5_IRQHandler(void);
|
| | | void USART1_IRQHandler(void);
|
| | |
| | | <View> |
| | | <WinId>38003</WinId> |
| | | <ViewName>Registers</ViewName> |
| | | <TableColWidths>115 79</TableColWidths> |
| | | <TableColWidths>115 179</TableColWidths> |
| | | </View> |
| | | <View> |
| | | <WinId>346</WinId> |
| | | <ViewName>Code Coverage</ViewName> |
| | | <TableColWidths>1010 160</TableColWidths> |
| | | <TableColWidths>1010 988</TableColWidths> |
| | | </View> |
| | | <View> |
| | | <WinId>204</WinId> |
| | | <ViewName>Performance Analyzer</ViewName> |
| | | <TableColWidths>1170</TableColWidths> |
| | | <TableColWidths>1170 175 175 478</TableColWidths> |
| | | </View> |
| | | </SECTreeCtrl> |
| | | |
| | |
| | | <WinId>1506</WinId> |
| | | <ViewName>Symbols</ViewName> |
| | | <UserString></UserString> |
| | | <TableColWidths>80 80 80</TableColWidths> |
| | | <TableColWidths>106 106 106</TableColWidths> |
| | | </View> |
| | | <View> |
| | | <WinId>1936</WinId> |
| | | <ViewName>Watch 1</ViewName> |
| | | <UserString></UserString> |
| | | <TableColWidths>80 80 80</TableColWidths> |
| | | <TableColWidths>106 106 106</TableColWidths> |
| | | </View> |
| | | <View> |
| | | <WinId>1937</WinId> |
| | | <ViewName>Watch 2</ViewName> |
| | | <UserString></UserString> |
| | | <TableColWidths>80 80 80</TableColWidths> |
| | | <TableColWidths>106 106 106</TableColWidths> |
| | | </View> |
| | | <View> |
| | | <WinId>1935</WinId> |
| | | <ViewName>Call Stack + Locals</ViewName> |
| | | <UserString></UserString> |
| | | <TableColWidths>80 80 80</TableColWidths> |
| | | <TableColWidths>208 106 106</TableColWidths> |
| | | </View> |
| | | <View> |
| | | <WinId>2506</WinId> |
| | | <ViewName>Trace Data</ViewName> |
| | | <UserString>FiltIdx=0;DescrEn=0;DescrHeight=4;FuncTrc=1;FindType=8;ColWidths=004B00870082005F004600E600C80096</UserString> |
| | | <TableColWidths>75 135 130 95 70 230 200 150</TableColWidths> |
| | | <TableColWidths>75 135 95 70 230 200 150</TableColWidths> |
| | | </View> |
| | | </TreeListPane> |
| | | |
| | |
| | | <sActiveDebugView></sActiveDebugView> |
| | | <WindowPosition> |
| | | <length>44</length> |
| | | <flags>0</flags> |
| | | <showCmd>1</showCmd> |
| | | <flags>2</flags> |
| | | <showCmd>3</showCmd> |
| | | <MinPosition> |
| | | <xPos>-32000</xPos> |
| | | <yPos>-32000</yPos> |
| | |
| | | <yPos>-1</yPos> |
| | | </MaxPosition> |
| | | <NormalPosition> |
| | | <Top>26</Top> |
| | | <Left>-7</Left> |
| | | <Right>1927</Right> |
| | | <Bottom>1040</Bottom> |
| | | <Top>124</Top> |
| | | <Left>-2182</Left> |
| | | <Right>-249</Right> |
| | | <Bottom>1177</Bottom> |
| | | </NormalPosition> |
| | | </WindowPosition> |
| | | <MDIClientArea> |
| | | <RegID>0</RegID> |
| | | <MDITabState> |
| | | <Len>1855</Len> |
| | | <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000010000002800000028000000020000000F0000000E0000000000000042443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C504C4366756E6374696F6E732E68000000000E504C4366756E6374696F6E732E6801000000C5D4F200FFFFFFFF3F443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C66756E6374696F6E732E68000000000B66756E6374696F6E732E6801000000FFDC7800FFFFFFFF3A443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C6D61696E2E6800000000066D61696E2E6801000000BECEA100FFFFFFFF39443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C4253502E6800000000054253502E6801000000F0A0A100FFFFFFFF3E443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C4B4D616368696E652E68000000000A4B4D616368696E652E6801000000BCA8E100FFFFFFFF3A443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C6D61696E2E6300000000066D61696E2E63010000009CC1B600FFFFFFFF3B443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C4B4C696E6B2E6800000000074B4C696E6B2E6801000000F7B88600FFFFFFFF63443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C447269766572735C53544D3332463078785F48414C5F4472697665725C496E635C73746D3332663078785F6C6C5F6164632E68000000001273746D3332663078785F6C6C5F6164632E6801000000D9ADC200FFFFFFFF67443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C447269766572735C434D5349535C4465766963655C53545C53544D3332463078785C496E636C7564655C73746D33326630333078382E68000000000D73746D33326630333078382E6801000000A5C2D700FFFFFFFF64443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C447269766572735C53544D3332463078785F48414C5F4472697665725C5372635C73746D3332663078785F68616C5F7263632E63000000001373746D3332663078785F68616C5F7263632E6301000000B3A6BE00FFFFFFFF3F443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C4D6F646275735254552E68000000000B4D6F646275735254552E6801000000EAD6A300FFFFFFFF3A443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C4B4275732E6300000000064B4275732E6301000000F6FA7D00FFFFFFFF3A443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C4B4275732E6800000000064B4275732E6801000000B5E99D00FFFFFFFF3F443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C476C6F62616C6465662E68000000000B476C6F62616C6465662E68010000005FC3CF00FFFFFFFF60443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C447269766572735C53544D3332463078785F48414C5F4472697665725C5372635C73746D3332663078785F68616C2E63000000000F73746D3332663078785F68616C2E6301000000C1838300FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000D100000088000000490300002F03000001000000000000000100000039443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C4253502E6300000000054253502E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000049030000880000007F0700002F030000</Data> |
| | | <Len>1846</Len> |
| | | <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000010000002800000028000000020000000800000005000000010000003F443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C66756E6374696F6E732E68000000000B66756E6374696F6E732E6801000000BECEA100FFFFFFFF39443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C4253502E6800000000054253502E6801000000BCA8E100FFFFFFFF3E443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C4B4D616368696E652E68000000000A4B4D616368696E652E68010000009CC1B600FFFFFFFF3B443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C4B4C696E6B2E6800000000074B4C696E6B2E6801000000F7B88600FFFFFFFF3A443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C4B4275732E6800000000064B4275732E6801000000F6FA7D00FFFFFFFF3F443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C476C6F62616C6465662E68000000000B476C6F62616C6465662E6801000000B5E99D00FFFFFFFF3F443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C476C6F62616C4465662E63000000000B476C6F62616C4465662E6301000000A5C2D700FFFFFFFF3B443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C64656275672E63000000000764656275672E6301000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000003EF7FFFF6B00000045FBFFFF270400000A000000080000000000000039443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C4253502E6300000000054253502E6300000000C5D4F200FFFFFFFF42443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C73746D3332663078785F69742E63000000000E73746D3332663078785F69742E6300000000FFDC7800FFFFFFFF3A443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF3F443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C66756E6374696F6E732E63000000000B66756E6374696F6E732E6300000000F0A0A100FFFFFFFF3B443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C4B4C696E6B2E6300000000074B4C696E6B2E6300000000BCA8E100FFFFFFFF3F443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C4D6F646275735254552E63000000000B4D6F646275735254552E6300000000FFDC7800FFFFFFFF3A443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C6D61696E2E6800000000066D61696E2E6800000000F7B88600FFFFFFFF3A443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C4B4275732E6300000000064B4275732E6300000000D9ADC200FFFFFFFF3E443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C5372635C4B4D616368696E652E63000000000A4B4D616368696E652E6300000000A5C2D700FFFFFFFF3B443A5C574F524B5C4D4355265043425C444953545F494F5C46303330433854365F4B4C696E6B5F32303231303632305C496E635C64656275672E68000000000764656275672E6800000000B3A6BE00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD50001000000000000000200000045FBFFFF6B0000000000000027040000</Data> |
| | | </MDITabState> |
| | | </MDIClientArea> |
| | | <ViewEx> |
| | |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | | <Data>F5000000880000009105000018010000</Data> |
| | | <Data>F40000006600000090050000F6000000</Data> |
| | | </RectRecentFloat> |
| | | </Window> |
| | | <Window> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>0300000066000000C9000000DD020000</Data> |
| | | <Data>030000006600000037010000F2030000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>0300000066000000C9000000DD020000</Data> |
| | | <Data>030000006600000037010000F2030000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>0300000066000000C9000000DD020000</Data> |
| | | <Data>030000006600000037010000F2030000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>0300000066000000C9000000DD020000</Data> |
| | | <Data>030000006600000037010000F2030000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>03000000110300007B070000A3030000</Data> |
| | | <Data>0300000026040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>03000000110300007B070000A3030000</Data> |
| | | <Data>0300000026040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>0300000066000000C9000000DD020000</Data> |
| | | <Data>030000006600000037010000F2030000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>03000000110300007B070000A3030000</Data> |
| | | <Data>0300000026040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>03000000110300007B070000A3030000</Data> |
| | | <Data>0300000026040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>00000000BC0300007E070000CF030000</Data> |
| | | <Data>000000004E050000000A000061050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | </Window> |
| | | <DockMan> |
| | | <Len>3119</Len> |
| | | <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000F5000000880000009105000018010000F40000004F00000090050000DF0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A1040000880000009105000062020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFCC0000004F000000D0000000F602000001000000020000100400000001000000D3FEFFFFC6030000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000100000088000000CD0000002F030000000000004F000000CC000000F60200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000010000005202000091050000F6020000000000001902000090050000BD02000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F60200007E070000FA02000001000000010000100400000001000000B9FCFFFF45000000FFFFFFFF04000000C5000000C7000000B4010000779400000180008000000100000001000000330300007F070000F503000000000000FA0200007E070000BC0300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data> |
| | | <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF3A0100004F0000003E0100000B0400000100000002000010040000000100000036FFFFFF2B090000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000003A01000022040000000000004F0000003A0100000B0400000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000000B040000000A00000F04000001000000010000100400000001000000CCFBFFFFC0000000FFFFFFFF04000000C5000000C7000000B401000077940000018000800000010000000000000026040000000A000065050000000000000F040000000A00004E0500000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data> |
| | | </DockMan> |
| | | <ToolBar> |
| | | <RegID>59392</RegID> |
| | | <Name>File</Name> |
| | | <Buttons> |
| | | <Len>2025</Len> |
| | | <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000009584C41545F465245519600000000000000010009584C41545F4652455100000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data> |
| | | <Len>2372</Len> |
| | | <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000630303030303096000000000000001400074C6174616E63790C5061636B65744C656E677468054461746173134C617374436972636C65537461727454696D650A436972636C6554696D650C54696D654F7574436F756E74076E436F756E7432000D5075744F757470757453504931094853455F56414C5545195243435F504C4C5F47657446726571446F6D61696E5F535953165243435F47657453797374656D436C6F636B46726571063030303030301A4C4C5F5243435F47657453797374656D436C6F636B7346726571144C4C5F5243435F436C6F636B735479706544656610535953434C4B5F4672657175656E63791275736172745F6672657175656E6379203D200C55617274316261756476616C095561727431426175641044656661756C745561727431426175640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data> |
| | | </Buttons> |
| | | <OriginalItems> |
| | | <Len>1423</Len> |
| | |
| | | <Name>Build</Name> |
| | | <Buttons> |
| | | <Len>690</Len> |
| | | <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000E46303330433854365F5465737432960000000000000001000E46303330433854365F5465737432000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000</Data> |
| | | <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000E46303330433854365F5465737432960000000000000001000E46303330433854365F5465737432000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64CF010000</Data> |
| | | </Buttons> |
| | | <OriginalItems> |
| | | <Len>583</Len> |
| | |
| | | </ToolBar> |
| | | <ControlBarsSummary> |
| | | <Bars>0</Bars> |
| | | <ScreenCX>1920</ScreenCX> |
| | | <ScreenCY>1080</ScreenCY> |
| | | <ScreenCX>2560</ScreenCX> |
| | | <ScreenCY>1440</ScreenCY> |
| | | </ControlBarsSummary> |
| | | </ViewEx> |
| | | <ViewEx> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>340100004F0000008C0600003E010000</Data> |
| | | <Data>340100004F0000000C0900003E010000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | | <Data>34010000660000008C06000055010000</Data> |
| | | <Data>34010000660000000C09000055010000</Data> |
| | | </RectRecentFloat> |
| | | </Window> |
| | | <Window> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>03000000660000002D010000AD020000</Data> |
| | | <Data>03000000660000002D01000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>03000000660000002D010000AD020000</Data> |
| | | <Data>03000000660000002D01000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>37010000660000008906000025010000</Data> |
| | | <Data>37010000660000000909000025010000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>03000000660000002D010000AD020000</Data> |
| | | <Data>03000000660000002D01000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>03000000660000002D010000AD020000</Data> |
| | | <Data>03000000660000002D01000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>00000000CA020000C0030000E6030000</Data> |
| | | <Data>0000000032040000000500004E050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>34010000630000008C0600003E010000</Data> |
| | | <Data>34010000630000000C0900003E010000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>37010000660000008906000025010000</Data> |
| | | <Data>37010000660000000909000025010000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>37010000660000008906000025010000</Data> |
| | | <Data>37010000660000000909000025010000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>37010000660000008906000025010000</Data> |
| | | <Data>37010000660000000909000025010000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>37010000660000008906000025010000</Data> |
| | | <Data>37010000660000000909000025010000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <Window> |
| | | <RegID>35901</RegID> |
| | | <PaneID>35901</PaneID> |
| | | <IsVisible>0</IsVisible> |
| | | <IsVisible>1</IsVisible> |
| | | <IsFloating>0</IsFloating> |
| | | <IsTabbed>0</IsTabbed> |
| | | <IsActivated>0</IsActivated> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>03000000660000002D010000AD020000</Data> |
| | | <Data>03000000660000002D01000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>C7030000E10200007D070000CD030000</Data> |
| | | <Data>0705000049040000FD09000035050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>93060000660000007D070000AD020000</Data> |
| | | <Data>1309000066000000FD09000015040000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | <RecentRowIndex>0</RecentRowIndex> |
| | | <RectRecentDocked> |
| | | <Len>16</Len> |
| | | <Data>00000000E603000080070000F9030000</Data> |
| | | <Data>000000004E050000000A000061050000</Data> |
| | | </RectRecentDocked> |
| | | <RectRecentFloat> |
| | | <Len>16</Len> |
| | |
| | | </RectRecentFloat> |
| | | </Window> |
| | | <DockMan> |
| | | <Len>3128</Len> |
| | | <Data>000000000B000000000000000020000001000000FFFFFFFFFFFFFFFF340100003E0100008C060000420100000100000001000010040000000100000076FEFFFF6E000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000100000034010000660000008C06000055010000340100004F0000008C0600003E0100000000000040280056060000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000001000000FFFFFFFFFFFFFFFF8C0600004F00000090060000C6020000010000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000001000000900600006600000080070000DD020000900600004F00000080070000C602000000000000404100562B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF06555341525432010000003E8C000001000000FFFFFFFFFFFFFFFF03524343010000003F8C000001000000FFFFFFFFFFFFFFFF0001000000408C000001000000FFFFFFFFFFFFFFFF0001000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFF13000000000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF300100004F00000034010000C6020000010000000200001004000000010000005CFFFFFFDD050000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000006600000030010000DD020000000000004F00000030010000C60200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF00000000C602000080070000CA0200000100000001000010040000000100000036FFFFFF6C01000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000001000000C4030000E102000080070000FD030000C4030000CA02000080070000E603000000000000404100560E0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF050000000000000001000000000000000100000001000000FFFFFFFFC0030000CA020000C4030000E603000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000520300008007000056030000000000000100000004000000010000000000000000000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000000000000000000006D03000080070000FD030000000000005603000080070000E60300000000000040820046040000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data> |
| | | <Len>3132</Len> |
| | | <Data>000000000B000000000000000020000001000000FFFFFFFFFFFFFFFF340100003E0100000C090000420100000100000001000010040000000100000076FEFFFF6E000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E65002000000100000034010000660000000C09000055010000340100004F0000000C0900003E0100000000000040280056060000000B446973617373656D626C7901000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000001000000FFFFFFFFFFFFFFFF0C0900004F000000100900002E040000010000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000010000001009000066000000000A000045040000100900004F000000000A00002E04000000000000404100562B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF0454494D36010000003D8C000001000000FFFFFFFFFFFFFFFF06555341525432010000003E8C000001000000FFFFFFFFFFFFFFFF03524343010000003F8C000001000000FFFFFFFFFFFFFFFF0001000000408C000001000000FFFFFFFFFFFFFFFF0001000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFF12000000000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF300100004F000000340100002E040000010000000200001004000000010000005CFFFFFFDD050000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000003001000045040000000000004F000000300100002E0400000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF04000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000001000000FFFFFFFFFFFFFFFF000000002E040000000A0000320400000100000001000010040000000100000036FFFFFF6C01000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB090000018000800000010000000405000049040000000A0000650500000405000032040000000A00004E05000000000000404100560E0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF050000000000000001000000000000000100000001000000FFFFFFFF0005000032040000040500004E05000001000000020000100400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000000000000FFFFFFFFFFFFFFFF00000000520300008007000056030000000000000100000004000000010000000000000000000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000000000000000000006D03000080070000FD030000000000005603000080070000E60300000000000040820046040000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data> |
| | | </DockMan> |
| | | <ToolBar> |
| | | <RegID>59392</RegID> |
| | | <Name>File</Name> |
| | | <Buttons> |
| | | <Len>2290</Len> |
| | | <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000094853455F56414C554596000000000000001300094853455F56414C55450F53797374656D436F7265436C6F636B1248414C5F5359535449434B5F436F6E6669670873686F77696E6974155265616C5F74696D655F74656D70657261747572650C5243435F504C4C5F4D554C3609584C41545F46524551066E496E6465780955617274324261756401630E50656E6453565F48616E646C65720F5379735469636B5F48616E646C65720650656E645376075344445B31365D08427566666572496E0A5265637654696D65755305536C617665056E416464720654686973755300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020001001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data> |
| | | <Len>2278</Len> |
| | | <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000000960000000000000013000008484152445F53504904737472310F535049315F49525148616E646C6572184C4C5F5350495F4973416374697665466C61675F52584E4509535049315F4952516E0B4750494F5F50494E5F313509584C41545F46524551094B4D52756E537461740357595B08576F726B4D6F64650257590C4D6173746572526563764F4B07657272737461740B62504C4352756E6E696E670955736572446174613107447374486F7374155265616C5F74696D655F74656D70657261747572650C5243435F504C4C5F4D554C3600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020001001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000</Data> |
| | | </Buttons> |
| | | <OriginalItems> |
| | | <Len>1423</Len> |
| | |
| | | <Name>Debug</Name> |
| | | <Buttons> |
| | | <Len>2362</Len> |
| | | <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data> |
| | | <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020001002D0000000000000000000000000000000001000000010000000180F07F0000020001002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000020000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data> |
| | | </Buttons> |
| | | <OriginalItems> |
| | | <Len>898</Len> |
| | |
| | | </ToolBar> |
| | | <ControlBarsSummary> |
| | | <Bars>0</Bars> |
| | | <ScreenCX>1920</ScreenCX> |
| | | <ScreenCY>1080</ScreenCY> |
| | | <ScreenCX>2560</ScreenCX> |
| | | <ScreenCY>1440</ScreenCY> |
| | | </ControlBarsSummary> |
| | | </ViewEx> |
| | | </WinLayoutEx> |
| | | |
| | | <MDIGroups> |
| | | <Orientation>3</Orientation> |
| | | <ActiveMDIGroup>1</ActiveMDIGroup> |
| | | <ActiveMDIGroup>0</ActiveMDIGroup> |
| | | <MDIGroup> |
| | | <Size>37</Size> |
| | | <ActiveTab>14</ActiveTab> |
| | | <Doc> |
| | | <Name>../Inc/PLCfunctions.h</Name> |
| | | <ColumnNumber>26</ColumnNumber> |
| | | <TopLine>120</TopLine> |
| | | <CurrentLine>157</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Size>46</Size> |
| | | <ActiveTab>5</ActiveTab> |
| | | <Doc> |
| | | <Name>../Inc/functions.h</Name> |
| | | <ColumnNumber>35</ColumnNumber> |
| | | <TopLine>39</TopLine> |
| | | <CurrentLine>76</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Inc/main.h</Name> |
| | | <ColumnNumber>0</ColumnNumber> |
| | | <TopLine>27</TopLine> |
| | | <CurrentLine>45</CurrentLine> |
| | | <ColumnNumber>39</ColumnNumber> |
| | | <TopLine>24</TopLine> |
| | | <CurrentLine>57</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Inc/BSP.h</Name> |
| | | <ColumnNumber>23</ColumnNumber> |
| | | <ColumnNumber>0</ColumnNumber> |
| | | <TopLine>1</TopLine> |
| | | <CurrentLine>24</CurrentLine> |
| | | <CurrentLine>34</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Inc/KMachine.h</Name> |
| | | <ColumnNumber>18</ColumnNumber> |
| | | <TopLine>170</TopLine> |
| | | <CurrentLine>207</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Src/main.c</Name> |
| | | <ColumnNumber>2</ColumnNumber> |
| | | <TopLine>537</TopLine> |
| | | <CurrentLine>574</CurrentLine> |
| | | <ColumnNumber>6</ColumnNumber> |
| | | <TopLine>401</TopLine> |
| | | <CurrentLine>420</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Inc/KLink.h</Name> |
| | | <ColumnNumber>12</ColumnNumber> |
| | | <TopLine>107</TopLine> |
| | | <CurrentLine>108</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_ll_adc.h</Name> |
| | | <ColumnNumber>0</ColumnNumber> |
| | | <TopLine>439</TopLine> |
| | | <CurrentLine>466</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x8.h</Name> |
| | | <ColumnNumber>0</ColumnNumber> |
| | | <TopLine>483</TopLine> |
| | | <CurrentLine>496</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_rcc.c</Name> |
| | | <ColumnNumber>15</ColumnNumber> |
| | | <TopLine>1104</TopLine> |
| | | <CurrentLine>1141</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Src/ModbusRTU.h</Name> |
| | | <ColumnNumber>0</ColumnNumber> |
| | | <TopLine>24</TopLine> |
| | | <CurrentLine>54</CurrentLine> |
| | | <Folding>0</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>..\Src\KBus.c</Name> |
| | | <ColumnNumber>0</ColumnNumber> |
| | | <TopLine>271</TopLine> |
| | | <CurrentLine>276</CurrentLine> |
| | | <ColumnNumber>22</ColumnNumber> |
| | | <TopLine>10</TopLine> |
| | | <CurrentLine>32</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Inc/KBus.h</Name> |
| | | <ColumnNumber>23</ColumnNumber> |
| | | <TopLine>165</TopLine> |
| | | <CurrentLine>172</CurrentLine> |
| | | <ColumnNumber>0</ColumnNumber> |
| | | <TopLine>184</TopLine> |
| | | <CurrentLine>209</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Inc/Globaldef.h</Name> |
| | | <ColumnNumber>20</ColumnNumber> |
| | | <TopLine>13</TopLine> |
| | | <CurrentLine>41</CurrentLine> |
| | | <ColumnNumber>8</ColumnNumber> |
| | | <TopLine>19</TopLine> |
| | | <CurrentLine>40</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal.c</Name> |
| | | <ColumnNumber>39</ColumnNumber> |
| | | <TopLine>378</TopLine> |
| | | <CurrentLine>393</CurrentLine> |
| | | <Name>..\Src\GlobalDef.c</Name> |
| | | <ColumnNumber>23</ColumnNumber> |
| | | <TopLine>18</TopLine> |
| | | <CurrentLine>40</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>..\Src\debug.c</Name> |
| | | <ColumnNumber>9</ColumnNumber> |
| | | <TopLine>52</TopLine> |
| | | <CurrentLine>84</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | </MDIGroup> |
| | | <MDIGroup> |
| | | <Size>63</Size> |
| | | <ActiveTab>0</ActiveTab> |
| | | <Size>54</Size> |
| | | <ActiveTab>8</ActiveTab> |
| | | <Doc> |
| | | <Name>..\Src\BSP.c</Name> |
| | | <ColumnNumber>0</ColumnNumber> |
| | | <TopLine>115</TopLine> |
| | | <CurrentLine>140</CurrentLine> |
| | | <TopLine>762</TopLine> |
| | | <CurrentLine>816</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Src/stm32f0xx_it.c</Name> |
| | | <ColumnNumber>26</ColumnNumber> |
| | | <TopLine>216</TopLine> |
| | | <CurrentLine>252</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Src/main.c</Name> |
| | | <ColumnNumber>23</ColumnNumber> |
| | | <TopLine>410</TopLine> |
| | | <CurrentLine>427</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>..\Src\functions.c</Name> |
| | | <ColumnNumber>16</ColumnNumber> |
| | | <TopLine>806</TopLine> |
| | | <CurrentLine>840</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>..\Src\KLink.c</Name> |
| | | <ColumnNumber>33</ColumnNumber> |
| | | <TopLine>365</TopLine> |
| | | <CurrentLine>408</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>..\Src\ModbusRTU.c</Name> |
| | | <ColumnNumber>31</ColumnNumber> |
| | | <TopLine>240</TopLine> |
| | | <CurrentLine>266</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Inc/main.h</Name> |
| | | <ColumnNumber>53</ColumnNumber> |
| | | <TopLine>1</TopLine> |
| | | <CurrentLine>20</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>..\Src\KBus.c</Name> |
| | | <ColumnNumber>0</ColumnNumber> |
| | | <TopLine>505</TopLine> |
| | | <CurrentLine>549</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>..\Src\KMachine.c</Name> |
| | | <ColumnNumber>19</ColumnNumber> |
| | | <TopLine>448</TopLine> |
| | | <CurrentLine>480</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | | </Doc> |
| | | <Doc> |
| | | <Name>../Inc/debug.h</Name> |
| | | <ColumnNumber>0</ColumnNumber> |
| | | <TopLine>1</TopLine> |
| | | <CurrentLine>15</CurrentLine> |
| | | <Folding>1</Folding> |
| | | <ContractedFolders></ContractedFolders> |
| | | <PaneID>0</PaneID> |
| | |
| | | </OPTFL> |
| | | <CpuCode>18</CpuCode> |
| | | <DebugOpt> |
| | | <uSim>0</uSim> |
| | | <uTrg>1</uTrg> |
| | | <uSim>1</uSim> |
| | | <uTrg>0</uTrg> |
| | | <sLdApp>1</sLdApp> |
| | | <sGomain>1</sGomain> |
| | | <sRbreak>1</sRbreak> |
| | |
| | | <sDllPa></sDllPa> |
| | | <sDlgDll></sDlgDll> |
| | | <sDlgPa></sDlgPa> |
| | | <sIfile></sIfile> |
| | | <sIfile>.\debug.ini</sIfile> |
| | | <tDll></tDll> |
| | | <tDllPa></tDllPa> |
| | | <tDlgDll></tDlgDll> |
| | |
| | | <SetRegEntry> |
| | | <Number>0</Number> |
| | | <Key>DLGDARM</Key> |
| | | <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name> |
| | | <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)</Name> |
| | | </SetRegEntry> |
| | | <SetRegEntry> |
| | | <Number>0</Number> |
| | |
| | | <GroupNumber>2</GroupNumber> |
| | | <FileNumber>3</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>1</tvExp> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | | <bDave2>0</bDave2> |
| | | <PathWithFileName>..\Src\GlobalDef.c</PathWithFileName> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <bShared>0</bShared> |
| | | </File> |
| | | <File> |
| | | <GroupNumber>2</GroupNumber> |
| | | <FileNumber>15</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | | <bDave2>0</bDave2> |
| | | <PathWithFileName>..\Src\debug.c</PathWithFileName> |
| | | <FilenameWithoutPath>debug.c</FilenameWithoutPath> |
| | | <RteFlg>0</RteFlg> |
| | | <bShared>0</bShared> |
| | | </File> |
| | | </Group> |
| | | |
| | | <Group> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>3</GroupNumber> |
| | | <FileNumber>15</FileNumber> |
| | | <FileNumber>16</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | |
| | | <Group> |
| | | <GroupName>Drivers/STM32F0xx_HAL_Driver</GroupName> |
| | | <tvExp>1</tvExp> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | | <cbSel>0</cbSel> |
| | | <RteFlg>0</RteFlg> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>16</FileNumber> |
| | | <FileNumber>17</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>17</FileNumber> |
| | | <FileNumber>18</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>18</FileNumber> |
| | | <FileNumber>19</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>19</FileNumber> |
| | | <FileNumber>20</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>20</FileNumber> |
| | | <FileNumber>21</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>21</FileNumber> |
| | | <FileNumber>22</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>22</FileNumber> |
| | | <FileNumber>23</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>23</FileNumber> |
| | | <FileNumber>24</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>24</FileNumber> |
| | | <FileNumber>25</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>25</FileNumber> |
| | | <FileNumber>26</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>26</FileNumber> |
| | | <FileNumber>27</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>27</FileNumber> |
| | | <FileNumber>28</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>28</FileNumber> |
| | | <FileNumber>29</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>29</FileNumber> |
| | | <FileNumber>30</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>30</FileNumber> |
| | | <FileNumber>31</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>31</FileNumber> |
| | | <FileNumber>32</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>32</FileNumber> |
| | | <FileNumber>33</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>33</FileNumber> |
| | | <FileNumber>34</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>34</FileNumber> |
| | | <FileNumber>35</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>35</FileNumber> |
| | | <FileNumber>36</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>36</FileNumber> |
| | | <FileNumber>37</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>37</FileNumber> |
| | | <FileNumber>38</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | |
| | | <RteFlg>0</RteFlg> |
| | | <bShared>0</bShared> |
| | | </File> |
| | | <File> |
| | | <GroupNumber>4</GroupNumber> |
| | | <FileNumber>39</FileNumber> |
| | | <FileType>1</FileType> |
| | | <tvExp>0</tvExp> |
| | | <tvExpOptDlg>0</tvExpOptDlg> |
| | | <bDave2>0</bDave2> |
| | | <PathWithFileName>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_tim.c</PathWithFileName> |
| | | <FilenameWithoutPath>stm32f0xx_ll_tim.c</FilenameWithoutPath> |
| | | <RteFlg>0</RteFlg> |
| | | <bShared>0</bShared> |
| | | </File> |
| | | </Group> |
| | | |
| | | <Group> |
| | |
| | | <DllOption> |
| | | <SimDllName>SARMCM3.DLL</SimDllName> |
| | | <SimDllArguments> -REMAP </SimDllArguments> |
| | | <SimDlgDll>DARMCM1.DLL</SimDlgDll> |
| | | <SimDlgDllArguments>-pCM0</SimDlgDllArguments> |
| | | <SimDlgDll>DARMSTM.DLL</SimDlgDll> |
| | | <SimDlgDllArguments>-pSTM32F030C8</SimDlgDllArguments> |
| | | <TargetDllName>SARMCM3.DLL</TargetDllName> |
| | | <TargetDllArguments> </TargetDllArguments> |
| | | <TargetDlgDll>TARMCM1.DLL</TargetDlgDll> |
| | |
| | | <FileType>1</FileType> |
| | | <FilePath>..\Src\ModbusRTU.c</FilePath> |
| | | </File> |
| | | <File> |
| | | <FileName>debug.c</FileName> |
| | | <FileType>1</FileType> |
| | | <FilePath>..\Src\debug.c</FilePath> |
| | | </File> |
| | | </Files> |
| | | </Group> |
| | | <Group> |
| | |
| | | <FileType>1</FileType> |
| | | <FilePath>../Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_ll_utils.c</FilePath> |
| | | </File> |
| | | <File> |
| | | <FileName>stm32f0xx_ll_tim.c</FileName> |
| | | <FileType>1</FileType> |
| | | <FilePath>..\Drivers\STM32F0xx_HAL_Driver\Src\stm32f0xx_ll_tim.c</FilePath> |
| | | </File> |
| | | </Files> |
| | | </Group> |
| | | <Group> |
| | |
| | | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
| | | RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
| | | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
| | | // RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
| | | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
|
| | | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
| | | // RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
|
| | |
|
| | | //#if (XLAT_FREQ == 12) |
| | | // RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8;
|
| | | //#else
|
| | | RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;
|
| | | //#endif
|
| | | |
| | | #if (XLAT_FREQ == 12) |
| | | RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV3;
|
| | | #else
|
| | | RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV2;
|
| | | #endif
|
| | |
|
| | | RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12; |
| | | if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
|
| | | {
|
| | | Error_Handler();
|
| | |
| | | /* USER CODE END IWDG_Init 2 */
|
| | |
|
| | | }
|
| | | /**
|
| | | * @brief TIM6 Initialization Function
|
| | | * @param None
|
| | | * @retval None
|
| | | */
|
| | | void MX_TIM6_Init(void)
|
| | | {
|
| | |
|
| | | /* USER CODE BEGIN TIM6_Init 0 */
|
| | |
|
| | | /* USER CODE END TIM6_Init 0 */
|
| | |
|
| | | LL_TIM_InitTypeDef TIM_InitStruct = {0};
|
| | |
|
| | | /* Peripheral clock enable */
|
| | | LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_TIM6);
|
| | |
|
| | | /* TIM6 interrupt Init */
|
| | | NVIC_SetPriority(TIM6_IRQn, 0);
|
| | | NVIC_EnableIRQ(TIM6_IRQn);
|
| | |
|
| | | /* USER CODE BEGIN TIM6_Init 1 */
|
| | |
|
| | | /* USER CODE END TIM6_Init 1 */
|
| | | TIM_InitStruct.Prescaler = 47;
|
| | | TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
|
| | | TIM_InitStruct.Autoreload = 999;
|
| | | LL_TIM_Init(TIM6, &TIM_InitStruct);
|
| | | LL_TIM_DisableARRPreload(TIM6);
|
| | | /* USER CODE BEGIN TIM6_Init 2 */
|
| | | LL_TIM_EnableIT_UPDATE(TIM6);
|
| | | /* USER CODE END TIM6_Init 2 */
|
| | |
|
| | | }
|
| | | /* ADC init function */
|
| | | void MX_ADC_Init(void)
|
| | | {
|
| | |
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
|
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
| | | GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
| | | GPIO_InitStruct.Alternate = LL_GPIO_AF_0;
|
| | | LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
| | |
|
| | |
| | | NVIC_EnableIRQ(SPI1_IRQn);
|
| | | /* USER CODE BEGIN SPI1_Init 1 */
|
| | |
|
| | | #if (BOARD_TYPE == 12)
|
| | |
|
| | | /* USER CODE END SPI1_Init 1 */
|
| | |
|
| | | /* SPI1 parameter configuration*/
|
| | | SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX;
|
| | | SPI_InitStruct.Mode = LL_SPI_MODE_SLAVE;
|
| | | SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_8BIT;
|
| | | SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_LOW; //LL_SPI_POLARITY_LOW;
|
| | | SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE ; //LL_SPI_PHASE_1EDGE;
|
| | | SPI_InitStruct.NSS = LL_SPI_NSS_SOFT;
|
| | | SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV4;
|
| | | SPI_InitStruct.BitOrder = LL_SPI_LSB_FIRST;
|
| | | SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE;
|
| | | SPI_InitStruct.CRCPoly = 7;
|
| | | LL_SPI_Init(SPI1, &SPI_InitStruct);
|
| | |
|
| | | LL_SPI_SetStandard(SPI1, LL_SPI_PROTOCOL_MOTOROLA);
|
| | | LL_SPI_DisableNSSPulseMgt(SPI1);
|
| | | LL_SPI_SetRxFIFOThreshold(SPI1,LL_SPI_RX_FIFO_TH_QUARTER);
|
| | | // LL_SPI_EnableNSSPulseMgt(SPI1); |
| | |
|
| | | /* USER CODE BEGIN SPI1_Init 2 */
|
| | |
|
| | | #elif (BOARD_TYPE == 13)
|
| | |
|
| | | SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX;
|
| | | SPI_InitStruct.Mode = LL_SPI_MODE_MASTER;
|
| | | SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_8BIT;
|
| | | SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_HIGH; //LL_SPI_POLARITY_LOW;
|
| | | SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE ; //LL_SPI_PHASE_1EDGE;
|
| | | SPI_InitStruct.NSS = LL_SPI_NSS_SOFT;
|
| | | SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV2;
|
| | | SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST;
|
| | | SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE;
|
| | | SPI_InitStruct.CRCPoly = 7;
|
| | | LL_SPI_Init(SPI1, &SPI_InitStruct);
|
| | |
|
| | | LL_SPI_SetStandard(SPI1, LL_SPI_PROTOCOL_MOTOROLA);
|
| | |
|
| | | LL_SPI_SetRxFIFOThreshold(SPI1,LL_SPI_RX_FIFO_TH_QUARTER);
|
| | | // LL_SPI_EnableNSSPulseMgt(SPI1); |
| | |
|
| | | #else
|
| | |
|
| | | SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX;
|
| | | SPI_InitStruct.Mode = LL_SPI_MODE_MASTER;
|
| | | SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_8BIT;
|
| | |
| | | LL_SPI_Init(SPI1, &SPI_InitStruct);
|
| | |
|
| | | LL_SPI_SetStandard(SPI1, LL_SPI_PROTOCOL_MOTOROLA);
|
| | |
|
| | | |
| | | LL_SPI_SetRxFIFOThreshold(SPI1,LL_SPI_RX_FIFO_TH_QUARTER);
|
| | | LL_SPI_EnableNSSPulseMgt(SPI1);
|
| | | /* USER CODE BEGIN SPI1_Init 2 */
|
| | |
|
| | | #endif
|
| | |
|
| | | LL_SPI_Enable(SPI1);
|
| | | /* USER CODE END SPI1_Init 2 */
|
| | | }
|
| | |
| | | LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);
|
| | | LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOB);
|
| | | LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOC);
|
| | | LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOF);
|
| | | /**/
|
| | |
|
| | |
|
| | | /**/
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_6 ; //|LL_GPIO_PIN_7;
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_6 |LL_GPIO_PIN_7;
|
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
| | |
| | | if (GetBoardType()==2)
|
| | | {
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_3|LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7|
|
| | | LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_15;
|
| | | LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_15;
|
| | |
|
| | | }
|
| | | else if (GetBoardType()==9 || GetBoardType()==10 )
|
| | | {
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_3|LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7|
|
| | | LL_GPIO_PIN_11|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_10|
|
| | | LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_15;
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_3|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7|
|
| | | LL_GPIO_PIN_11|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_10|
|
| | | LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_15;
|
| | | }
|
| | | else if ( GetBoardType() == 11 )
|
| | | {
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_3|LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7|
|
| | | LL_GPIO_PIN_2|LL_GPIO_PIN_10|
|
| | | LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_15;
|
| | | } else |
| | | LL_GPIO_PIN_2|LL_GPIO_PIN_10|LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_15;
|
| | | } else if (BOARD_TYPE == 12)
|
| | | {
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_6|LL_GPIO_PIN_7|
|
| | | LL_GPIO_PIN_10|LL_GPIO_PIN_11|LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15;
|
| | | } else
|
| | | {
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_3|LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7|
|
| | | LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_10|
|
| | | LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_15;
|
| | | } |
| | | LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_10|
|
| | | LL_GPIO_PIN_12|LL_GPIO_PIN_13|LL_GPIO_PIN_15;
|
| | | }
|
| | |
|
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
|
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
| | |
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
| | | LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
| | |
|
| | | LL_GPIO_SetOutputPin(GPIOB, LL_GPIO_PIN_3);
|
| | | |
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_13|LL_GPIO_PIN_14;
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15;
|
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
|
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_LOW;
|
| | | GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
|
| | |
| | | // PWR_BackupAccessCmd( ENABLE );/* ????RTC??????*/
|
| | | // RCC_LSEConfig( RCC_LSE_OFF ); /* ????????,PC14+PC15??????IO*/
|
| | | // BKP_TamperPinCmd(DISABLE); /* ????????,PC13??????IO*/
|
| | | |
| | | #if (BORAD_TYPE ==12)
|
| | |
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7;
|
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
| | | LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
| | | LL_GPIO_SetOutputPin(GPIOA, LL_GPIO_PIN_8); |
| | | |
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_9 ; //RST_PIN in
|
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
| | | LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
| | | |
| | | GPIO_InitStruct.Pin = SYN_PIN ; //SYN_PIN Pin in
|
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
| | | LL_GPIO_Init(SYN_PORT, &GPIO_InitStruct);
|
| | | |
| | | GPIO_InitStruct.Pin = ACK_PIN ; //ACK_PIN Pin out
|
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
|
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
| | | GPIO_InitStruct.Pull = LL_GPIO_OUTPUT_PUSHPULL;
|
| | | LL_GPIO_Init(ACK_PORT, &GPIO_InitStruct);
|
| | |
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_7 ; //485DE Pin out
|
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
|
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
| | | GPIO_InitStruct.Pull = LL_GPIO_OUTPUT_PUSHPULL;
|
| | | LL_GPIO_Init(GPIOF, &GPIO_InitStruct);
|
| | | |
| | | GPIO_InitStruct.Pin = OE_PIN ; // OE Pin in
|
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_INPUT;
|
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
| | | GPIO_InitStruct.Pull = LL_GPIO_PULL_UP;
|
| | | LL_GPIO_Init(OE_PORT, &GPIO_InitStruct);
|
| | |
|
| | | #elif (BOARD_TYPE == 13)
|
| | |
|
| | | GPIO_InitStruct.Pin = LL_GPIO_PIN_15 ;
|
| | | GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT;
|
| | | GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
|
| | | GPIO_InitStruct.Pull = LL_GPIO_OUTPUT_PUSHPULL;
|
| | | LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
| | |
|
| | | #endif
|
| | |
|
| | | }
|
| | |
| | |
|
| | | volatile int SysConfigs;
|
| | |
|
| | | /*
|
| | | int GetBoardType(void )
|
| | | {
|
| | | int BoardType=0;
|
| | |
| | | BoardType = BOARD_TYPE;
|
| | | return BoardType;
|
| | | }
|
| | |
|
| | | */
|
| | | /*
|
| | | int sintab[256]={
|
| | | 0, 1, 3, 4, 6, 7, 9, 10, 12, 14, 15, 17, 18, 20, 21, 23,
|
| | |
| | | #include "KBus.h"
|
| | | #include "functions.h"
|
| | | #include "string.h"
|
| | | #include "stm32f0xx.h"
|
| | |
|
| | | int bMaster=0,bSlave=0;
|
| | | unsigned char bMaster=0,bSlave=0,bRepeater=0;;
|
| | |
|
| | | unsigned char PacketBuf1[128];
|
| | | unsigned char PacketBuf2[128];
|
| | |
| | | unsigned char BufferIn[16]={0};
|
| | | unsigned char BufferOut[16]={0};
|
| | |
|
| | | stChnStat ChnStats[8];
|
| | | stChnStat ChnStats[9];
|
| | | unsigned char nAddr=0;
|
| | | unsigned char nChilds;
|
| | | int ChildStat[16];
|
| | | unsigned char nCurPollId=0;
|
| | | unsigned char nSeq=0;
|
| | |
|
| | | volatile int MasterRecved=1;
|
| | | volatile int MasterRecvOK=1;
|
| | | volatile unsigned char MasterRecved=1;
|
| | | volatile unsigned char MasterRecvOK=1;
|
| | |
|
| | | volatile int SlaveRecved=1;
|
| | | volatile unsigned char SlaveRecved=1;
|
| | | unsigned int SendTimeuS=0;
|
| | | volatile int RecvTimeuS=0;
|
| | |
|
| | | int DelayuS=0;
|
| | | int MaxDelayuS=0;
|
| | | int ThisuS;
|
| | |
|
| | | volatile unsigned int nSlaveTick=0;
|
| | |
|
| | | int Clk3=0;
|
| | | int SendTime,Latancy,LatancyClk,SendClk; |
| | |
|
| | | volatile int nCount2=0;
|
| | | int TimeOutCount=0;
|
| | | int LastCircleStartTime=0;
|
| | | int CircleTime=0;
|
| | |
|
| | | unsigned char Datas[128]; |
| | | volatile int PacketLength = 0;
|
| | |
|
| | | unsigned char BCC(void * pData, int nSize)
|
| | | {
|
| | |
| | | }
|
| | | return k;
|
| | | }
|
| | |
|
| | | int RepeaterFunc(int nChn)
|
| | | {
|
| | | KMem.WY[0]=KMem.WX[0];
|
| | | if ((KMem.nRunCount &0x7f) == 88) |
| | | { |
| | | nCount2++; |
| | | ToggleRunLed();
|
| | | // int len1=sprintf(str1,"%d %d Cfg %02X Input %02X \r\n",nCount,nCount2,EffJumperSW,MyKeyStat1);
|
| | | // PutStr(str1,len1);
|
| | | } |
| | | return 0;
|
| | | }
|
| | |
|
| | | int MasterFunc(int nChn)
|
| | | {
|
| | | uint32_t tick1=HAL_GetTick();
|
| | | uint32_t thisuS=GetuS();
|
| | | |
| | | int len1=0;
|
| | |
|
| | | if ((MasterRecved && MasterRecvOK && thisuS-SendTimeuS>50) || thisuS-SendTimeuS>1500u)
|
| | | {
|
| | | if (!MasterRecvOK) |
| | | {
|
| | | TimeOutCount++;
|
| | | Uart2Stat.TimeOutErr++; |
| | | ChnStats[nCurPollId].LostPackets++;
|
| | | ChnStats[nCurPollId].CtnLstPkts++;
|
| | | if (!MasterRecved) {ChnStats[nCurPollId].TimeOutErr++;}
|
| | | if (ChnStats[nCurPollId].CtnLstPkts>ChnStats[nCurPollId].MaxCtnLstPkts)
|
| | | {ChnStats[nCurPollId].MaxCtnLstPkts=ChnStats[nCurPollId].CtnLstPkts;}
|
| | | if (ChnStats[nCurPollId].CtnLstPkts>3)
|
| | | {
|
| | | ChnStats[nCurPollId].Stat=0;
|
| | | KMem.ErrStat=200;
|
| | | |
| | | {BufferIn[nCurPollId]=0;}
|
| | | }
|
| | | // LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_7);
|
| | | }else
|
| | | {
|
| | | ChnStats[nCurPollId].Stat=1;
|
| | | |
| | | KMem.RunStat=100;
|
| | | }
|
| | | nCurPollId ++;
|
| | | if (nCurPollId > nChilds)
|
| | | {
|
| | | CircleTime=thisuS-LastCircleStartTime;
|
| | | LastCircleStartTime=thisuS;
|
| | | nSeq++;
|
| | | nCurPollId=1;
|
| | | }
|
| | | #if (BOARD_TYPE == 12)
|
| | | if (KMRunStat.WorkMode==0)
|
| | | {
|
| | | // KMem.WX[0]= GetInput();
|
| | | // KMem.WY[1]=KMem.WX[0]&0xff;
|
| | | // KMem.WY[2]=(KMem.WX[0]>>8)&0xff; |
| | | }
|
| | | // BufferOut[1]=KMem.WY[1];
|
| | | // BufferOut[2]=KMem.WY[2]; |
| | | #else
|
| | | if (KMRunStat.WorkMode==0)
|
| | | {
|
| | | KMem.WX[0]= GetInput();
|
| | | KMem.WY[1]=KMem.WX[0]&0xff;
|
| | | KMem.WY[2]=(KMem.WX[0]>>8)&0xff; |
| | | }
|
| | | BufferOut[1]=KMem.WY[1];
|
| | | BufferOut[2]=KMem.WY[2]; |
| | | #endif
|
| | |
|
| | | Datas[0]=BufferOut[nCurPollId];
|
| | | Datas[1]=BufferOut[nCurPollId+1];;
|
| | | Datas[2]=ChnStats[nCurPollId].Stat;
|
| | | Datas[3]=0;
|
| | | Datas[4]=tick1&0xff;
|
| | | Datas[5]=(tick1>>8)&0xff;
|
| | | Datas[6]=(tick1>>16)&0xff;
|
| | | Datas[7]=(tick1>>24)&0xff;
|
| | | |
| | | SendTimeuS=thisuS; |
| | | len1=MakePacket((pPacket)PacketBuf1,0,nCurPollId,cmdExChgData,nSeq,8,Datas);
|
| | | SendPacket(nChn, (pPacket)PacketBuf1, len1);
|
| | | ChnStats[nCurPollId].SendPackets++;
|
| | | ChnStats[nCurPollId].SendTimeInterval=SendTimeuS-ChnStats[nCurPollId].LastSentTimeuS;
|
| | | ChnStats[nCurPollId].LastSentTimeuS=SendTimeuS;
|
| | | PacketLength = len1;
|
| | | SendTime=tick1;
|
| | |
|
| | | MasterRecved=0;
|
| | | MasterRecvOK=0;
|
| | | // LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_5); |
| | | //ToggleErrLed();
|
| | | // ToggleOut8();
|
| | |
|
| | | }
|
| | | |
| | | Clk3=SysTick->VAL;
|
| | | // LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_4);
|
| | | // HAL_Delay(1); |
| | | return 0;
|
| | | }
|
| | |
|
| | | int SlaveFunc(int nChn)
|
| | | {
|
| | | int ThisuS=GetuS();
|
| | | int thisRecvTime=RecvTimeuS;
|
| | | if (SlaveRecved)
|
| | | {
|
| | | KMem.RunStat=8000;
|
| | | SlaveRecved=0;
|
| | | }else if ((ThisuS - thisRecvTime) >12000u)
|
| | | {
|
| | | KMem.ErrStat=8000;
|
| | | KMem.SDD[17]=1;
|
| | | KMem.SDD[18]=ThisuS;
|
| | | KMem.SDD[19]=RecvTimeuS;
|
| | | }else if ( ThisuS > (thisRecvTime + 12000u))
|
| | | {
|
| | | KMem.ErrStat=8000;
|
| | | KMem.SDD[17]=2;
|
| | | KMem.SDD[18]=ThisuS;
|
| | | KMem.SDD[19]=RecvTimeuS;
|
| | | }
|
| | | |
| | | return 0;
|
| | | }
|
| | |
|
| | | int MakePacket(pPacket p1,unsigned char src, uchar dst, uchar nType,unsigned char nSEQ, unsigned char DataLen,void * pData )
|
| | | {
|
| | | p1->Sign=StartSign;
|
| | |
| | | return PacketLenth;
|
| | | }
|
| | |
|
| | | int CheckPacket(pPacket p1,int nLen1)
|
| | | int CheckPacket(int nChn, pPacket p1, int nLen1)
|
| | | {
|
| | | if (p1->Sign != StartSign)
|
| | | {
|
| | |
| | | return 0;
|
| | | }
|
| | |
|
| | | int SlaveCheckPacket(pPacket p1,int nLen1)
|
| | | int SlaveCheckPacket(int nChn, pPacket p1, int nLen1)
|
| | | {
|
| | | if (p1->Sign != StartSign)
|
| | | {
|
| | |
| | | return 0;
|
| | | }
|
| | |
|
| | | int MasterParsePacket(pPacket p1,int Len1)
|
| | | int MasterParsePacket(int nChn, pPacket p1, int Len1)
|
| | | {
|
| | |
|
| | | int DataLen=p1->PacketLen;
|
| | |
| | | case cmdPing:
|
| | | BufferIn[ChildId]=p1->data[0];
|
| | | PacketLen=MakePacket(p2,0,nCurPollId,cmdPingReply,p1->nSEQ,DataLen,p1->data);
|
| | | SendPacket2(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case cmdPingReply:
|
| | | DelayuS=ThisuS-SendTimeuS;
|
| | |
| | | //memcpy(DispBuf,p1->data+2,8);
|
| | | p1->data[0]=BufferOut[0];
|
| | | PacketLen=MakePacket(p2,nAddr,0,cmdExChgDataReply,p1->nSEQ,DataLen,p1->data);
|
| | | SendPacket2(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case cmdExChgDataReply:
|
| | | DelayuS=ThisuS-SendTimeuS;
|
| | | if (DelayuS > MaxDelayuS) MaxDelayuS = DelayuS;
|
| | | |
| | |
|
| | | #if (BOARD_TYPE==12) |
| | | BufferIn[ChildId]=p1->data[0];
|
| | | KMem.WXB[ChildId-1]=BufferIn[ChildId];
|
| | | if (KMRunStat.WorkMode==0) { |
| | | // KMem.WY[0]= KMem.WX[1]+(KMem.WX[2]<<8) ;
|
| | | // PutOutput (KMem.WY[0]);
|
| | | }
|
| | | #else
|
| | | BufferIn[ChildId]=p1->data[0];
|
| | | KMem.WX[ChildId]=BufferIn[ChildId];
|
| | | if (KMRunStat.WorkMode==0) {
|
| | | KMem.WY[0]= KMem.WX[1]+(KMem.WX[2]<<8) ;
|
| | | PutOutput (KMem.WY[0]);
|
| | | }
|
| | | #endif
|
| | |
|
| | | //RunStat=100;
|
| | | ChnStats[nCurPollId].CtnLstPkts=0;
|
| | | ChnStats[nCurPollId].Delay=DelayuS;
|
| | |
| | | return 0;
|
| | | }
|
| | | unsigned char nClientDataIndex=0;
|
| | | int SlaveParsePacket(pPacket p1,int Len1)
|
| | | int SlaveParsePacket(int nChn, pPacket p1, int Len1)
|
| | | {
|
| | | Uart2Stat.OKPacket++;
|
| | | int DataLen=p1->PacketLen;
|
| | |
| | | RecvTimeuS=ThisuS;
|
| | | PacketLen=MakePacket(p2,nAddr,0,cmdPingReply,p1->nSEQ,DataLen,p1->data);
|
| | | ChnStats[0].ClientSendPkts++;
|
| | | SendPacket2(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case cmdPingReply:
|
| | | break;
|
| | |
| | | //memcpy(DispBuf,p1->data,DataLen);
|
| | | PacketLen=MakePacket(p2,1,0,cmdWriteReply,p1->nSEQ,0,0);
|
| | | ChnStats[0].ClientSendPkts++;
|
| | | SendPacket2(p2,PacketLen); |
| | | SendPacket(nChn, p2, PacketLen); |
| | | break;
|
| | | case cmdWriteReply:
|
| | | break;
|
| | |
| | | break;
|
| | | case cmdExChgData:
|
| | | BufferIn[0]=p1->data[0];
|
| | | PutOutput(BufferIn[0]);
|
| | | PutOutput(BufferIn[0]);
|
| | | nSlaveTick=p1->data[4]+(p1->data[5]<<8);//+(p1->data[6]<<16)+(p1->data[7]<<24);
|
| | |
|
| | | #if (BOARD_TYPE == 12)
|
| | | // PutOutput(BufferIn[0]);
|
| | | //PutOutput(outputvalue);
|
| | | //memcpy(DispBuf,p1->data+2,8);
|
| | | nIndex=nClientDataIndex;
|
| | | // ChnStats[0].ClientDatas[7]++;
|
| | | // BufferOut[0]=GetInput();
|
| | | // BufferOut[0]=GetInput();
|
| | | // BufferOut[0]=GetInput();
|
| | | // BufferOut[0]=GetInput();
|
| | | // BufferOut[0]=GetInput();
|
| | | #else
|
| | | PutOutput(BufferIn[0]);
|
| | | //PutOutput(outputvalue);
|
| | | //memcpy(DispBuf,p1->data+2,8);
|
| | | nIndex=nClientDataIndex;
|
| | | // ChnStats[0].ClientDatas[7]++;
|
| | | // BufferOut[0]=GetInput();
|
| | | BufferOut[0]=GetInput();
|
| | | |
| | | #endif
|
| | | p1->data[0]=BufferOut[0];
|
| | | p1->data[3]=nIndex;
|
| | | p1->data[4]=ChnStats[0].ClientDatas[nIndex];
|
| | |
| | | if (nClientDataIndex >= 10) { nClientDataIndex=0;}
|
| | | PacketLen=MakePacket(p2,nAddr,0,cmdExChgDataReply,p1->nSEQ,DataLen,p1->data);
|
| | | ChnStats[0].ClientSendPkts++;
|
| | | SendPacket2(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case cmdExChgDataReply:
|
| | | break;
|
| | |
| | | }
|
| | | return 0;
|
| | | }
|
| | | int ParsePacket(pPacket p1,int Len1)
|
| | | int ParsePacket(int nChn, pPacket p1, int Len1)
|
| | | {
|
| | | ThisuS=GetuS();
|
| | | int Result=0;
|
| | | if (bMaster)
|
| | | {
|
| | | MasterRecved=1;
|
| | | Result=CheckPacket(p1,Len1);
|
| | | Result=CheckPacket(nChn, p1, Len1);
|
| | | if (Result != S_OK)
|
| | | {
|
| | | return Result;
|
| | | }
|
| | | MasterRecvOK=1;
|
| | | Result=MasterParsePacket(p1,Len1); |
| | | Result=MasterParsePacket(nChn, p1, Len1); |
| | | return Result;
|
| | | }
|
| | | if (bSlave)
|
| | | {
|
| | | ChnStats[0].ClientRecvPkts++;
|
| | | Result=SlaveCheckPacket(p1,Len1);
|
| | | Result=SlaveCheckPacket(nChn, p1, Len1);
|
| | | if (Result != S_OK)
|
| | | {
|
| | | return Result;
|
| | | }
|
| | | ChnStats[0].ClientTimeOutErr=KMem.RunStat;
|
| | | Result=SlaveParsePacket(p1,Len1);
|
| | | Result=SlaveParsePacket(nChn, p1, Len1);
|
| | | return Result;
|
| | | }
|
| | | //int len1=p1->PacketLen;
|
| | |
| | | return PacketLenth;
|
| | | }
|
| | |
|
| | | int KLCheckPacket(void * pBuf,int nLen1)
|
| | | int KLCheckPacket(int nChn, void * pBuf, int nLen1)
|
| | | {
|
| | | pKLReqPktHdr p1 = (pKLReqPktHdr) pBuf;
|
| | | if (p1->ReqStSgn != KLSignStart)
|
| | |
| | | else {ResetBit(pW, bitAddr);}
|
| | | }
|
| | |
|
| | | int KLParseReqPacket(void * pBuf,int Len1)
|
| | | int KLParseReqPacket(int nChn, void * pBuf, int Len1)
|
| | | {
|
| | | pKLReqPktHdr p1 = (pKLReqPktHdr)pBuf;
|
| | |
|
| | |
| | | // KLBufferIn[0]=p1->Params[0];
|
| | | // p1->Params[0]=KLBufferOut[0];
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdPing,DataLen,p1->Params);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | // case KLCmdPingReply:
|
| | | // break;
|
| | |
| | | //if (nDataType == KLDataTypeDT)
|
| | | DataLen= sizeof(KMInfoBlock);
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,DataLen,&KMInfoBlock);
|
| | | SendPacket1(p2,PacketLen); |
| | | SendPacket(nChn, p2, PacketLen); |
| | | break;
|
| | | case KLCmdGetUid:
|
| | | //if (nDataType == KLDataTypeDT)
|
| | | DataLen= 12;
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,DataLen,(uint32_t *)UID_BASE);
|
| | | SendPacket1(p2,PacketLen); |
| | | SendPacket(nChn, p2, PacketLen); |
| | | break;
|
| | | case KLCmdGetSN:
|
| | | //if (nDataType == KLDataTypeDT)
|
| | | DataLen= 4;
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,DataLen,&((pFactoryData)FACTORY_DATA_BASE)->SN1);
|
| | | SendPacket1(p2,PacketLen); |
| | | SendPacket(nChn, p2, PacketLen); |
| | | break;
|
| | | case KLCmdGetFactoryData:
|
| | | DataLen= sizeof(stFactoryData);
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,DataLen,(pFactoryData)FACTORY_DATA_BASE);
|
| | | SendPacket1(p2,PacketLen); |
| | | SendPacket(nChn, p2, PacketLen); |
| | | break;
|
| | | case KLCmdWriteFactoryData:
|
| | | nAddr=p1->Params[0]+ (p1->Params[1]<<8);
|
| | |
| | | {KLPacketBuf2[i]=p1->Params[4+i];}
|
| | | WriteFactoryData(KLPacketBuf2, DataLen);
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,0,0);
|
| | | SendPacket1(p2,PacketLen); |
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | |
|
| | | case KLCmdRead:
|
| | |
| | | else { pData=KLBufferOut+nAddr; }
|
| | |
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,DataLen,pData);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | |
|
| | | break;
|
| | | // case KLCmdReadReply:
|
| | |
| | |
|
| | | memcpy(pData,p1->Params+4,DataLen);
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,0,0);
|
| | | SendPacket1(p2,PacketLen); |
| | | SendPacket(nChn, p2, PacketLen); |
| | | break;
|
| | | // case KLCmdWriteReply:
|
| | | // break;
|
| | |
| | | else if (nDataType == KLCoilTypeLR) { rData[0] = 0;}
|
| | | else {rData[0]=0;}
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdRead1Bit,DataLen,rData);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case KLCmdWrite1Bit:
|
| | | nAddr=p1->Params[0]+ (p1->Params[1]<<8);
|
| | |
| | | else {rData[0]=0;}
|
| | | DataLen=0;
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdWrite1Bit,DataLen,rData);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case KLCmdReadBits:
|
| | | break;
|
| | |
| | | pData = (unsigned short *)ALT_PRG_BASE + nAddr;
|
| | | }
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,DataLen,pData);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | |
|
| | | break;
|
| | | case KLCmdStartProgram:
|
| | |
| | | if (PLCMem.bPLCRunning) PLCMem.bPLCRunning=0;
|
| | |
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdStartProgram,0,0);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | |
|
| | | break;
|
| | | case KLCmdWriteProgram:
|
| | |
| | | DataLen=4;
|
| | | *((int *)(&rData[0]))=(long)(p1->Params+4);
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdWriteProgram,0,0);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case KLCmdFinishProgram:
|
| | | nAddr=p1->Params[0]+ (p1->Params[1]<<8); //Program Size;
|
| | |
| | | // KLBufferIn[0]=p1->Params[0];
|
| | | // p1->Params[0]=KLBufferOut[0];
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdFinishProgram,0,0);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case KLCmdReadRunStat:
|
| | | DataLen= sizeof(stRunStat);
|
| | | pData=&KMRunStat;
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,DataLen,pData);
|
| | | SendPacket1(p2,PacketLen); |
| | | SendPacket(nChn, p2, PacketLen); |
| | | break;
|
| | | case KLCmdSaveSysCfg:
|
| | | WriteSysCfgToFlash(&KMSysCfg);
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdSaveSysCfg,0,0);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case KLCmdSaveRunStat:
|
| | | SaveRunStat(&KMRunStat);
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdSaveRunStat,0,0);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case KLCmdGetEventLogCount:
|
| | | DataLen= 4;
|
| | | pData=&KMem.nEventCount;
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,DataLen,pData);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case KLCmdGetEventLog:
|
| | | nAddr=p1->Params[0]+ (p1->Params[1]<<8);
|
| | | DataLen= p1->Params[2] * sizeof(stEventLog);
|
| | | pData=GetEventLogAddr(nAddr);
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,p1->nCMD,DataLen,pData);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | case KLCmdClearEventLog:
|
| | | ClearEventLog();
|
| | | PacketLen=KLMakeRplyPacket(p2,nDstHost,nKLStatus.StatByte,KLCmdClearEventLog,0,0);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, p2, PacketLen);
|
| | | break;
|
| | | default:
|
| | | DataLen=1;
|
| | | rData[0]=KL_UNKNOWN;
|
| | | PacketLen=KLMakeRplyPacket(p2,nKLAddr,nKLStatus.StatByte,KLCmdErrRply,DataLen,rData);
|
| | | SendPacket1(p2,PacketLen); |
| | | SendPacket(nChn, p2, PacketLen); |
| | | break;
|
| | | }
|
| | | }
|
| | | return 0;
|
| | | }
|
| | | int KLParsePacket(void * pBuf,int Len1)
|
| | | int KLParsePacket(int nChn, void * pBuf, int Len1)
|
| | | {
|
| | | pKLReqPktHdr p1 = (pKLReqPktHdr)pBuf;
|
| | | KLThisuS=GetuS();
|
| | | pKLRplyPktHdr p2=(pKLRplyPktHdr)KLPacketBuf2;
|
| | | // pKLReqPktHdr p1 = (pKLReqPktHdr)pBuf;
|
| | | // KLThisuS=GetuS();
|
| | | // pKLRplyPktHdr p2=(pKLRplyPktHdr)KLPacketBuf2;
|
| | | int PacketLen=Len1;
|
| | | int Result=KLCheckPacket(p1,Len1);
|
| | | int Result=KLCheckPacket(nChn, pBuf, Len1);
|
| | | if (Result != KL_OK)
|
| | | {
|
| | | int DataLen=4;
|
| | | char rData[4];
|
| | | rData[0]=Result;
|
| | |
|
| | | PacketLen=KLMakeRplyPacket(p2,nKLAddr,nKLStatus.StatByte,KLCmdErrRply,DataLen,rData);
|
| | | PacketLen=KLMakeRplyPacket(KLPacketBuf2,nKLAddr,nKLStatus.StatByte,KLCmdErrRply,DataLen,rData);
|
| | | // PacketLen=KLMakePacket(p2,0,nAddr,cmdKLPing,p1->nSEQ,DataLen,rData);
|
| | | SendPacket1(p2,PacketLen);
|
| | | SendPacket(nChn, KLPacketBuf2, PacketLen);
|
| | | return Result;
|
| | | }
|
| | | // if (bMaster) Result=ParseMasterPacket(p1,Len1);
|
| | | // memcpy(KLPacketBuf2,pBuf,Len1);
|
| | | // SendPacket1(p2,PacketLen);
|
| | | // SendPacket(nChn, KLPacketBuf2, PacketLen);
|
| | |
|
| | | Result=KLParseReqPacket(p1,Len1);
|
| | | Result=KLParseReqPacket(nChn, pBuf, Len1);
|
| | |
|
| | | //int len1=p1->PacketLen;
|
| | | // if (p1->DstHost!=255&&p1->DstHost!=2) return -3;
|
| | |
| | | unsigned int nEventMaxSeq=0;
|
| | | int nEventNextSpace;
|
| | | int nMaxCurTime=0;
|
| | | volatile int PowerDownEvent=0;
|
| | | volatile int OldPowerDownEvent=0;
|
| | | volatile int OldPowerDownEventTime=0;
|
| | |
|
| | |
|
| | | int CheckEventLog()
|
| | | {
|
| | | unsigned int nMinEventSeq=999999999;
|
| | |
| | | 0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400
|
| | | };
|
| | |
|
| | | uint16_t crc16tablefast(uint8_t *ptr, uint16_t len) |
| | | uint16_t crc16tablefast(const uint8_t *ptr, uint16_t len) |
| | | {
|
| | | uint16_t crc = 0xffff;
|
| | | uint16_t i;
|
| | |
| | | //**********************************************************************
|
| | | //****************** Modbus slave ************************************
|
| | |
|
| | | int ModBusSlaveCheckPkg(void *ptr, uint16_t len1)
|
| | | int ModBusSlaveCheckPkg(int nChn, void *ptr, uint16_t len1)
|
| | | {
|
| | | if (len1 <=4) return -1; //包长
|
| | | pModBusRTUReqPkg pPkg = (pModBusRTUReqPkg) ptr;
|
| | |
| | |
|
| | | uint8_t Pkgbuf[128];
|
| | |
|
| | | int ModBusSlaveParsePkg( void *ptr, uint16_t len)
|
| | | int ModBusSlaveParsePkg(int nChn, void *ptr, uint16_t len)
|
| | | {
|
| | | uchar * bptr = (uchar *) ptr;
|
| | | int err=ModBusSlaveCheckPkg(ptr,len); |
| | | int err=ModBusSlaveCheckPkg(nChn, ptr, len); |
| | | if (err) return -1;
|
| | | pModBusRTUReqPkg pPkg = (pModBusRTUReqPkg) ptr;
|
| | | uint8_t DstHost=pPkg->Dst;
|
| | |
| | | {
|
| | | Addr1=(Addr&0xff0)>>4;
|
| | | bitAddr=Addr&0xf;
|
| | | if (GetBitValue( KMem.WR[Addr1],bitAddr))
|
| | | if (GetBitValue( KMem.WY[Addr1],bitAddr))
|
| | | {
|
| | | thisValue|=bitmask;
|
| | | }
|
| | |
| | | }
|
| | | len2+=1+nByteCount;
|
| | | break;
|
| | | case ReadInputs: //2 bits
|
| | | case ReadInputs: //2 , bits
|
| | | // Fetch Datas;
|
| | | nByteCount=(nCount+7)/8;
|
| | | Pkgbuf[2]=nByteCount;
|
| | |
| | | case WriteCoil: //5 bit
|
| | | //Store Datas;
|
| | | //SetBitValue(&KMem.WR[Addr1],bitAddr,pPkg->nCount);
|
| | | if (nCount == 0)
|
| | | if (nCount == 0) // set to 0
|
| | | {
|
| | | ResetBit(&KMem.WR[Addr1],bitAddr);
|
| | | }else if (nCount == 0xFF00)
|
| | | ResetBit(&KMem.WY[Addr1],bitAddr);
|
| | | }else if (nCount == 0xFF00) // set to 1
|
| | | {
|
| | | SetAddrBit(&KMem.WR[Addr1],bitAddr);
|
| | | SetAddrBit(&KMem.WY[Addr1],bitAddr);
|
| | | }else
|
| | | {
|
| | | //error
|
| | |
| | | Addr1=(Addr&0xff0)>>4;
|
| | | bitAddr=Addr&0xf;
|
| | |
|
| | | SetBitValue( &KMem.WR[Addr1],bitAddr,bitmask&thisValue);
|
| | | SetBitValue( &KMem.WY[Addr1],bitAddr,bitmask&thisValue);
|
| | | bitmask<<=1;
|
| | | Addr++;
|
| | | }
|
| | |
| | | len2+=2;
|
| | | }
|
| | | //SendPkg(Pkgbuf,len2);
|
| | | SendPacket1(Pkgbuf,len2);
|
| | | SendPacket(nChn, Pkgbuf, len2);
|
| | | }
|
| | |
|
| | | return 0;
|
| | |
| | | #include "functions.h"
|
| | | #include "string.h"
|
| | | #include "stm32f0xx_hal.h"
|
| | | #if (BOARD_TYPE == 12)
|
| | | #include "fp0.h"
|
| | | #endif
|
| | | extern __IO uint32_t uwTick;
|
| | | //#include "Myprotocol.h"
|
| | | int TickFreq=10000;
|
| | |
| | | unsigned short crc_check(const unsigned char * data, unsigned int length)
|
| | | {
|
| | | unsigned short crc_reg = 0xFFFF;
|
| | | while (length--)
|
| | | {
|
| | | crc_reg = (crc_reg >> 8) ^ crc16_table[(crc_reg ^ *data++) & 0xff];
|
| | | }
|
| | | while (length--)
|
| | | {
|
| | | crc_reg = (crc_reg >> 8) ^ crc16_table[(crc_reg ^ *data++) & 0xff];
|
| | | }
|
| | | return (~crc_reg) & 0xFFFF;
|
| | | }
|
| | |
|
| | |
| | |
|
| | | void PendSvCallBack()
|
| | | {
|
| | | #if (BOARD_TYPE == 12)
|
| | | ///* |
| | | if (bSPI1RecvDone)
|
| | | {
|
| | | bSPI1RecvDone=0;
|
| | | ParseFP0Pkg(SPI1RecvBuf,nSPI1RecvLenInBuf);
|
| | | }
|
| | | //*/ |
| | | #endif |
| | | if (Uart2Stat.bPacketRecved)
|
| | | {
|
| | | ParsePacket((pPacket)Uart2RecvBuf1,Uart2RecvBuf1DataLen); |
| | | ParsePacket(2, (pPacket)Uart2RecvBuf1, Uart2RecvBuf1DataLen); |
| | | Uart2RecvBuf1DataLen=0;
|
| | | Uart2Stat.bPacketRecved=0;
|
| | | Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1));
|
| | | }
|
| | | }
|
| | |
|
| | | void SPI1_IRQ_CallBack()
|
| | | {
|
| | | uint8_t value;
|
| | | // LL_GPIO_TogglePin(GPIOB,LL_GPIO_PIN_7);
|
| | | if (LL_SPI_IsActiveFlag_RXNE(SPI1))
|
| | | {
|
| | | value = LL_SPI_ReceiveData8( SPI1);
|
| | | #if (BOARD_TYPE == 12)
|
| | | KMem.SDD[62]++;
|
| | | KMem.SDT[122]++;
|
| | | if (!bSPI1Sending)
|
| | | {
|
| | | KMem.SDB[128+KMem.SDT[123]] = value;
|
| | | KMem.SDT[123]++; if (KMem.SDT[123]>=100) {KMem.SDT[123]=81;}
|
| | | }
|
| | | if (!bSPI1Sending && (1 || bSPI1Recving))
|
| | | {
|
| | | SPI1RecvBuf[nSPI1RecvPos]=value;
|
| | | nSPI1RecvPos++;
|
| | | |
| | | if (value==0x0d)
|
| | | {
|
| | | KMem.SDB[128+KMem.SDT[123]] = nSPI1RecvPos;
|
| | | KMem.SDT[123]++; if (KMem.SDT[123]>=100) {KMem.SDT[123]=81;}
|
| | |
|
| | | nSPI1RecvLenInBuf=nSPI1RecvPos;
|
| | | bSPI1RecvDone=1;
|
| | | nSPI1RecvPos=0;
|
| | | bSPI1Recving=0;
|
| | | |
| | | |
| | | TriggerPendSV();
|
| | | }
|
| | | }
|
| | | if (bSPI1Sending)
|
| | | {
|
| | | nSPI1SentLen++;
|
| | | KMem.SDD[63]++;
|
| | | |
| | | if (nSPI1SentLen >= nSPI1ToSendLen) {
|
| | | SetACKPin_1();
|
| | | bSPI1Sending=0;
|
| | | bSPI1SendDone=1;
|
| | | bSPI1Recving=1;
|
| | | nSPI1RecvPos=0;
|
| | | SetFP0DEPin_0();
|
| | | }
|
| | | else {
|
| | | value = SPI1SendBuf[nSPI1SentLen];
|
| | | LL_SPI_TransmitData8(SPI1,value);
|
| | | KMem.SDB[128+KMem.SDT[123]] = value;
|
| | | KMem.SDT[123]++; if (KMem.SDT[123]>=100) {KMem.SDT[123]=81;} |
| | | }
|
| | | }
|
| | | #endif |
| | | } |
| | | }
|
| | |
|
| | | void Uart1SendDone()
|
| | | {
|
| | | Uart1Stat.TcCount++;
|
| | |
| | | int PutStr(char * str1, int len1)
|
| | | {
|
| | | // Uart1SendDMA(str1,len1);
|
| | | //PushIn(&Uart1Stat.QTx,str1,len1);
|
| | | PushIn(&Uart1Stat.QTx,str1,len1);
|
| | | // LL_USART_EnableIT_TXE(USART1);
|
| | | // LL_USART_EnableIT_TC(USART1);
|
| | | //Uart1TriggerSendDMA();
|
| | | Uart1TriggerSendDMA();
|
| | | return len1;
|
| | | }
|
| | | int PutStr1(char * str1, int len1)
|
| | |
| | | return len1;
|
| | | }
|
| | |
|
| | | void clearscreen()
|
| | | int SendPacket(int nChn, void * pBuf,int len1)
|
| | | {
|
| | | PutStr("\33[2J\33[0;0H",10);
|
| | | return;
|
| | | if (nChn==1) {
|
| | | PutStr1((char *)pBuf,len1);
|
| | | // PushIn(&Uart1Stat.QTx,p1,len1);
|
| | | // Uart1TriggerSendDMA();
|
| | | Uart1Stat.SentPacket++; |
| | | }else if (nChn==2){
|
| | | PutStr2((char *)pBuf,len1); |
| | | // PushIn(&Uart2Stat.QTx,p1,len1);
|
| | | // Uart2TriggerSendDMA(); |
| | | Uart2Stat.SentPacket++; |
| | | }
|
| | | return len1;
|
| | | }
|
| | |
|
| | | void Locate(int y,int x)
|
| | | {
|
| | | char str[16];
|
| | | int len;
|
| | | len=sprintf(str," \33[%d;%dH",y,x);
|
| | | PutStr(str,len);
|
| | | return;
|
| | | }
|
| | |
|
| | | /*
|
| | | int SendPacket1(void * pBuf,int len1)
|
| | | {
|
| | | PutStr1((char *)pBuf,len1);
|
| | |
| | | Uart2Stat.SentPacket++;
|
| | | return len1;
|
| | | }
|
| | |
|
| | | */
|
| | | void ToggleRunLed() { LL_GPIO_TogglePin(GPIOC,LL_GPIO_PIN_13);}
|
| | | void ToggleErrLed() { LL_GPIO_TogglePin(GPIOC,LL_GPIO_PIN_14);}
|
| | | #if (BOARD_TYPE == 12)
|
| | | void ToggleOutStat() { LL_GPIO_TogglePin(GPIOC,LL_GPIO_PIN_15);}
|
| | |
|
| | | void SetOutStat(uchar bOn)
|
| | | {
|
| | | if (bOn) {LL_GPIO_SetOutputPin(GPIOC,LL_GPIO_PIN_15);}
|
| | | else {LL_GPIO_ResetOutputPin(GPIOC,LL_GPIO_PIN_15);} |
| | | }
|
| | | #else
|
| | | void ToggleOutStat() { LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_11);}
|
| | |
|
| | | void SetOutStat(uchar bOn)
|
| | |
| | | if (bOn) {LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_11);}
|
| | | else {LL_GPIO_ResetOutputPin(GPIOA,LL_GPIO_PIN_11);}
|
| | | }
|
| | | #endif
|
| | |
|
| | | void SetRunLed(uchar bOn)
|
| | | {
|
| | |
| | | return Input165_R(8);
|
| | | case 11:
|
| | | return Input165_R(8);
|
| | | case 12:
|
| | | return 0; //FP0
|
| | | default:
|
| | | break;
|
| | | }
|
| | |
| | | return ReadConfig_5(); //New Slave 8 in 8 o
|
| | | case 11:
|
| | | return ReadConfig_11(); //Mini Board
|
| | | case 12:
|
| | | return (~(LL_GPIO_ReadInputPort(GPIOA)>>4))&0x0f; //FP0
|
| | | case 13:
|
| | | return ReadConfig_5();
|
| | | default:
|
| | |
|
| | | return 0;
|
| | |
| | | __enable_irq();
|
| | | }
|
| | |
|
| | | /*
|
| | | #define STRCLK12_0() LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_7)
|
| | | #define STRCLK12_1() LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_7)
|
| | |
|
| | |
| | | }
|
| | | KMem.SDD[30]=i;
|
| | | STRCLK12_0();
|
| | | STRCLK12_1(); |
| | | __enable_irq();
|
| | | __nop();
|
| | | STRCLK12_1();
|
| | | __enable_irq();
|
| | | }
|
| | |
|
| | | */
|
| | |
|
| | | void PutOutputSPI2(unsigned int Y)
|
| | | {
|
| | |
| | | }
|
| | | KMem.SDD[30]=i;
|
| | | STRCLK2_0();
|
| | | STRCLK2_1(); |
| | | STRCLK2_1();
|
| | | __enable_irq();
|
| | | }
|
| | |
|
| | | void PutOutput(unsigned int Y)
|
| | | {
|
| | | #if (BOARD_TYPE==12)
|
| | | return ;
|
| | | #endif
|
| | | PutOutputSPI2(Y);
|
| | | //Output595_16(Y);
|
| | | }
|
| | |
| | |
|
| | | /* USER CODE BEGIN Includes */
|
| | | #include "Globaldef.h"
|
| | | #include "debug.h"
|
| | | #include "Functions.h"
|
| | | #include "KMachine.h"
|
| | | #include "PLCfunctions.h"
|
| | |
| | | #include "string.h"
|
| | | #include "BSP.h"
|
| | | #include "ModbusRTU.h"
|
| | | #if (BOARD_TYPE == 12)
|
| | | #include "FP0.h"
|
| | | #elif (BOARD_TYPE == 13)
|
| | | #include "w5500_port.h"
|
| | | #include "../src/Ethernet/socket.h"
|
| | | #include "../src/Ethernet/loopback.h"
|
| | | #endif
|
| | |
|
| | | /* USER CODE END Includes */
|
| | |
|
| | | /* Private variables ---------------------------------------------------------*/
|
| | | #define ADCrefAddr 0x1FFFF7BA
|
| | |
|
| | | /* USER CODE BEGIN PV */
|
| | | /* Private variables ---------------------------------------------------------*/
|
| | |
|
| | |
| | | unsigned char Uart2RxBuf[RX2BUFSIZE];
|
| | | unsigned char Uart2TxBuf[TX2BUFSIZE];
|
| | |
|
| | | //unsigned char buf1[128]; |
| | |
|
| | | unsigned char Datas[128]; |
| | |
|
| | | unsigned int SlowFlicker=0;
|
| | | unsigned int FastFlicker=0;
|
| | |
|
| | | volatile int PacketLength = 0;
|
| | |
|
| | | char str1[256];
|
| | |
|
| | | int TimeOutCount=0;
|
| | | int Clk3=0;
|
| | | int ContinueSend=0;
|
| | | int Uart1baudval=0; |
| | | int Uart2baudval=0; |
| | |
|
| | | int repeater=0;
|
| | |
|
| | | int SendTime,Latancy,LatancyClk,SendClk; |
| | |
|
| | | int LineCount=0;
|
| | |
|
| | | int LastCircleStartTime=0;
|
| | | int CircleTime=0;
|
| | |
|
| | | stBinProg1 * pProgs = (stBinProg1 *)STORE_PRG_BASE;
|
| | | //volatile unsigned int nRunCount=0;
|
| | | volatile int nCount2=0;
|
| | |
|
| | | uint32_t us1,us2,us3,us4,us5,us6;
|
| | | const unsigned char buf1[16]={0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff,0x00};
|
| | |
|
| | | volatile int PowerDownEvent=0;
|
| | | volatile int OldPowerDownEvent=0;
|
| | | volatile int OldPowerDownEventTime=0;
|
| | |
|
| | | /* USER CODE END PV */
|
| | |
|
| | |
| | | /* USER CODE END PFP */
|
| | |
|
| | | /* USER CODE BEGIN 0 */
|
| | | __asm int add1(int a,int b)
|
| | | {
|
| | | add r0,r1,r0
|
| | | BLX lr
|
| | | }
|
| | |
|
| | | int HexToInt(char ch)
|
| | | {
|
| | |
| | | return;
|
| | | }
|
| | |
|
| | | int FormatHex(char * buf1,uchar * data,int n)
|
| | | {
|
| | | int len1=0;
|
| | | for (int i=0;i<n;i++)
|
| | | {len1+=sprintf(buf1+len1,"%02X ",data[i]);}
|
| | | len1+=sprintf(buf1+len1,"\r\n"); |
| | | return len1;
|
| | | }
|
| | |
|
| | | int RepeaterFunc()
|
| | | {
|
| | | KMem.WY[0]=KMem.WX[0];
|
| | | if ((KMem.nRunCount &0x7f) == 88) |
| | | { |
| | | nCount2++; |
| | | ToggleRunLed();
|
| | | // int len1=sprintf(str1,"%d %d Cfg %02X Input %02X \r\n",nCount,nCount2,EffJumperSW,MyKeyStat1);
|
| | | // PutStr(str1,len1);
|
| | | } |
| | | return 0;
|
| | | }
|
| | |
|
| | |
|
| | | int ShowInitInfo()
|
| | | {
|
| | | int len1=0;
|
| | | clearscreen();
|
| | | // Locate(1,1);
|
| | |
|
| | | /* |
| | | LoadFlashDatas();
|
| | | |
| | | LoadAndUpdateStoreCfg();
|
| | | |
| | | HAL_StatusTypeDef res; |
| | | stStoreCfg * pFCfg = (stStoreCfg *) GetCurStoreCfgAddr();
|
| | | stStoreCfg * pFCfg2 = GetNextStoreCfgAddr(pFCfg); |
| | |
|
| | | int t11=GetuS();
|
| | | |
| | | for (int i=0;i<20;i++)
|
| | | {
|
| | | tims[i]=GetuS();
|
| | | } |
| | | clearscreen();
|
| | | len1+=sprintf(str1+len1," Ver 001 \r\n");
|
| | | len1+=sprintf(str1+len1," Uart1Baud %d Uart2Baud %d UID %08x %08x %08x \r\n",Uart1Baud,Uart2Baud,pUID[0],pUID[1],pUID[2]);
|
| | | len1+=sprintf(str1+len1," Flash = %d %d %d %d res = %d ",FlashDatas[0],FlashDatas[1],FlashDatas[2],FlashDatas[3],res);
|
| | | len1+=sprintf(str1+len1,"flash operation = %u %u %u\r\n",t11-t10,t10,t11);
|
| | | PutStr(str1,len1);
|
| | | len1=0;
|
| | | len1+=sprintf(str1+len1,"%08X %X %X , PowerOn %X UpTime %X %X %X %X \r\n",
|
| | | (uint32_t)pFCfg,pFCfg[0].Sign1,pFCfg[0].SN1,pFCfg[0].PowerCount,pFCfg[0].UpTime,pFCfg[0].UserData1,pFCfg[0].CRC1,pFCfg[0].EndSign1);
|
| | | len1+=sprintf(str1+len1,"%08X %X %X , PowerOn %X UpTime %X %X %X %X \r\n",
|
| | | (uint32_t)pFCfg2,Cfg2.Sign1,Cfg2.SN1,Cfg2.PowerCount,Cfg2.UpTime,Cfg2.UserData1,Cfg2.CRC1,Cfg2.EndSign1);
|
| | | PutStr(str1,len1);
|
| | | */ |
| | | len1=0;
|
| | | /* |
| | | for (int i=0;i<8;i++)
|
| | | {
|
| | | len1=0;
|
| | | len1+=sprintf(str1+len1,"%02X:",i*32);
|
| | | for (int j=0;j<8;j++)
|
| | | {
|
| | | len1+=sprintf(str1+len1," %02X",pFlash1[i*32+j]);
|
| | | }
|
| | | len1+=sprintf(str1+len1," %02X",pFlash1[i*32+8]);
|
| | | for (int j=9;j<16;j++)
|
| | | {
|
| | | len1+=sprintf(str1+len1," %02X",pFlash1[i*32+j]);
|
| | | }
|
| | | len1+=sprintf(str1+len1," | %02X",pFlash1[i*32+16]);
|
| | | for (int j=17;j<24;j++)
|
| | | {
|
| | | len1+=sprintf(str1+len1," %02X",pFlash1[i*32+j]);
|
| | | }
|
| | | len1+=sprintf(str1+len1," %02X",pFlash1[i*32+24]);
|
| | | for (int j=25;j<32;j++)
|
| | | {
|
| | | len1+=sprintf(str1+len1," %02X",pFlash1[i*32+j]);
|
| | | }
|
| | | len1+=sprintf(str1+len1,"\r\n");
|
| | | PutStr(str1,len1);
|
| | | }
|
| | | */ |
| | | us1=GetuS();
|
| | | int crc1 = crc_check(buf1,16);
|
| | | us2=GetuS();
|
| | | int crc2 = crc16bitbybit(buf1,16);
|
| | | us3=GetuS();
|
| | | int crc3 = crc16table(buf1, 16);
|
| | | us4=GetuS();
|
| | | int crc4 = crc16tablefast(buf1, 16);
|
| | | us5=GetuS();
|
| | | LL_CRC_ResetCRCCalculationUnit(CRC);
|
| | | LL_CRC_SetInitialData(CRC,0xFFFFFFFF);
|
| | | LL_CRC_SetInitialData(CRC,0xA001);
|
| | | for (int i=0;i<16;i++)
|
| | | {
|
| | | LL_CRC_FeedData8(CRC,buf1[i]);
|
| | | }
|
| | | int crc5 = LL_CRC_ReadData32(CRC);
|
| | | us6=GetuS();
|
| | | |
| | | len1+=sprintf(str1+len1,"CRC %04X %04X %04X %04X %04X\r\n",crc1,crc2,crc3,crc4,crc5);
|
| | | len1+=sprintf(str1+len1,"time %04d %04d %04d %04d %04d\r\n",us2-us1,us3-us2,us4-us3,us5-us4,us6-us5);
|
| | | |
| | | PutStr(str1,len1);
|
| | |
|
| | | // InitTimer(0,0);
|
| | | // InitTimer(1,1);
|
| | | // InitTimer(2,2);
|
| | | // InitTimer(3,3);
|
| | | |
| | | // RunTimer(0,1000);
|
| | | // StartTimer(2,1000);
|
| | | Locate(13,1);LineCount=3;
|
| | | return 0;
|
| | | }
|
| | | int sprintftime = 0;
|
| | | int putstrtime = 0;
|
| | |
|
| | | int ADCProcess()
|
| | | {
|
| | | // ADC channels
|
| | | // 0 -- 24V --> 0
|
| | | // 1 -- 5V --> 2
|
| | | // 2 -- |
| | | // 3 -- |
| | | // 4 -- |
| | | // 5 -- |
| | | // 6 -- |
| | | // 7 -- |
| | | // 8 -- |
| | | // --> 5
|
| | | // 16 -- Temp --> 6
|
| | | // 17 -- Vref --> 7
|
| | |
|
| | | uint16_t ADC_ConvertedValue=0;
|
| | | static int CurChannel=LL_ADC_CHANNEL_0;
|
| | | //static int waitcount = 0;
|
| | | |
| | | if (!LL_ADC_REG_IsConversionOngoing(ADC1))
|
| | | {
|
| | | //waitcount++;
|
| | | //if (waitcount<2) return 0;
|
| | | //waitcount=0;
|
| | | ADC_ConvertedValue = LL_ADC_REG_ReadConversionData12(ADC1);
|
| | | |
| | | // ADC_RegularChannelConfig(LL_ADC_CHANNEL_17,);
|
| | | int channels = CurChannel ;//LL_ADC_REG_GetSequencerChannels(ADC1);
|
| | | int nextchannel = LL_ADC_CHANNEL_0;
|
| | | if ((channels & LL_ADC_CHANNEL_0) == LL_ADC_CHANNEL_0)
|
| | | {
|
| | | KMem.ADCValues[0] = ADC_ConvertedValue;
|
| | | nextchannel = LL_ADC_CHANNEL_8;
|
| | | }else if ((channels & LL_ADC_CHANNEL_8) == LL_ADC_CHANNEL_8)
|
| | | {
|
| | | KMem.ADCValues[2] = ADC_ConvertedValue; |
| | | nextchannel = LL_ADC_CHANNEL_TEMPSENSOR;
|
| | | if (KMem.ADCValues[2] < 2200) |
| | | {
|
| | | PowerDownEvent=1;
|
| | | }else |
| | | {
|
| | | PowerDownEvent=0;
|
| | | }
|
| | | }else if ((channels & LL_ADC_CHANNEL_16) == LL_ADC_CHANNEL_16)
|
| | | {
|
| | | KMem.ADCValues[6] = ADC_ConvertedValue; |
| | | nextchannel = LL_ADC_CHANNEL_VREFINT;
|
| | | }else if ((channels & LL_ADC_CHANNEL_17) == LL_ADC_CHANNEL_17)
|
| | | {
|
| | | KMem.ADCValues[7] = ADC_ConvertedValue; |
| | | KMem.ADCValues[5] = *((unsigned short *)ADCrefAddr);
|
| | | |
| | | nextchannel = LL_ADC_CHANNEL_0;
|
| | | }else
|
| | | {
|
| | | //ADCValues[0] = ADC_ConvertedValue; |
| | | }
|
| | | //nextchannel = LL_ADC_CHANNEL_VREFINT;
|
| | | LL_ADC_REG_SetSequencerChannels(ADC1,nextchannel); |
| | | LL_ADC_REG_StartConversion(ADC1);
|
| | | CurChannel = nextchannel;
|
| | | } |
| | | return 0;
|
| | | }
|
| | |
|
| | | int PowerDownProcess(void )
|
| | | {
|
| | | AddEventLog(KMem.CurTimeSec,EventTypePowerDown,1,12345);
|
| | | SaveRunStat(&KMRunStat);
|
| | | KMem.PwrFailCount++;
|
| | | KMem.LastPwrFailTime = KMem.CurTimeSec;
|
| | | return 0;
|
| | | }
|
| | |
|
| | | int PowerRecoverProcess(void)
|
| | | {
|
| | | KMem.PwrFailCount++;
|
| | | |
| | | return 0;
|
| | | }
|
| | | int ShowRunningInfo()
|
| | | {
|
| | | int Clk1=SysTick->VAL; |
| | | if (Uart1BaudFirstGot)
|
| | | {
|
| | | Uart1baudval = HAL_RCC_GetPCLK1Freq() / USART1->BRR;
|
| | | Uart1BaudFirstGot=0;
|
| | | }
|
| | | if (Uart2BaudFirstGot)
|
| | | {
|
| | | Uart2baudval = HAL_RCC_GetPCLK1Freq() / USART2->BRR;
|
| | | Uart2BaudFirstGot=0;
|
| | | } |
| | | int Reload=SysTick->LOAD;
|
| | |
|
| | | int Clk2=SysTick->VAL;
|
| | | //int us2=GetuS();
|
| | | int haltick=HAL_GetTick();
|
| | | int len1=0;
|
| | | uint32_t theUs = GetuS();
|
| | | int nRunCount2=KMem.nRunCount;
|
| | | if (!Uart1Stat.QTx.bEmpty) return 0;
|
| | | |
| | | if ( (nRunCount2 & 0xff) == 0x03)
|
| | | {
|
| | | Locate(13,1);LineCount=3;
|
| | | } else if ((nRunCount2 & 0xff) == 0x0f)
|
| | | {
|
| | | int timeus1;
|
| | | int timeus2;
|
| | | |
| | | len1=sprintf((char *)str1," N %8d Tk %8d %9u CFG %02X R %d M %d S %d %4d IN %04X OUT %04X \r\n",
|
| | | KMem.nRunCount, haltick, theUs, KMem.EffJumperSW, repeater, bMaster, bSlave, Clk2, KMem.WX[0],KMem.WY[0]);
|
| | | //len1=sprintf((char *)str1,"U%02X%02XA",x2,x2);
|
| | | // Locate(10,1);
|
| | | timeus1=GetuS();
|
| | | PutStr(str1,len1);
|
| | | timeus2=GetuS();
|
| | | sprintftime = timeus1 - theUs;
|
| | | putstrtime = timeus2 - timeus1;
|
| | | if (IsTimerOn(0)) {RunTimer(1,1000);StopTimer(3);}
|
| | | if (IsTimerOn(1)) {RunTimer(2,100);StopTimer(0);}
|
| | | if (IsTimerOn(2)) {RunTimer(3,10);StopTimer(1);}
|
| | | if (IsTimerOn(3)) {RunTimer(0,10000);StopTimer(2);}
|
| | | }
|
| | | if ((nRunCount2 & 0xff) == 0x2f && 0)
|
| | | {
|
| | |
|
| | | } |
| | | if ((nRunCount2 & 0xff) == 0x0af)
|
| | | {
|
| | | |
| | | } |
| | | return 0;
|
| | | }
|
| | |
|
| | | int MasterFunc()
|
| | | {
|
| | | uint32_t tick1=HAL_GetTick();
|
| | | uint32_t thisuS=GetuS();
|
| | | |
| | | int len1=0;
|
| | |
|
| | | if ((MasterRecved && MasterRecvOK && thisuS-SendTimeuS>50) || thisuS-SendTimeuS>1000u)
|
| | | {
|
| | | if (!MasterRecvOK) |
| | | {
|
| | | TimeOutCount++;
|
| | | Uart2Stat.TimeOutErr++; |
| | | ChnStats[nCurPollId].LostPackets++;
|
| | | ChnStats[nCurPollId].CtnLstPkts++;
|
| | | if (!MasterRecved) {ChnStats[nCurPollId].TimeOutErr++;}
|
| | | if (ChnStats[nCurPollId].CtnLstPkts>ChnStats[nCurPollId].MaxCtnLstPkts)
|
| | | {ChnStats[nCurPollId].MaxCtnLstPkts=ChnStats[nCurPollId].CtnLstPkts;}
|
| | | if (ChnStats[nCurPollId].CtnLstPkts>3)
|
| | | {
|
| | | ChnStats[nCurPollId].Stat=0;
|
| | | KMem.ErrStat=200;
|
| | | |
| | | {BufferIn[nCurPollId]=0;}
|
| | | }
|
| | | // LL_GPIO_SetOutputPin(GPIOA,LL_GPIO_PIN_7);
|
| | | }else
|
| | | {
|
| | | ChnStats[nCurPollId].Stat=1;
|
| | | |
| | | KMem.RunStat=100;
|
| | | }
|
| | | nCurPollId ++;
|
| | | if (nCurPollId > nChilds)
|
| | | {
|
| | | CircleTime=thisuS-LastCircleStartTime;
|
| | | LastCircleStartTime=thisuS;
|
| | | nSeq++;
|
| | | nCurPollId=1;
|
| | | }
|
| | | if (KMRunStat.WorkMode==0)
|
| | | {
|
| | | KMem.WX[0]= GetInput();
|
| | | KMem.WY[1]=KMem.WX[0]&0xff;
|
| | | KMem.WY[2]=(KMem.WX[0]>>8)&0xff; |
| | | }
|
| | | BufferOut[1]=KMem.WY[1];
|
| | | BufferOut[2]=KMem.WY[2]; |
| | | |
| | | Datas[0]=BufferOut[nCurPollId];
|
| | | Datas[1]=BufferOut[nCurPollId+1];;
|
| | | Datas[2]=ChnStats[nCurPollId].Stat;
|
| | | Datas[3]=0;
|
| | | Datas[4]=tick1&0xff;
|
| | | Datas[5]=(tick1>>8)&0xff;
|
| | | Datas[6]=(tick1>>16)&0xff;
|
| | | Datas[7]=(tick1>>24)&0xff;
|
| | | |
| | | SendTimeuS=thisuS; |
| | | len1=MakePacket((pPacket)PacketBuf1,0,nCurPollId,cmdExChgData,nSeq,8,Datas);
|
| | | SendPacket2((pPacket)PacketBuf1,len1);
|
| | | ChnStats[nCurPollId].SendPackets++;
|
| | | ChnStats[nCurPollId].SendTimeInterval=SendTimeuS-ChnStats[nCurPollId].LastSentTimeuS;
|
| | | ChnStats[nCurPollId].LastSentTimeuS=SendTimeuS;
|
| | | PacketLength = len1;
|
| | | SendTime=tick1;
|
| | |
|
| | | MasterRecved=0;
|
| | | MasterRecvOK=0;
|
| | | // LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_5); |
| | | //ToggleErrLed();
|
| | | // ToggleOut8();
|
| | |
|
| | | }
|
| | | |
| | | Clk3=SysTick->VAL;
|
| | | // LL_GPIO_TogglePin(GPIOA,LL_GPIO_PIN_4);
|
| | | // HAL_Delay(1); |
| | | return 0;
|
| | | }
|
| | |
|
| | | int SlaveFunc()
|
| | | {
|
| | | int ThisuS=GetuS();
|
| | | int thisRecvTime=RecvTimeuS;
|
| | | if (SlaveRecved)
|
| | | {
|
| | | KMem.RunStat=8000;
|
| | | SlaveRecved=0;
|
| | | }else if ((ThisuS - thisRecvTime) >12000u)
|
| | | {
|
| | | KMem.ErrStat=8000;
|
| | | KMem.SDD[17]=1;
|
| | | KMem.SDD[18]=ThisuS;
|
| | | KMem.SDD[19]=RecvTimeuS;
|
| | | }else if ( ThisuS > (thisRecvTime + 12000u))
|
| | | {
|
| | | KMem.ErrStat=8000;
|
| | | KMem.SDD[17]=2;
|
| | | KMem.SDD[18]=ThisuS;
|
| | | KMem.SDD[19]=RecvTimeuS;
|
| | | }
|
| | | |
| | | return 0;
|
| | | }
|
| | |
|
| | | /* USER CODE END 0 */
|
| | |
|
| | | /**
|
| | |
| | |
|
| | | /* USER CODE BEGIN Init */
|
| | |
|
| | | for (int i=0;i<16;i++)
|
| | | for (int i=0;i<9;i++)
|
| | | {
|
| | | // memset(ChnStats[i],0,0);
|
| | | ChnStats[i].SendPackets=0;
|
| | |
| | | ReadSysCfgFromFlash(&KMSysCfg);
|
| | |
|
| | | KMem.EffJumperSW=ReadJumperSW();
|
| | | #if (BOARD_TYPE == 12)
|
| | | KMem.EffJumperSW|=0x10;
|
| | | nAddr=KMem.EffJumperSW&0x0f;
|
| | | if ((KMem.EffJumperSW&0x10)!=0) {bMaster=1;bSlave=0;}
|
| | | else{bMaster=0;bSlave=1;}
|
| | | nChilds=nAddr;
|
| | | FP0_Init();
|
| | | #else
|
| | | nAddr=KMem.EffJumperSW&0x7;
|
| | | if (KMem.EffJumperSW == 0x0f) {repeater=1;bMaster=1;bSlave=0;}
|
| | | if (KMem.EffJumperSW == 0x0f) {bRepeater=1;bMaster=1;bSlave=0;}
|
| | | else if ((KMem.EffJumperSW&0x08)!=0) {bMaster=1;bSlave=0;}
|
| | | else{bMaster=0;bSlave=1;} |
| | | else{bMaster=0;bSlave=1;}
|
| | | #endif
|
| | | nChilds=nAddr;
|
| | | nCurPollId=1;
|
| | | if (KMem.EffJumperSW == 0x00) Uart1Baud = DefaultUart1Baud;
|
| | | //if (KMem.EffJumperSW == 0x00)
|
| | | Uart1Baud = DefaultUart1Baud;
|
| | | MX_USART1_UART_Init();
|
| | | MX_USART2_UART_Init();
|
| | |
|
| | | MX_SPI1_Init();
|
| | | |
| | | LL_SPI_EnableIT_RXNE(SPI1);
|
| | |
|
| | | #if (BOARD_TYPE == 12)
|
| | | // MX_SPI2_Init();
|
| | | // MX_ADC_Init();
|
| | | #else
|
| | | MX_SPI2_Init();
|
| | | MX_ADC_Init();
|
| | | #endif
|
| | |
|
| | | MX_IWDG_Init();
|
| | |
|
| | | MX_TIM6_Init();
|
| | | LL_TIM_EnableCounter(TIM6);
|
| | |
|
| | | /* USER CODE BEGIN 2 */
|
| | | LL_USART_EnableIT_RXNE(USART1);
|
| | |
| | | Uart2RecvDMA(Uart2RecvBuf1,sizeof(Uart2RecvBuf1));
|
| | | LL_USART_EnableIT_IDLE(USART2);
|
| | | LL_USART_EnableIT_TC(USART2);
|
| | | #if (BOARD_TYPE == 13)
|
| | | int res;
|
| | | res = w5500_init();
|
| | | KMem.SDD[28]=res;
|
| | |
|
| | | // res=socket(0,Sn_MR_TCP,5000,0);
|
| | | KMem.SDD[29]=res; |
| | | |
| | | // res = listen(0);
|
| | | #endif |
| | | // if (bSlave)
|
| | | {
|
| | | // LL_USART_EnableAutoBaudRate(USART1);
|
| | |
| | | HAL_Delay(10);
|
| | | SetRunLed(1); //Turn On Run Led
|
| | | SetErrLed(0); //Turn Off Err Led
|
| | |
|
| | | #if (BOARD_TYPE == 12)
|
| | | // PutOutput (0); //Clear all Output
|
| | | // Enable595(1); //Enable 595 Output |
| | | #else
|
| | | PutOutput (0); //Clear all Output
|
| | | Enable595(1); //Enable 595 Output
|
| | | #endif
|
| | |
|
| | | if (GetBoardType() == 7 || GetBoardType() ==8
|
| | | || GetBoardType() == 9 || GetBoardType() ==10 )
|
| | | {
|
| | |
| | | SetOutStat(0); //OK Good, signal
|
| | | ShowInitInfo();
|
| | | KMem.LastScanTime = GetuS();
|
| | | /* |
| | | int time1=GetuS(); |
| | | PutOutput(0x01);
|
| | | int x;
|
| | | while (1)
|
| | | {
|
| | | x = GetInput();
|
| | | if (x&0x1) break;
|
| | |
|
| | | KMRunStat.WorkMode=0;
|
| | | if (KMRunStat.WorkMode == 1){
|
| | | InitPLC();
|
| | | StartPLC();
|
| | | }
|
| | | int time2=GetuS();
|
| | | |
| | | KMem.SDD[17]=time2-time1;
|
| | | PutOutput(0x00);
|
| | | while (1)
|
| | | {
|
| | | x = GetInput();
|
| | | if ((x&0x1) == 0) break;
|
| | | } |
| | | int time3=GetuS();
|
| | | |
| | | KMem.SDD[18]=time3-time2; |
| | | */ |
| | | InitPLC();
|
| | | StartPLC();
|
| | | KMRunStat.WorkMode=1;
|
| | | KMem.WX[5]=0x5a;
|
| | | KMem.WX[7]=0x5a;
|
| | |
|
| | | while (1)
|
| | | {
|
| | | //int MyKeyStat1,MyKeyStat2;
|
| | | //MyKeyStat1=GetInput();
|
| | |
|
| | |
|
| | | #if (BOARD_TYPE == 12)
|
| | | FP0_Proc();
|
| | | #endif
|
| | | //*((unsigned int *)&(PLCMem.SDT[10]))=nRunCount;
|
| | | // KMem.nRunCount=nRunCount;
|
| | | SlowFlicker=0;
|
| | |
| | | // KMem.SDD[13]=PendSvCount;
|
| | | // KMem.SDD[14]=RCC->CSR;
|
| | |
|
| | | #if (BOARD_TYPE == 12)
|
| | | // KMem.WX[0]= GetInput(); |
| | | #else
|
| | | KMem.WX[0]= GetInput();
|
| | | #endif
|
| | |
|
| | | if (GetBoardType() == 7 || GetBoardType() ==8
|
| | | || GetBoardType() == 9 || GetBoardType() ==10 )
|
| | |
| | |
|
| | |
|
| | | // pProgs = (stBinProg1 *) STORE_PRG_BASE;
|
| | |
|
| | | if ( KMRunStat.WorkMode==1)
|
| | | {
|
| | | if (KMRunStat.nBinProgBank == 0){
|
| | | pProgs=(stBinProg1 *)STORE_PRG_BASE;
|
| | | }else {
|
| | | pProgs=(stBinProg1 *)ALT_PRG_BASE;
|
| | | }
|
| | | nSizeProg1=KMRunStat.nBinProgSize;
|
| | |
|
| | | if (KMRunStat.nBinProgBank == 0){
|
| | | pProgs=(stBinProg1 *)STORE_PRG_BASE;
|
| | | }else {
|
| | | pProgs=(stBinProg1 *)ALT_PRG_BASE;
|
| | | ProcessPLCBinProg(pProgs, nSizeProg1);
|
| | | }
|
| | | nSizeProg1=KMRunStat.nBinProgSize;
|
| | | |
| | | ProcessPLCBinProg(pProgs, nSizeProg1);
|
| | | }
|
| | |
|
| | | KMem.ScanTimeuS=us2-KMem.LastScanTime;
|
| | | KMem.LastScanTime = us2;
|
| | | if (KMem.ScanTimeuS < KMem.MinScanTimeuS) {KMem.MinScanTimeuS = KMem.ScanTimeuS;}
|
| | |
| | | // if (repeater) { RepeaterFunc(); }
|
| | |
|
| | | us3=GetuS();
|
| | |
|
| | | if ((KMem.nRunCount &0x1f) == 0x02)
|
| | | {
|
| | | ADCProcess();
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | if (bMaster)
|
| | | {
|
| | | #if (BOARD_TYPE == 12)
|
| | | for (int i=0;i<nOutputBytes;i++)
|
| | | {BufferOut[i+1]=KMem.WYB[i];}
|
| | | #else
|
| | | // BufferOut[1]=KMem.WX[0]&0xff;
|
| | | // BufferOut[2]=(KMem.WX[0]>>8)&0xff;
|
| | | MasterFunc();
|
| | | |
| | | // KMem.WY[0]=BufferIn[1]+(BufferIn[2]<<8);
|
| | | #endif
|
| | | if (nChilds>0) { MasterFunc(2); }
|
| | |
|
| | | #if (BOARD_TYPE == 12) |
| | | // KMem.WX[0]=BufferIn[1]+(BufferIn[2]<<8);
|
| | | #else
|
| | | // KMem.WY[0]=BufferIn[1]+(BufferIn[2]<<8);
|
| | | #endif
|
| | |
|
| | | }
|
| | | if (haltick&0x00002000) SlowFlicker=1;
|
| | | else SlowFlicker=0;
|
| | | if (haltick&0x00000800) FastFlicker=1;
|
| | | else FastFlicker=0;
|
| | | |
| | | }
|
| | |
|
| | | if (bSlave)
|
| | | {
|
| | | // BufferOut[0]=KMem.WX[0];
|
| | | SlaveFunc(); |
| | | SlaveFunc(2); |
| | | if (! KMem.RunStat) {BufferIn[0]=0;}
|
| | | KMem.WY[0]=BufferIn[0];
|
| | |
|
| | |
| | | else FastFlicker=0;
|
| | |
|
| | | }
|
| | |
|
| | | // KMem.WY[0]=nCount2>>5;
|
| | | if (KMem.RunStat) {KMem.RunStat--;}
|
| | | if (KMem.ErrStat) {KMem.ErrStat--;}
|
| | | |
| | |
|
| | | if (!KMem.RunStat) SetRunLed(SlowFlicker);
|
| | | else SetRunLed(FastFlicker);
|
| | |
|
| | |
| | | us4=GetuS();
|
| | | // EffJumperSW = GetInput(20)&0xff;
|
| | |
|
| | | #if (BOARD_TYPE == 12)
|
| | | PutOutput (KMem.WY[0]);
|
| | | #else
|
| | | // PutOutput (KMem.WY[0]);
|
| | | #endif
|
| | | //PutOutput (KMem.nRunCount>>8);
|
| | | //PutOutput(0x0f70);
|
| | |
|
| | |
| | | // ProcessTimer(i);
|
| | | }
|
| | | KMem.nRunCount++;
|
| | | int nSize=sizeof(stChnStat);
|
| | | memcpy(&KMem.SDT[64],&ChnStats[1],nSize);
|
| | | memcpy(&KMem.SDT[64+nSize/2],&ChnStats[2],nSize);
|
| | | // int nSize=sizeof(stChnStat);
|
| | | // memcpy(&KMem.SDT[64],&ChnStats[1],nSize);
|
| | | // memcpy(&KMem.SDT[64+nSize/2],&ChnStats[2],nSize);
|
| | | // for (int i=0;i<128;i++) { SDT[i]=i; }
|
| | | // SDT[48]=55;
|
| | | if (Uart1RecvBuf1DataLen >0 && Uart1Stat.bPacketRecved)
|
| | | {
|
| | | int res1 = -1;
|
| | | res1 = ModBusSlaveParsePkg(Uart1RecvBuf1,Uart1RecvBuf1DataLen);
|
| | | res1 = ModBusSlaveParsePkg(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen);
|
| | | if (res1 !=0)
|
| | | {
|
| | | KLParsePacket(Uart1RecvBuf1,Uart1RecvBuf1DataLen);
|
| | | KLParsePacket(1, Uart1RecvBuf1, Uart1RecvBuf1DataLen);
|
| | | }
|
| | | Uart1RecvBuf1DataLen=0;
|
| | | Uart1Stat.bPacketRecved=0;
|
| | |
| | | clearscreen();
|
| | | }
|
| | | }
|
| | | */ |
| | | */
|
| | |
|
| | | #if (BOARD_TYPE == 12)
|
| | | //process 6 output
|
| | | {
|
| | | // mapping bits.
|
| | | if (KMem.WXB[0]&0x1){ LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_12);}
|
| | | else {LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_12);}
|
| | | if (KMem.WXB[1]&0x1){ LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_13);}
|
| | | else {LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_13);}
|
| | | if (KMem.WXB[2]&0x1){ LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_14);}
|
| | | else {LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_14);}
|
| | | if (KMem.WXB[3]&0x1){ LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_15);}
|
| | | else {LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_15);}
|
| | | if (KMem.WXB[4]&0x1){ LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_0);}
|
| | | else {LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_0);}
|
| | | if (KMem.WXB[5]&0x1){ LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_1);}
|
| | | else {LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_1);} |
| | | if (KMem.WXB[5]&0x1){ LL_GPIO_SetOutputPin(GPIOB,LL_GPIO_PIN_2);}
|
| | | else {LL_GPIO_ResetOutputPin(GPIOB,LL_GPIO_PIN_2);} |
| | | }
|
| | | #endif
|
| | |
|
| | | {
|
| | | unsigned char pos,seg;
|
| | | unsigned short val;
|
| | | pos=((KMem.nRunCount)&0x3);
|
| | |
| | | //pos=1;
|
| | | //seg=2;
|
| | | seg=~seg;
|
| | | PutOutputSPI1(pos|(seg<<8));
|
| | | // PutOutputSPI1(pos|(seg<<8));
|
| | | }
|
| | | #if (BOARD_TYPE == 13) |
| | | w5500_network_info_show();
|
| | | |
| | | // loopback_tcps(0,str1,5000);
|
| | | #endif
|
| | |
|
| | | LL_IWDG_ReloadCounter(IWDG);
|
| | |
|
| | | } //while (1) ;
|
| | |
| | | /* For the available peripheral interrupt handler names, */
|
| | | /* please refer to the startup file (startup_stm32f0xx.s). */
|
| | | /******************************************************************************/
|
| | | /**
|
| | | * @brief This function handles TIM6 global interrupt.
|
| | | */
|
| | | void TIM6_IRQHandler(void)
|
| | | {
|
| | | /* USER CODE BEGIN TIM6_IRQn 0 */
|
| | | if (LL_TIM_IsActiveFlag_UPDATE(TIM6)) { LL_TIM_ClearFlag_UPDATE(TIM6);}
|
| | | |
| | | // KMem.SDD[46]+=1000;
|
| | | // KMem.SDT[93] = LL_TIM_GetCounter(TIM6);
|
| | | /* USER CODE END TIM6_IRQn 0 */
|
| | | /* USER CODE BEGIN TIM6_IRQn 1 */
|
| | |
|
| | | /* USER CODE END TIM6_IRQn 1 */
|
| | | }
|
| | |
|
| | | /**
|
| | | * @brief This function handles DMA1 channel 2 and 3 interrupts.
|
| | |
| | | }
|
| | | /* USER CODE END DMA1_Channel4_5_IRQn 1 */
|
| | | }
|
| | |
|
| | | void SPI1_IRQHandler(void)
|
| | | {
|
| | | /* USER CODE BEGIN SPI1_IRQn 0 */
|
| | | SPI1_IRQ_CallBack();
|
| | | /* USER CODE END SPI1_IRQn 0 */
|
| | | /* USER CODE BEGIN SPI1_IRQn 1 */
|
| | |
|
| | | /* USER CODE END SPI1_IRQn 1 */
|
| | | }
|
| | |
|
| | | /**
|
| | | * @brief This function handles USART1 global interrupt.
|
| | | */
|