路径点不重复的控制算法测试通了,但是好像不如之前路径点重复的版本好。增加了蓝牙接口部分。准备移植外包的MQTT。
已修改19个文件
10441 ■■■■ 文件已修改
.github/copilot-instructions.md 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/.vscode/settings.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/APL/AppConfig.h 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/APL/Shell.c 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/APL/app.c 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/APL/motion_control_task.c 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/Core/Src/stm32h7xx_it.c 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/FML/PythonLink.c 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/FML/bluetooth.c 330 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/FML/bluetooth.h 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/FML/motion_control.c 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/MDK-ARM/STM32H743.uvguix.zhyin 294 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/MDK-ARM/STM32H743.uvoptx 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/MDK-ARM/STM32H743/STM32H743.map 5007 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
STM32H743/MDK-ARM/STM32H743/STM32H743_STM32H743.dep 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
python/hitl/__pycache__/run_sim.cpython-310.pyc 补丁 | 查看 | 原始文档 | blame | 历史
python/hitl/run_sim.py 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
python/hitl/runlog.txt 4502 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
新建文本文档.txt 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.github/copilot-instructions.md
@@ -1,54 +1,36 @@
## Repo overview (quick)
# Quick instructions for AI coding agents
- This is an STM32H7 firmware project for a lawnmower MCU. Key folders:
  - `Core/` â€” HAL/RTOS entry (Cube-generated code; see `Core/Src/main.c`).
  - `Drivers/` â€” STM32 HAL driver sources.
  - `APL/` â€” high-level application config and app entry (`APL/app.c`, `APL/AppConfig.h`).
  - `FML/` â€” feature modules (GPS, Internet, Bluetooth, UDPClient, etc.). Example: `FML/GPS.c` parses NMEA and uploads via `UDPClient`.
  - `HIDOLibrary/Include` â€” shared utility types and helpers (HIDO_* API and types used everywhere).
  - `MDK-ARM/` â€” Keil project files (`STM32H743.uvprojx`, `.uvoptx`) and build artifacts.
Overview
- STM32H743 (FreeRTOS) firmware for an autonomous lawnmower. Mix of CubeMX HAL, platform glue (HIDO_*), FML functional modules, and APL tasks.
## What matters for edits
What to read first
- Entry: `STM32H743/Core/Src/main.c` (MX_* init, `app_main()`, osKernelStart)
- App: `STM32H743/APL/app.c` (`app_task()` initializes modules and polls with a binary semaphore)
- Modules: `STM32H743/FML/*` (GPS, SBUS, Motion, Internet, UDP/TCP)
- Utilities: `STM32H743/HIDOLibrary/Include/` (HIDO_* helpers)
- Entry flow: `Core/Src/main.c` initializes HAL, registers UARTs and starts the RTOS. It calls `app_main()` (implemented in `APL/app.c`) before `osKernelStart()`.
- Main app loop runs in `APL/app_task` which polls subsystems after being awakened by a binary semaphore. ISR-to-main wake uses `app_trigger_from_isr()` (gives the same semaphore).
- Use existing registration patterns: `Uart_Register(...)` for UART endpoints, `GPS_PinRegister(...)` for GPIO pins, and module init functions e.g. `GPS_Init()`, `Internet_Init()`, `UDPClient_Init()`.
- Preserve Cube-generated sections: keep code inside/near `/* USER CODE BEGIN */` / `/* USER CODE END */` unchanged when modifying generated files.
Core rules and patterns
- Do not change CubeMX generated code outside `/* USER CODE BEGIN/END */` blocks. If you must regenerate, move logic to `FML/`/`APL/`.
- Init & Poll pattern: implement `Module_Init()` and `Module_Poll()`; call Init in `app_task()` and Poll during app loop.
- UARTs: register HAL handles with `Uart_Register(UART_ID_*, &huartX)` after `MX_USARTX_UART_Init()`; `Uart_Init()` config may require DMA buffers.
- ISR wake: signal `app_task` using `app_trigger_from_isr()`; avoid direct task notification unless you match existing pattern.
- Naming & API: follow `HIDO_*` typedefs and `HIDO_OK/HIDO_ERR` return conventions; use `HIDO_*` timers, queues, and helpers.
## Build & debug notes (concrete)
Build & debug
- Two build modes: CubeMX + STM32CubeIDE (edit `.ioc`) or Keil MDK-uVision (`MDK-ARM/STM32H743.uvprojx`).
- Use J-Link to flash; default debug UART: `USART1` (921600). Python telemetry/telemetry tool uses `UART5` (921600).
- DMA/coherency: avoid enabling D-cache while using DMA unless buffer cache maintenance is implemented.
- Two supported project entry points are present: STM32Cube `.ioc` (STM32H743/STM32H743.ioc) and Keil MDK `.uvprojx` (MDK-ARM/STM32H743.uvprojx). Developers typically:
  - Open the `.ioc` in STM32CubeIDE and generate code, or
  - Open the `.uvprojx` in Keil uVision (MDK) to build and flash.
- Debug/log serial: `USART1` is used as debug (`huart1`) at 921600 (see `MX_USART1_UART_Init` in `main.c`). GPS is on `USART2` (115200 default).
- UARTs use DMA for RX/TX in many places â€” be careful when changing buffer sizes or switching to interrupt-based I/O.
Safe changes and examples
- Add a new UART-based sensor:
  1) Configure UART in CubeMX / MX_USARTX_UART_Init() in `main.c` (USER CODE blocks)
  2) `Uart_Register(UART_ID_NEW, &huartX)` in `main.c` after init
  3) Add `FML/NewModule_Init()` and `FML/NewModule_Poll()` and call from `app_task()`
- Tuning: adjust motion PID and constants in `STM32H743/FML/motion_config.h` and `APL/global_param.h`. Persist via `save_com_map_to_flash()`.
## Project-specific conventions & patterns
Notes for AI agents
- Only change generated code inside USER blocks. Prefer to add files in `FML/`/`APL/` and follow `HIDO_` conventions.
- Minimize blocking work in `MotionControl_Task` and `app_task()`; keep real-time paths deterministic.
- For deeper module rules and examples, consult `STM32H743/.github/copilot-instructions.md` and `docs/`.
- Types and helpers use the `HIDO_` prefix (e.g. `HIDO_UINT32`, `HIDO_Util*`, `HIDO_Debug`). Search `HIDOLibrary/Include` for helper APIs.
- Polling model: many subsystems expose `*_Init()` and `*_Poll()` (e.g. `GPS_Poll()`, `Internet_Poll()`). Work is driven by the `app_task` loop.
- ISR -> application wake uses the global semaphore from `app_trigger_from_isr()` â€” prefer this pattern rather than direct task notifications in new code for consistency.
- Generated HAL code pattern: keep peripheral init in `MX_*_Init()` functions within `main.c` and put higher-level logic in `APL/` or `FML/`.
## Examples for common changes
- Add a new UART-based sensor: call `Uart_Register(UART_ID_X, &huartX)` in `main.c` after the corresponding `MX_USARTX_UART_Init()`, then create `Sensor_Init()`/`Sensor_Poll()` in `FML/` and call from `app_task`.
- Change debug log speed: edit `MX_USART1_UART_Init` in `Core/Src/main.c` and adjust callers that assume 921600.
- Add a periodic job: use the existing `HIDO_Timer` utilities and the app semaphore wake flow; follow `app_task`'s pattern to poll on wake.
## Where to look (quick file list)
- Entry & init: `Core/Src/main.c`
- App startup & scheduler task: `APL/app.c`, `Core/Src/freertos.c`
- Feature modules: `FML/GPS.c`, `FML/Internet/*.c`, `FML/UDPClient.c`
- Utilities and shared types: `HIDOLibrary/Include/*` (HIDO_* APIs)
- Project files: `STM32H743/STM32H743.ioc`, `MDK-ARM/STM32H743.uvprojx`
## Short guidelines for AI agents
- Only change generated files inside USER CODE blocks unless you also regenerate the Cube project (.ioc); prefer adding new modules under `FML/` or `APL/`.
- Follow existing naming and type conventions: use `HIDO_` helpers and typedefs for cross-module compatibility.
- When modifying peripheral config, update `MX_*_Init()` in `main.c` and check related registration calls (`Uart_Register`, `GPIO` pin registers).
- Use the semaphore-based `app_trigger_from_isr()` to wake the main loop from ISRs.
If you'd like, I can convert this into a shorter or longer version, or merge any existing instructions you have. Any areas you want me to expand or examples to add?
If any section should include deeper examples (UART template, module skeletons, or unit test patterns), tell me which piece to expand.
STM32H743/.vscode/settings.json
@@ -78,5 +78,6 @@
    "editor.insertSpaces": true,
    "editor.detectIndentation": false,
    "idf.pythonInstallPath": "D:\\Espressif\\tools\\idf-python\\3.11.2\\python.exe",
    "editor.editContext": false // ç¦æ­¢è‡ªåŠ¨æ£€æµ‹ç¼©è¿›
    "editor.editContext": false,
    "claudeCodeChat.permissions.yoloMode": true // ç¦æ­¢è‡ªåŠ¨æ£€æµ‹ç¼©è¿›
}
STM32H743/APL/AppConfig.h
@@ -47,6 +47,6 @@
 *******************************************************************************/
/* ç¡¬ä»¶åœ¨çŽ¯ä»¿çœŸæ¨¡å¼å¼€å…³ï¼š1=开启,0=关闭 */
#define HITL_SIMULATION 1
#define HITL_SIMULATION 0
#endif /* APL_APPCONFIG_H_ */
STM32H743/APL/Shell.c
@@ -59,7 +59,7 @@
static HIDO_INT32 Shell_OTA(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv);
static HIDO_INT32 Shell_LogUpload(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv);
#endif
static HIDO_INT32 Shell_SetRTCMMode(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv);
static HIDO_INT32 Shell_Log(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv);
static HIDO_INT32 Shell_LogPrint(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv);
static HIDO_INT32 Shell_LogClean(HIDO_INT32 _i32Argc, HIDO_CHAR **_ppcArgv);
@@ -109,7 +109,7 @@
    { "ota", Shell_OTA },
    { "log_upload", Shell_LogUpload },
#endif
 { "set_rtcmmode", Shell_SetRTCMMode },
    { "log", Shell_Log },
    { "log_clean", Shell_LogClean },
    { "log_print", Shell_LogPrint },
STM32H743/APL/app.c
@@ -111,7 +111,7 @@
#endif
        
        UDPClient_Poll();
        TCPClient_Poll();
       // TCPClient_Poll();
        IdleTask();
        HIDO_TimerPoll();
    }
STM32H743/APL/motion_control_task.c
@@ -13,6 +13,8 @@
#include <string.h>
#include <math.h>
#define ENABLE_MC_CTRL_LOG 1
#include "DBG.h"
#include "GPS.h"
#include "PythonLink.h"
@@ -414,6 +416,7 @@
            static HIDO_UINT32 s_status_log = 0U;
            if ((s_status_log++ % 100U) == 0U)
            {
#if ENABLE_MC_CTRL_LOG
                if (sbus_valid == HIDO_FALSE)
                {
                    HIDO_Debug2("[MC_CTRL] Waiting: SBUS signal lost\r\n");
@@ -427,12 +430,14 @@
                    HIDO_UINT32 status = gps_valid ? gprmi.m_u32StatusFlags : 0U;
                    HIDO_Debug2("[MC_CTRL] Waiting: GPS not ready (status=0x%08X)\r\n", status);
                }
#endif
            }
        }
        static HIDO_UINT32 s_ctrl_log_idx = 0U;
        if ((s_ctrl_log_idx++ % 10U) == 0U)
        {
#if ENABLE_MC_CTRL_LOG
            /* ä½¿ç”¨æ•´æ•°è¡¨ç¤ºæ³•打印浮点数,避免栈损坏 */
            int pos_x_int = (int)g_motion_state.pos[0];
            int pos_x_frac = (int)(fabsf(g_motion_state.pos[0] - pos_x_int) * 100);
@@ -465,6 +470,7 @@
                        fwd_int, fwd_frac,
                        turn_sign, turn_int, turn_frac,
                        g_motion_state.nearest_index);
#endif
        }
        /* --- 3) æ ¹æ®æŽ§åˆ¶é‡æ›´æ–° PWM,并把 forward/turn å›žä¼ ç»™ Python --- */
@@ -518,6 +524,13 @@
                 applied_steering = MC_CFG_PWM_CENTER_US;
                 applied_throttle = MC_CFG_PWM_CENTER_US;
            }
            else if (output.stage == MC_STAGE_FINISHED)
            {
                 /* å·²åˆ°è¾¾ç»ˆç‚¹ï¼šåœæ­¢è¾“出 */
                 MotionControl_StopOutputs();
                 applied_steering = MC_CFG_PWM_CENTER_US;
                 applied_throttle = MC_CFG_PWM_CENTER_US;
            }
        }
        g_last_steering_pwm = applied_steering;
        g_last_throttle_pwm = applied_throttle;
STM32H743/Core/Src/stm32h7xx_it.c
@@ -452,19 +452,16 @@
void USART6_IRQHandler(void)
{
  /* USER CODE BEGIN USART6_IRQn 0 */
  // Circular DMA Mode: Just set a flag, do NOT stop DMA
  uint32_t tmp_flag = 0;
    uint32_t temp;
    tmp_flag = __HAL_UART_GET_FLAG(&huart6, UART_FLAG_IDLE); 
    if ((tmp_flag != RESET)) 
    {
        g_u32BtIdleIntCount++; // Debug Counter
        __HAL_UART_CLEAR_IDLEFLAG(&huart6);
        HAL_UART_DMAStop(&huart6); //
        temp  =  __HAL_DMA_GET_COUNTER(&hdma_usart6_rx);
        uart6_dma_recv_len =  BT_UART_RX_BUF_SIZE - temp;
        uart6_dma_recv_end_flag = 1;
        // HAL_UART_Receive_DMA(&huart6, uart6_dma_rxbuf, UART6_DMA_RX_BUF_SIZE); // Moved to Poll to avoid race/overwrite
        // For Circular DMA, we do NOT stop DMA. Just set a flag to notify Poll.
        uart6_dma_recv_end_flag = 1; // Notify Poll that new data arrived
    }
  /* USER CODE END USART6_IRQn 0 */
STM32H743/FML/PythonLink.c
@@ -16,6 +16,8 @@
#include <math.h>
#include <stdio.h>
#define ENABLE_PYTHONLINK_CTRL_LOG 1
/*******************************************************************************
 *                             Global Variables                                *
 *******************************************************************************/
@@ -590,7 +592,9 @@
                      _target_heading_deg,
                      target_e,
                      target_n);
#if ENABLE_PYTHONLINK_CTRL_LOG
    PythonLink_SendAsciiSentence(PYTHONLINK_ASCII_KEY_CTRL, payload);
#endif
}
HIDO_VOID PythonLink_ReportPose(const HIDO_FLOAT _enu[3],
STM32H743/FML/bluetooth.c
@@ -23,6 +23,8 @@
 *                                  Macro                                      *
 *******************************************************************************/
#define CRC16_POLY 0x1021
#define BT_RX_BUF_SIZE 128  // Internal parsing buffer size
#define ENABLE_BT_DEBUG_LOG 0  // Set to 1 to enable debug logs
/*******************************************************************************
 *                             Local Variable                                  *
@@ -30,19 +32,44 @@
static HIDO_UINT8 l_au8BTUartRxBuf[BT_UART_RX_BUF_SIZE];
static HIDO_UINT8 l_au8BTUartTxBuf[BT_UART_TX_BUF_SIZE];
// DMA Buffer for UART6
HIDO_UINT8 uart6_dma_rxbuf[BT_UART_RX_BUF_SIZE] = {0};
// DMA Buffer for UART6 (aligned for D-Cache operations)
__attribute__((aligned(32))) HIDO_UINT8 uart6_dma_rxbuf[BT_UART_RX_BUF_SIZE] = {0};
HIDO_UINT8 uart6_dma_recv_end_flag = 0;
HIDO_UINT16 uart6_dma_recv_len = 0;
volatile HIDO_UINT32 g_u32BtIdleIntCount = 0;
extern UART_HandleTypeDef huart6;
extern DMA_HandleTypeDef hdma_usart6_rx; // Also needed for __HAL_DMA_GET_COUNTER if used here, but it's used in IT. Wait, IT uses it. Bluetooth.c uses huart6.
extern DMA_HandleTypeDef hdma_usart6_rx;
// Receive State Machine
typedef enum
{
    BT_FSM_IDLE = 0,
    BT_FSM_HEADER2,
    BT_FSM_CMD,
    BT_FSM_LEN_LOW,
    BT_FSM_LEN_HIGH,
    BT_FSM_DATA,
    BT_FSM_TAIL
} E_BT_FSM_State;
typedef struct
{
    E_BT_FSM_State state;
    HIDO_UINT8 cmd_type;
    HIDO_UINT16 data_len;
    HIDO_UINT16 data_idx;
    HIDO_UINT8 rx_buf[BT_RX_BUF_SIZE];
} ST_BT_RecvFSM;
static ST_BT_RecvFSM s_bt_fsm;
/*******************************************************************************
 *                        Local Function Declaration                           *
 *******************************************************************************/
static HIDO_UINT16 Calculate_CRC16(const HIDO_UINT8 *data, HIDO_UINT16 len);
static HIDO_VOID Process_Command(const HIDO_UINT8 *pData, HIDO_UINT16 u16Len);
static HIDO_VOID BT_RecvFSM(HIDO_UINT8 byte);
static HIDO_VOID BT_ProcessFrame(void);
/*******************************************************************************
 *                             Global Function                                 *
@@ -64,46 +91,55 @@
    stInit.m_u32TxBufSize = BT_UART_TX_BUF_SIZE;
    stInit.m_u32TxQueueMemberCnt = BT_UART_TX_QUEUE_MEMBER_CNT;
    Uart_Init(UART_ID_BT, &stInit);
    Uart_ReConfigBaudRate(UART_ID_BT, 115200);
    UART6_StartReceive();
}
/**
 * @brief Start UART6 Receive with IDLE IT + DMA
 * @brief Start UART6 Receive with Circular DMA
 */
void UART6_StartReceive(void)
{
    // Clear IDLE flag
    __HAL_UART_CLEAR_IDLEFLAG(&huart6);
    // Enable IDLE interrupt
    __HAL_UART_ENABLE_IT(&huart6, UART_IT_IDLE);
    // IDLE interrupt is optional for Circular DMA with GetChar polling
    // Uncomment if you want IDLE interrupt as a hint (not required for functionality)
    // __HAL_UART_ENABLE_IT(&huart6, UART_IT_IDLE);
    // Start DMA Receive
    // Start DMA Receive (Circular Mode configured in HAL_MSP)
    HAL_UART_Receive_DMA(&huart6, uart6_dma_rxbuf, BT_UART_RX_BUF_SIZE);
}
/**
 * @brief Bluetooth Poll Function
 * @brief Bluetooth Poll Function (Circular DMA Mode with GetChar)
 */
HIDO_VOID BT_Poll(void)
{
    if (uart6_dma_recv_len > 0)
    static HIDO_UINT32 s_last_poll_tick = 0;
    // Periodic debug log
    if (HAL_GetTick() - s_last_poll_tick > 1000)
    {
        if (uart6_dma_recv_end_flag == 1)
        s_last_poll_tick = HAL_GetTick();
#if ENABLE_BT_DEBUG_LOG
        HIDO_UINT32 dma_cnt = 0;
        if (huart6.hdmarx != NULL)
        {
            // Process received frame
            Process_Command(uart6_dma_rxbuf, uart6_dma_recv_len);
            dma_cnt = __HAL_DMA_GET_COUNTER(huart6.hdmarx);
        }
        HIDO_UINT32 cr1 = huart6.Instance->CR1;
        HIDO_UINT32 isr = huart6.Instance->ISR;
        HIDO_Debug2("[BT] Poll: IntCnt=%u, DMA_CNDTR=%u, CR1=0x%X, ISR=0x%X\r\n",
                    g_u32BtIdleIntCount, dma_cnt, cr1, isr);
#endif
    }
        // Reset buffer and flags
        uart6_dma_recv_len = 0;
        uart6_dma_recv_end_flag = 0;
        memset(uart6_dma_rxbuf, 0, BT_UART_RX_BUF_SIZE);
        // Restart reception
        __HAL_UART_CLEAR_IDLEFLAG(&huart6);
        HAL_UART_Receive_DMA(&huart6, uart6_dma_rxbuf, BT_UART_RX_BUF_SIZE);
    // Read and process bytes from circular DMA buffer
    HIDO_UINT8 byte = 0;
    while (Uart_GetChar(UART_ID_BT, &byte) == HIDO_OK)
    {
        BT_RecvFSM(byte);
    }
}
@@ -132,10 +168,206 @@
}
/**
 * @brief Process Bluetooth Command Frame
 * @brief Process a complete BT frame (called after FSM receives full frame)
 */
static HIDO_VOID BT_ProcessFrame(void)
{
    // Frame is stored in s_bt_fsm.rx_buf
    // Structure: Header(5) + SeqNum(2) + Payload(4) + CRC(2) + Tail(1) = 14 bytes total
    // rx_buf[0..4]: Header (AA 55 Cmd Len_L Len_H)
    // rx_buf[5..6]: SeqNum
    // rx_buf[7..10]: Payload (Steer + Speed + Reserved)
    // rx_buf[11..12]: CRC
    // rx_buf[13]: Tail
    HIDO_UINT8 *pBuf = s_bt_fsm.rx_buf;
    HIDO_UINT16 total_len = 5 + s_bt_fsm.data_len; // Header(5) + Data(SeqNum + Payload + CRC + Tail)
    if (total_len < 14 || total_len > BT_RX_BUF_SIZE)
    {
#if ENABLE_BT_DEBUG_LOG
        HIDO_Debug2("[BT] Invalid frame length: %u\r\n", total_len);
#endif
        return;
    }
#if ENABLE_BT_DEBUG_LOG
    // Print entire frame in hex for debugging
    HIDO_Debug2("[BT] Frame (%u bytes): ", total_len);
    for (HIDO_UINT16 i = 0; i < total_len; i++)
    {
        HIDO_Debug2("%02X ", pBuf[i]);
    }
    HIDO_Debug2("\r\n");
#endif
    // Check CRC - Try different ranges to find the correct one
    HIDO_UINT16 crc_calc_len = total_len - 3; // Current: Header + SeqNum + Payload (11 bytes)
    HIDO_UINT16 calc_crc1 = Calculate_CRC16(pBuf, crc_calc_len); // Full: AA 55 03 09 00 67 00 00 0A 00 00
    HIDO_UINT16 calc_crc2 = Calculate_CRC16(pBuf + 3, crc_calc_len - 3); // From DataLen: 09 00 67 00 00 0A 00 00
    HIDO_UINT16 calc_crc3 = Calculate_CRC16(pBuf + 5, crc_calc_len - 5); // From SeqNum: 67 00 00 0A 00 00
    HIDO_UINT8 crc_low = pBuf[crc_calc_len];
    HIDO_UINT8 crc_high = pBuf[crc_calc_len + 1];
    HIDO_UINT16 recv_crc_le = (HIDO_UINT16)(crc_low | (crc_high << 8)); // Little Endian
    HIDO_UINT16 recv_crc_be = (HIDO_UINT16)((crc_low << 8) | crc_high); // Big Endian
#if ENABLE_BT_DEBUG_LOG
    HIDO_Debug2("[BT] CRC Test: Recv(LE)=%04X, Recv(BE)=%04X\r\n", recv_crc_le, recv_crc_be);
    HIDO_Debug2("  Calc1(Full,11B)=%04X, Calc2(FromLen,8B)=%04X, Calc3(FromSeq,6B)=%04X\r\n",
                calc_crc1, calc_crc2, calc_crc3);
#endif
    // Use calc_crc1 for now (original logic)
    if (calc_crc1 != recv_crc_le && calc_crc1 != recv_crc_be)
    {
#if ENABLE_BT_DEBUG_LOG
        HIDO_Debug2("[BT] CRC Fail (all methods)\r\n");
#endif
        // Continue processing for debug
        // return;
    }
    // Check Tail
    HIDO_UINT8 tail = pBuf[total_len - 1];
    if (tail != BT_FRAME_TAIL)
    {
#if ENABLE_BT_DEBUG_LOG
        HIDO_Debug2("[BT] Invalid Tail: %02X\r\n", tail);
#endif
        return;
    }
    // Parse command based on type
    switch (s_bt_fsm.cmd_type)
    {
        case BT_CMD_CONTROL:
        {
            // Payload starts at offset 7 (after Header(5) + SeqNum(2))
            ST_BT_ControlData *pCtrl = (ST_BT_ControlData *)&pBuf[7];
            // Check RC signal status
            if (SBUS_IsSignalValid(500) == HIDO_FALSE)
            {
#if ENABLE_BT_DEBUG_LOG
                HIDO_Debug2("[BT] Control: Steer %d, Speed %d\r\n", pCtrl->m_i8SteerSpeed, pCtrl->m_i8TravelSpeed);
#endif
                Set_Steering_PWM(pCtrl->m_i8SteerSpeed);
                Set_Motor_PWM(pCtrl->m_i8TravelSpeed);
            }
            else
            {
                // HIDO_Debug2("[BT] Ignored (RC Active)\r\n");
            }
            break;
        }
        default:
#if ENABLE_BT_DEBUG_LOG
            HIDO_Debug2("[BT] Unknown Cmd: 0x%02X\r\n", s_bt_fsm.cmd_type);
#endif
            break;
    }
}
/**
 * @brief Receive State Machine (called for each byte)
 */
static HIDO_VOID BT_RecvFSM(HIDO_UINT8 byte)
{
    switch (s_bt_fsm.state)
    {
        case BT_FSM_IDLE:
            if (byte == BT_FRAME_HEADER1) // 0xAA
            {
                s_bt_fsm.rx_buf[0] = byte;
                s_bt_fsm.data_idx = 1;
                s_bt_fsm.state = BT_FSM_HEADER2;
            }
            break;
        case BT_FSM_HEADER2:
            if (byte == BT_FRAME_HEADER2) // 0x55
            {
                s_bt_fsm.rx_buf[1] = byte;
                s_bt_fsm.data_idx = 2;
                s_bt_fsm.state = BT_FSM_CMD;
            }
            else
            {
                s_bt_fsm.state = BT_FSM_IDLE;
            }
            break;
        case BT_FSM_CMD:
            s_bt_fsm.rx_buf[2] = byte;
            s_bt_fsm.cmd_type = byte;
            s_bt_fsm.data_idx = 3;
            s_bt_fsm.state = BT_FSM_LEN_LOW;
            break;
        case BT_FSM_LEN_LOW:
            s_bt_fsm.rx_buf[3] = byte;
            s_bt_fsm.data_len = byte; // Low byte first
            s_bt_fsm.data_idx = 4;
            s_bt_fsm.state = BT_FSM_LEN_HIGH;
            break;
        case BT_FSM_LEN_HIGH:
            s_bt_fsm.rx_buf[4] = byte;
            s_bt_fsm.data_len |= (HIDO_UINT16)byte << 8; // High byte
            s_bt_fsm.data_idx = 5;
            // Sanity check on length
            if (s_bt_fsm.data_len > (BT_RX_BUF_SIZE - 5))
            {
#if ENABLE_BT_DEBUG_LOG
                HIDO_Debug2("[BT] FSM: Length too large (%u), resetting\r\n", s_bt_fsm.data_len);
#endif
                s_bt_fsm.state = BT_FSM_IDLE;
            }
            else
            {
                s_bt_fsm.state = BT_FSM_DATA;
            }
            break;
        case BT_FSM_DATA:
            s_bt_fsm.rx_buf[s_bt_fsm.data_idx++] = byte;
            // Check if we've received all data bytes
            // data_len includes: SeqNum(2) + Payload(N) + CRC(2) + Tail(1)
            // Total frame = Header(5) + data_len
            // We've already stored Header(5), now need data_len more bytes
            if (s_bt_fsm.data_idx >= (5 + s_bt_fsm.data_len))
            {
                // Frame complete, process it
                BT_ProcessFrame();
                s_bt_fsm.state = BT_FSM_IDLE;
            }
            // Safety check: prevent buffer overflow
            if (s_bt_fsm.data_idx >= BT_RX_BUF_SIZE)
            {
#if ENABLE_BT_DEBUG_LOG
                HIDO_Debug2("[BT] FSM: Buffer overflow, resetting\r\n");
#endif
                s_bt_fsm.state = BT_FSM_IDLE;
            }
            break;
        default:
            s_bt_fsm.state = BT_FSM_IDLE;
            break;
    }
}
/**
 * @brief Process Bluetooth Command Frame (Legacy, kept for reference)
 */
static HIDO_VOID Process_Command(const HIDO_UINT8 *pData, HIDO_UINT16 u16Len)
{
    // HIDO_Debug2("[BT] Processing %u bytes\r\n", u16Len);
    if (u16Len < sizeof(ST_BT_FrameHeader) + 3) // Header + CRC + Tail min
    {
        return;
@@ -151,8 +383,13 @@
    }
    // Check Length (Total frame size check)
    HIDO_UINT16 payloadLen = pHeader->m_u16DataLen;
    HIDO_UINT16 expectedLen = sizeof(ST_BT_FrameHeader) + payloadLen + 3; // + CRC(2) + Tail(1)
    // Protocol Definition: DataLen (9) includes Seq(2) + Payload(4) + CRC(2) + Tail(1)
    // Frame Structure: Header(5) + DataLen(9) = 14 bytes
    // ST_BT_FrameHeader(7) includes SeqNum(2) at the end.
    // So HeaderBase (AA 55 Cmd Len) is 5 bytes.
    HIDO_UINT16 headerBaseSize = 5;
    HIDO_UINT16 declaredLen = pHeader->m_u16DataLen;
    HIDO_UINT16 expectedLen = headerBaseSize + declaredLen;
    if (u16Len < expectedLen)
    {
@@ -163,34 +400,39 @@
    // Check Tail
    if (pData[expectedLen - 1] != BT_FRAME_TAIL)
    {
        HIDO_Debug2("[BT] Invalid Tail\r\n");
        HIDO_Debug2("[BT] Invalid Tail: %02X\r\n", pData[expectedLen - 1]);
        return;
    }
    // Check CRC
    // CRC is calculated over Header + Payload
    HIDO_UINT16 calcCRC = Calculate_CRC16(pData, sizeof(ST_BT_FrameHeader) + payloadLen);
    HIDO_UINT16 recvCRC = (HIDO_UINT16)(pData[expectedLen - 3] | (pData[expectedLen - 2] << 8)); // Little Endian from struct? No, usually network order or defined.
    // The CSV doesn't specify endianness, but usually STM32 is Little Endian.
    // However, protocols often use Big Endian (Network Byte Order).
    // Let's assume Little Endian for now as it's simpler with structs on STM32.
    // Wait, CSV says "CRC16, 2, uint16_t".
    // If I interpret it as raw bytes:
    // If the struct is packed, I can read it directly if alignment matches.
    // Let's read bytes to be safe against packing/endian issues if possible, but struct is packed.
    // Re-reading the CRC from the buffer:
    HIDO_UINT16 *pCrcPtr = (HIDO_UINT16 *)&pData[sizeof(ST_BT_FrameHeader) + payloadLen];
    recvCRC = *pCrcPtr;
    // CRC is calculated over Header + Payload (excluding CRC and Tail)
    // Range: 0 to (TotalLen - CRC(2) - Tail(1)) = TotalLen - 3
    HIDO_UINT16 calcLen = expectedLen - 3;
    HIDO_UINT16 calcCRC = Calculate_CRC16(pData, calcLen);
    // CRC is at offset: expectedLen - 3 (Low byte), expectedLen - 2 (High byte) - assuming Little Endian in stream
    // User Example: ... C3 7B 0D. CRC is C3 7B. Tail 0D.
    // 7B is at -2, C3 is at -3.
    // If recvCRC is uint16, let's read it.
    HIDO_UINT8 crcLow = pData[expectedLen - 3];
    HIDO_UINT8 crcHigh = pData[expectedLen - 2];
    HIDO_UINT16 recvCRC = (HIDO_UINT16)(crcLow | (crcHigh << 8));
    if (calcCRC != recvCRC)
    {
        // Try Big Endian check just in case
        // HIDO_Debug2("[BT] CRC Fail: Calc %04X, Recv %04X\r\n", calcCRC, recvCRC);
        HIDO_Debug2("[BT] CRC Fail: Calc %04X, Recv %04X\r\n", calcCRC, recvCRC);
        // Continue processing for debugging, but typically should return
        // return; 
        // Note: If CRC fails, we should probably drop. But I'll leave it as check.
    }
    // Payload starts after SeqNum.
    // ST_BT_FrameHeader includes SeqNum. sizeof is 7.
    // So pPayload points to Data after SeqNum.
    const HIDO_UINT8 *pPayload = pData + sizeof(ST_BT_FrameHeader);
    // Payload length for Command logic (excluding Seq, CRC, Tail)
    // DataLen(9) - Seq(2) - CRC(2) - Tail(1) = 4 bytes.
    HIDO_INT16 realPayloadLen = declaredLen - 2 - 3;
    switch (pHeader->m_u8CmdType)
    {
@@ -208,7 +450,7 @@
        }
        case BT_CMD_REF_POINT:
        {
            if (payloadLen >= sizeof(ST_BT_RefPointData))
            if (realPayloadLen >= sizeof(ST_BT_RefPointData))
            {
                ST_BT_RefPointData *pRef = (ST_BT_RefPointData *)pPayload;
                HIDO_Debug2("[BT] Ref Point: Lat %.8f %c, Lon %.8f %c\r\n", 
@@ -219,7 +461,7 @@
        }
        case BT_CMD_CONTROL:
        {
            if (payloadLen >= sizeof(ST_BT_ControlData))
            if (realPayloadLen >= sizeof(ST_BT_ControlData))
            {
                ST_BT_ControlData *pCtrl = (ST_BT_ControlData *)pPayload;
                
STM32H743/FML/bluetooth.h
@@ -17,7 +17,7 @@
/*******************************************************************************
 *                                  Macro                                      *
 *******************************************************************************/
#define BT_UART_RX_BUF_SIZE                    4200
#define BT_UART_RX_BUF_SIZE                    1024
#define UART6_DMA_RX_BUF_SIZE                  BT_UART_RX_BUF_SIZE
#define BT_UART_TX_BUF_SIZE                    1024
#define BT_UART_TX_QUEUE_MEMBER_CNT            16
@@ -83,5 +83,6 @@
extern HIDO_UINT8 uart6_dma_rxbuf[BT_UART_RX_BUF_SIZE];
extern HIDO_UINT8 uart6_dma_recv_end_flag;
extern HIDO_UINT16 uart6_dma_recv_len;
extern volatile HIDO_UINT32 g_u32BtIdleIntCount;
#endif /* FML_BLUETOOTH_H_ */
STM32H743/FML/motion_control.c
@@ -141,7 +141,7 @@
    float dist = mc_distance(pos, point);
    
    /* å®šä¹‰"到达"阈值为0.5ç±³ */
    const float REACH_THRESHOLD_M = 0.1f;
    const float REACH_THRESHOLD_M = 0.5f;
    
    return (dist < REACH_THRESHOLD_M) ? HIDO_TRUE : HIDO_FALSE;
}
STM32H743/MDK-ARM/STM32H743.uvguix.zhyin
@@ -16,23 +16,29 @@
      <UserString></UserString>
      <PropColWidth>153</PropColWidth>
    </View>
    <View>
      <ViewName>System Viewer\USART6</ViewName>
      <WinId>35904</WinId>
      <UserString></UserString>
      <PropColWidth>85</PropColWidth>
    </View>
  </ViewPool>
  <SECTreeCtrl>
    <View>
      <WinId>38003</WinId>
      <ViewName>Registers</ViewName>
      <TableColWidths>152 100</TableColWidths>
      <TableColWidths>134 134</TableColWidths>
    </View>
    <View>
      <WinId>346</WinId>
      <ViewName>Code Coverage</ViewName>
      <TableColWidths>770 560</TableColWidths>
      <TableColWidths>770 160</TableColWidths>
    </View>
    <View>
      <WinId>204</WinId>
      <ViewName>Performance Analyzer</ViewName>
      <TableColWidths>952 139 139 100</TableColWidths>
      <TableColWidths>930</TableColWidths>
    </View>
  </SECTreeCtrl>
@@ -47,7 +53,7 @@
      <WinId>1506</WinId>
      <ViewName>Symbols</ViewName>
      <UserString></UserString>
      <TableColWidths>80 80 80</TableColWidths>
      <TableColWidths>64 64 64</TableColWidths>
    </View>
    <View>
      <WinId>1936</WinId>
@@ -97,8 +103,8 @@
    <sActiveDebugView></sActiveDebugView>
    <WindowPosition>
      <length>44</length>
      <flags>2</flags>
      <showCmd>3</showCmd>
      <flags>0</flags>
      <showCmd>1</showCmd>
      <MinPosition>
        <xPos>-32000</xPos>
        <yPos>-32000</yPos>
@@ -108,17 +114,17 @@
        <yPos>-1</yPos>
      </MaxPosition>
      <NormalPosition>
        <Top>8</Top>
        <Left>-8</Left>
        <Right>1539</Right>
        <Bottom>832</Bottom>
        <Top>127</Top>
        <Left>-204</Left>
        <Right>1343</Right>
        <Bottom>908</Bottom>
      </NormalPosition>
    </WindowPosition>
    <MDIClientArea>
      <RegID>0</RegID>
      <MDITabState>
        <Len>2040</Len>
        <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000001700000008000000010000002C453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C464D4C5C4750532E6300000000054750532E6300000000C5D4F200FFFFFFFF40453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C4D444B2D41524D5C737461727475705F73746D33326837343378782E730000000015737461727475705F73746D33326837343378782E7300000000FFDC7800FFFFFFFF32453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000BECEA100FFFFFFFF32453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C41504C5C554450436C69656E742E63000000000B554450436C69656E742E6300000000F0A0A100FFFFFFFF2C453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C41504C5C6170702E6300000000056170702E6300000000BCA8E100FFFFFFFF52453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C4D6964646C6577617265735C54686972645F50617274795C4672656552544F535C536F757263655C7461736B732E6300000000077461736B732E63000000009CC1B600FFFFFFFF35453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C41504C5C676C6F62616C5F706172616D2E68000000000E676C6F62616C5F706172616D2E6800000000F7B88600FFFFFFFF2C453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C464D4C5C4750532E6800000000054750532E6800000000D9ADC200FFFFFFFF37453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C464D4C5C6D6F74696F6E5F636F6E74726F6C2E6300000000106D6F74696F6E5F636F6E74726F6C2E6300000000A5C2D700FFFFFFFF36453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C464D4C5C6D6F74696F6E5F636F6E6669672E68000000000F6D6F74696F6E5F636F6E6669672E6800000000B3A6BE00FFFFFFFF3C453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C41504C5C6D6F74696F6E5F636F6E74726F6C5F7461736B2E6300000000156D6F74696F6E5F636F6E74726F6C5F7461736B2E6300000000EAD6A300FFFFFFFF32453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C464D4C5C626C7565746F6F74682E63000000000B626C7565746F6F74682E6300000000F6FA7D00FFFFFFFF2D453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C464D4C5C534255532E680000000006534255532E6800000000B5E99D00FFFFFFFF2C453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C464D4C5C4442472E6300000000054442472E63000000005FC3CF00FFFFFFFF2D453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C48414C5C556172742E680000000006556172742E6800000000C1838300FFFFFFFF2D453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C48414C5C556172742E630000000006556172742E6300000000CACAD500FFFFFFFF32453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C464D4C5C67656F5F7574696C732E63000000000B67656F5F7574696C732E6300000000C5D4F200FFFFFFFF39453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C464D4C5C6D6F74696F6E5F706174685F646174612E6300000000126D6F74696F6E5F706174685F646174612E6300000000FFDC7800FFFFFFFF32453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C41504C5C417070436F6E6669672E68000000000B417070436F6E6669672E6800000000BECEA100FFFFFFFF3C453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C41504C5C6D6F74696F6E5F636F6E74726F6C5F7461736B2E6800000000156D6F74696F6E5F636F6E74726F6C5F7461736B2E6800000000F0A0A100FFFFFFFF37453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C464D4C5C6D6F74696F6E5F636F6E74726F6C2E6800000000106D6F74696F6E5F636F6E74726F6C2E6800000000BCA8E100FFFFFFFF2E453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C41504C5C5368656C6C2E6300000000075368656C6C2E63000000009CC1B600FFFFFFFF33453A5C4749545C4C61776E6D6F7765725F53544D333248375C53544D3332483734335C464D4C5C507974686F6E4C696E6B2E63000000000C507974686F6E4C696E6B2E6300000000F7B88600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000001A01000066000000000600003C020000</Data>
        <Len>60</Len>
        <Data>010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000</Data>
      </MDITabState>
    </MDIClientArea>
    <ViewEx>
@@ -157,7 +163,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000130100000C020000</Data>
          <Data>030000006600000013010000D1010000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -177,7 +183,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000130100000C020000</Data>
          <Data>030000006600000013010000D1010000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -457,7 +463,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000130100000C020000</Data>
          <Data>030000006600000013010000D1010000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -477,7 +483,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000066000000130100000C020000</Data>
          <Data>030000006600000013010000D1010000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -497,7 +503,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000040020000FD050000F5020000</Data>
          <Data>0300000005020000F8050000BA020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -537,7 +543,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000040020000FD050000F5020000</Data>
          <Data>0300000005020000F8050000BA020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1167,7 +1173,7 @@
      <Window>
        <RegID>38007</RegID>
        <PaneID>38007</PaneID>
        <IsVisible>0</IsVisible>
        <IsVisible>1</IsVisible>
        <IsFloating>0</IsFloating>
        <IsTabbed>0</IsTabbed>
        <IsActivated>0</IsActivated>
@@ -1177,7 +1183,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000040020000FD050000F5020000</Data>
          <Data>0300000005020000F8050000BA020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1197,7 +1203,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000040020000FD050000F5020000</Data>
          <Data>0300000005020000FD050000BA020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1257,7 +1263,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000040020000FD050000F5020000</Data>
          <Data>0300000005020000FD050000BA020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1277,7 +1283,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>0300000040020000FD050000F5020000</Data>
          <Data>0300000005020000FD050000BA020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1737,7 +1743,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>000000000E0300000006000021030000</Data>
          <Data>00000000D3020000FB050000E6020000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -1806,14 +1812,14 @@
      </Window>
      <DockMan>
        <Len>3312</Len>
        <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFC4000000BD00000070040000C1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C40000006600000070040000D4000000C40000004F00000070040000BD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFAC0300004F000000B0030000A5010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000B00300006600000070040000BC010000B00300004F00000070040000A501000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF160100004F0000001A010000250200000100000002000010040000000100000042FFFFFF37050000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000160100003C020000000000004F00000016010000250200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000091010000700400009501000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000000000000AC010000700400002E0200000000000095010000700400001702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF38020000950100003C0200001702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000025020000000600002902000001000000010000100400000001000000B8FDFFFF6C000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000004002000000060000250300000000000029020000000600000E0300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
        <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFC4000000BD00000070040000C1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C40000006600000070040000D4000000C40000004F00000070040000BD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFAC0300004F000000B0030000A5010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000B00300006600000070040000BC010000B00300004F00000070040000A501000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF160100004F0000001A010000EA0100000100000002000010040000000100000042FFFFFF37050000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000160100003C020000000000004F00000016010000EA0100000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000091010000700400009501000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000000000000AC010000700400002E0200000000000095010000700400001702000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF38020000950100003C0200001702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000EA010000FB050000EE01000001000000010000100400000001000000B8FDFFFF6C000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000000000000040020000000600002503000000000000EE010000FB050000D30200000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
      </DockMan>
      <ToolBar>
        <RegID>59392</RegID>
        <Name>File</Name>
        <Buttons>
          <Len>2761</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000007706174685F787996000000000000000E00104D435F4346475F58545241434B5F4B50000D6C6F6F6B61686561645F696478116D635F66696E645F6C6F6F6B6168656164114D435F4346475F474F414C5F544F4C5F4D07706174685F787910675F6D6F74696F6E5F706174685F78790F6D635F66696E645F6E6561726573741152454143485F5448524553484F4C445F4D085B4D435F496E6974044354524C05244354524C0756455253494F4E0543464752490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
          <Len>2633</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000400000000000000000000000000000000000001000000010000009600000002002050000000000F43616C63756C6174655F435243313696000000000000000500115368656C6C5F5365745254434D4D6F64650F43616C63756C6174655F435243313608435243204661696C085661726961626C650863697263756C61720000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
        </Buttons>
        <OriginalItems>
          <Len>1423</Len>
@@ -1829,7 +1835,7 @@
        <Name>Build</Name>
        <Buttons>
          <Len>978</Len>
          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0000000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000953544D333248373433960000000000000001000953544D333248373433000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
          <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000953544D333248373433960000000000000001000953544D333248373433000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
        </Buttons>
        <OriginalItems>
          <Len>583</Len>
@@ -1928,7 +1934,7 @@
      <Window>
        <RegID>1465</RegID>
        <PaneID>1465</PaneID>
        <IsVisible>1</IsVisible>
        <IsVisible>0</IsVisible>
        <IsFloating>0</IsFloating>
        <IsTabbed>0</IsTabbed>
        <IsActivated>0</IsActivated>
@@ -2848,7 +2854,7 @@
      <Window>
        <RegID>35904</RegID>
        <PaneID>35904</PaneID>
        <IsVisible>0</IsVisible>
        <IsVisible>1</IsVisible>
        <IsFloating>0</IsFloating>
        <IsTabbed>0</IsTabbed>
        <IsActivated>0</IsActivated>
@@ -2878,7 +2884,7 @@
        <RecentRowIndex>0</RecentRowIndex>
        <RectRecentDocked>
          <Len>16</Len>
          <Data>E203000063000000E9040000DF010000</Data>
          <Data>E503000066000000E6040000C6010000</Data>
        </RectRecentDocked>
        <RectRecentFloat>
          <Len>16</Len>
@@ -3546,15 +3552,15 @@
        </RectRecentFloat>
      </Window>
      <DockMan>
        <Len>3419</Len>
        <Data>000000000C000000000000000020000000000000FFFFFFFFFFFFFFFFC4000000BD00000000060000C1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C40000006600000000060000D4000000C40000004F00000000060000BD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000001000000FFFFFFFFFFFFFFFFDE0300004F000000E2030000DF01000001000000020000100400000001000000E1FCFFFFB5000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000001000000E203000066000000E9040000F6010000E20300004F000000E9040000DF01000000000000404100562B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0454494D3301000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFF16000000000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF060100004F0000000A010000DF01000001000000020000100400000001000000FBFEFFFF66030000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000006600000006010000F6010000000000004F00000006010000DF0100000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000700100007604000074010000000000000100000004000000010000003EFEFFFF1D00000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFBB0200000D030000BF020000E60300000000000002000000040000000000000064FDFFFFFA02000000000000000000000000000001000000C600000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000DF010000E9040000E301000001000000010000100400000001000000FFFDFFFFB3000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000FA010000E90400002503000000000000E3010000E90400000E0300000000000040820056060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365010000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFFE90400004F000000ED0400000E03000001000000020000100400000001000000F3FBFFFFDE00000000000000000000000000000001000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800040000001000000ED040000660000000006000025030000ED0400004F000000000600000E03000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203101000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F070000000000000000000000000000</Data>
        <Len>3425</Len>
        <Data>000000000C000000000000000020000000000000FFFFFFFFFFFFFFFFC4000000BD00000000060000C1000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000C40000006600000000060000D4000000C40000004F00000000060000BD0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000001000000FFFFFFFFFFFFFFFFDE0300004F000000E2030000DF01000001000000020000100400000001000000E1FCFFFFB5000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000001000000E203000066000000E9040000F6010000E20300004F000000E9040000DF01000000000000404100562B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0655534152543601000000408C000001000000FFFFFFFFFFFFFFFF0454494D3301000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFF16000000000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF060100004F0000000A010000DF01000001000000020000100400000001000000FBFEFFFF66030000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000006600000006010000F6010000000000004F00000006010000DF0100000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73000000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7300000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657300000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273010000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000700100007604000074010000000000000100000004000000010000003EFEFFFF1D00000000000000000000000000000001000000C60000000000000001000000000000000000000001000000FFFFFFFFBB0200000D030000BF020000E60300000000000002000000040000000000000064FDFFFFFA02000000000000000000000000000001000000C600000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000DF010000E9040000E301000001000000010000100400000001000000FFFDFFFFB3000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000000000000FA010000E90400002503000000000000E3010000E90400000E0300000000000040820056060000000C4275696C64204F757470757400000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0642726F777365010000007794000001000000FFFFFFFFFFFFFFFF01000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000040000001000000FFFFFFFFFFFFFFFFE90400004F000000ED0400000E03000001000000020000100400000001000000F3FBFFFFDE00000000000000000000000000000001000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800040000001000000ED040000660000000006000025030000ED0400004F000000000600000E03000000000000404100560F0000001343616C6C20537461636B202B204C6F63616C73010000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031010000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFF0500000000000000000000000000000000000000000000000000000001000000FFFFFFFF8F07000001000000FFFFFFFF8F070000000000000000000000000000</Data>
      </DockMan>
      <ToolBar>
        <RegID>59392</RegID>
        <Name>File</Name>
        <Buttons>
          <Len>2700</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000007706174685F787996000000000000000B0007706174685F787910675F6D6F74696F6E5F706174685F78790F6D635F66696E645F6E656172657374116D635F66696E645F6C6F6F6B61686561641152454143485F5448524553484F4C445F4D00085B4D435F496E6974044354524C05244354524C0756455253494F4E0543464752490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000300150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000000180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
          <Len>2725</Len>
          <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000F43616C63756C6174655F435243313696000000000000000B000F43616C63756C6174655F435243313608435243204661696C085661726961626C650863697263756C6172001A444D4120726573746172746564207375636365737366756C6C7904656C73651775617274365F646D615F726563765F656E645F666C6167043432303006496E74436E74104D435F4346475F58545241434B5F4B500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000100150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000</Data>
        </Buttons>
        <OriginalItems>
          <Len>1423</Len>
@@ -3586,7 +3592,7 @@
        <Name>Debug</Name>
        <Buttons>
          <Len>2362</Len>
          <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020000002D0000000000000000000000000000000001000000010000000180F07F0000020000002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200010032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
          <Data>00200000010000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000004002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000020000002D0000000000000000000000000000000001000000010000000180F07F0000020000002E0000000000000000000000000000000001000000010000000180E8880000020000003700000000000000000000000000000000010000000100000001803B010000020001002F0000000000000000000000000000000001000000010000000180BB8A00000200010030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000002000100310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F0100000200000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000002000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000002000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
        </Buttons>
        <OriginalItems>
          <Len>898</Len>
@@ -3605,220 +3611,4 @@
    </ViewEx>
  </WinLayoutEx>
  <MDIGroups>
    <Orientation>1</Orientation>
    <ActiveMDIGroup>0</ActiveMDIGroup>
    <MDIGroup>
      <Size>100</Size>
      <ActiveTab>8</ActiveTab>
      <Doc>
        <Name>..\FML\GPS.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>232</TopLine>
        <CurrentLine>238</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>startup_stm32h743xx.s</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>237</TopLine>
        <CurrentLine>243</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>../Core/Src/main.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>120</TopLine>
        <CurrentLine>126</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\APL\UDPClient.c</Name>
        <ColumnNumber>61</ColumnNumber>
        <TopLine>363</TopLine>
        <CurrentLine>378</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\APL\app.c</Name>
        <ColumnNumber>19</ColumnNumber>
        <TopLine>156</TopLine>
        <CurrentLine>164</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>../Middlewares/Third_Party/FreeRTOS/Source/tasks.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>3644</TopLine>
        <CurrentLine>3650</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\APL\global_param.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>58</TopLine>
        <CurrentLine>66</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>../FML/GPS.h</Name>
        <ColumnNumber>57</ColumnNumber>
        <TopLine>25</TopLine>
        <CurrentLine>37</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\FML\motion_control.c</Name>
        <ColumnNumber>52</ColumnNumber>
        <TopLine>318</TopLine>
        <CurrentLine>333</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\FML\motion_config.h</Name>
        <ColumnNumber>44</ColumnNumber>
        <TopLine>25</TopLine>
        <CurrentLine>32</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\APL\motion_control_task.c</Name>
        <ColumnNumber>6</ColumnNumber>
        <TopLine>326</TopLine>
        <CurrentLine>82</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\FML\bluetooth.c</Name>
        <ColumnNumber>41</ColumnNumber>
        <TopLine>73</TopLine>
        <CurrentLine>93</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>../FML/SBUS.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>98</TopLine>
        <CurrentLine>124</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\FML\DBG.c</Name>
        <ColumnNumber>5</ColumnNumber>
        <TopLine>173</TopLine>
        <CurrentLine>179</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>../HAL/Uart.h</Name>
        <ColumnNumber>18</ColumnNumber>
        <TopLine>39</TopLine>
        <CurrentLine>45</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\HAL\Uart.c</Name>
        <ColumnNumber>9</ColumnNumber>
        <TopLine>607</TopLine>
        <CurrentLine>624</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\FML\geo_utils.c</Name>
        <ColumnNumber>24</ColumnNumber>
        <TopLine>68</TopLine>
        <CurrentLine>73</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\FML\motion_path_data.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>5</TopLine>
        <CurrentLine>9</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\APL\AppConfig.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>29</TopLine>
        <CurrentLine>50</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\APL\motion_control_task.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>1</TopLine>
        <CurrentLine>1</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>../FML/motion_control.h</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>76</TopLine>
        <CurrentLine>1</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\APL\Shell.c</Name>
        <ColumnNumber>0</ColumnNumber>
        <TopLine>275</TopLine>
        <CurrentLine>1</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
      <Doc>
        <Name>..\FML\PythonLink.c</Name>
        <ColumnNumber>50</ColumnNumber>
        <TopLine>569</TopLine>
        <CurrentLine>582</CurrentLine>
        <Folding>1</Folding>
        <ContractedFolders></ContractedFolders>
        <PaneID>0</PaneID>
      </Doc>
    </MDIGroup>
  </MDIGroups>
</ProjectGui>
STM32H743/MDK-ARM/STM32H743.uvoptx
@@ -291,6 +291,13 @@
          <ItemText>state</ItemText>
        </Ww>
      </WatchWindow1>
      <WatchWindow2>
        <Ww>
          <count>0</count>
          <WinNumber>2</WinNumber>
          <ItemText>stInit</ItemText>
        </Ww>
      </WatchWindow2>
      <MemoryWindow1>
        <Mm>
          <WinNumber>1</WinNumber>
@@ -346,6 +353,10 @@
          <Name>System Viewer\TIM3</Name>
          <WinId>35905</WinId>
        </Entry>
        <Entry>
          <Name>System Viewer\USART6</Name>
          <WinId>35904</WinId>
        </Entry>
      </SystemViewers>
      <DebugDescription>
        <Enable>1</Enable>
STM32H743/MDK-ARM/STM32H743/STM32H743.map
ÎļþÌ«´ó
STM32H743/MDK-ARM/STM32H743/STM32H743_STM32H743.dep
@@ -52,7 +52,7 @@
I (../HAL/Uart.h)(0x691B11A6)
I (../HIDOLibrary/Include/HIDO_TypeDef.h)(0x6912F9C1)
I (../FML/DBG.h)(0x6921AFCB)
I (../FML/bluetooth.h)(0x69319429)
I (../FML/bluetooth.h)(0x693A4563)
F (../Core/Src/freertos.c)(0x6912F9C0)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\freertos.o --omf_browse stm32h743\freertos.crf --depend stm32h743\freertos.d)
I (../Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h)(0x69204891)
I (D:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5E53505C)
@@ -99,7 +99,7 @@
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim_ex.h)(0x692048F0)
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart.h)(0x692048F0)
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart_ex.h)(0x692048F0)
F (../Core/Src/stm32h7xx_it.c)(0x69319460)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\stm32h7xx_it.o --omf_browse stm32h743\stm32h7xx_it.crf --depend stm32h743\stm32h7xx_it.d)
F (../Core/Src/stm32h7xx_it.c)(0x693A617C)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\stm32h7xx_it.o --omf_browse stm32h743\stm32h7xx_it.crf --depend stm32h743\stm32h7xx_it.d)
I (../Core/Inc/main.h)(0x6912F9C0)
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal.h)(0x692048F0)
I (../Core/Inc/stm32h7xx_hal_conf.h)(0x6912F9C0)
@@ -137,7 +137,7 @@
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart.h)(0x692048F0)
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart_ex.h)(0x692048F0)
I (../Core/Inc/stm32h7xx_it.h)(0x6915A22E)
I (../FML/bluetooth.h)(0x69319429)
I (../FML/bluetooth.h)(0x693A4563)
I (../HIDOLibrary/Include/HIDO_TypeDef.h)(0x6912F9C1)
F (../Core/Src/stm32h7xx_hal_msp.c)(0x6915A22E)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\stm32h7xx_hal_msp.o --omf_browse stm32h743\stm32h7xx_hal_msp.crf --depend stm32h743\stm32h7xx_hal_msp.d)
I (../Core/Inc/main.h)(0x6912F9C0)
@@ -212,7 +212,7 @@
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim_ex.h)(0x692048F0)
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart.h)(0x692048F0)
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart_ex.h)(0x692048F0)
F (..\APL\app.c)(0x6930ECDF)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\app.o --omf_browse stm32h743\app.crf --depend stm32h743\app.d)
F (..\APL\app.c)(0x693ACDBC)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\app.o --omf_browse stm32h743\app.crf --depend stm32h743\app.d)
I (../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.h)(0x69204891)
I (D:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E53505C)
I (D:\Keil_v5\ARM\ARMCC\include\stddef.h)(0x5E53505C)
@@ -276,7 +276,7 @@
I (../HIDOLibrary/Include/HIDO_FSM.h)(0x6912F9C1)
I (D:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5E53505C)
I (..\APL\UDPClient.h)(0x6912F9C0)
I (../FML/bluetooth.h)(0x69319429)
I (../FML/bluetooth.h)(0x693A4563)
I (..\APL\TCPClient.h)(0x6912F9C0)
I (../FML/SBUS.h)(0x6915AFBD)
I (../FML/pwm_ctrol.h)(0x692FEE59)
@@ -299,7 +299,7 @@
I (../HIDOLibrary/Include/HIDO_Util.h)(0x6912F9C1)
I (..\APL\global_param.h)(0x6912F9C0)
I (D:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E53505C)
I (..\APL\AppConfig.h)(0x69398AD6)
I (..\APL\AppConfig.h)(0x693A79A8)
I (../FML/DBG.h)(0x6921AFCB)
I (../FML/Internet/Module/EG800/EG800FSM.h)(0x6912F9C1)
I (../HIDOLibrary/Include/HIDO_ATLite.h)(0x6912F9C1)
@@ -386,7 +386,7 @@
I (D:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E53505C)
I (../HAL/MCUFlash.h)(0x6912F9C1)
I (../HIDOLibrary/Include/HIDO_TypeDef.h)(0x6912F9C1)
I (..\APL\AppConfig.h)(0x69398AD6)
I (..\APL\AppConfig.h)(0x693A79A8)
I (D:\Keil_v5\ARM\ARMCC\include\string.h)(0x5E53505C)
F (..\APL\serial_at_cmd_app.c)(0x691423F5)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\serial_at_cmd_app.o --omf_browse stm32h743\serial_at_cmd_app.crf --depend stm32h743\serial_at_cmd_app.d)
I (..\APL\serial_at_cmd_app.h)(0x691423F5)
@@ -431,11 +431,11 @@
I (../HIDOLibrary/Include/HIDO_TypeDef.h)(0x6912F9C1)
I (D:\Keil_v5\ARM\ARMCC\include\string.h)(0x5E53505C)
I (D:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5E53505C)
I (..\APL\AppConfig.h)(0x69398AD6)
F (..\APL\Shell.c)(0x691423F5)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\shell.o --omf_browse stm32h743\shell.crf --depend stm32h743\shell.d)
I (..\APL\AppConfig.h)(0x693A79A8)
F (..\APL\Shell.c)(0x693ACD61)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\shell.o --omf_browse stm32h743\shell.crf --depend stm32h743\shell.d)
I (D:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5E53505C)
I (D:\Keil_v5\ARM\ARMCC\include\string.h)(0x5E53505C)
I (..\APL\AppConfig.h)(0x69398AD6)
I (..\APL\AppConfig.h)(0x693A79A8)
I (..\APL\Shell.h)(0x691423F5)
I (../HIDOLibrary/Include/HIDO_TypeDef.h)(0x6912F9C1)
I (../HIDOLibrary/Include/HIDO_Shell.h)(0x6912F9C1)
@@ -504,7 +504,7 @@
I (../HIDOLibrary/Include/HIDO_Util.h)(0x6912F9C1)
I (..\APL\global_param.h)(0x6912F9C0)
I (D:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E53505C)
I (..\APL\AppConfig.h)(0x69398AD6)
I (..\APL\AppConfig.h)(0x693A79A8)
I (../HAL/Uart.h)(0x691B11A6)
F (..\FML\DBG.c)(0x6924757A)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\dbg.o --omf_browse stm32h743\dbg.crf --depend stm32h743\dbg.d)
I (D:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5E53505C)
@@ -907,8 +907,8 @@
I (../HAL/Uart.h)(0x691B11A6)
I (..\FML\geo_utils.h)(0x6921AD3B)
I (../APL/UDPClient.h)(0x6912F9C0)
F (..\FML\bluetooth.c)(0x6932477C)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\bluetooth.o --omf_browse stm32h743\bluetooth.crf --depend stm32h743\bluetooth.d)
I (..\FML\bluetooth.h)(0x69319429)
F (..\FML\bluetooth.c)(0x693A79BC)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\bluetooth.o --omf_browse stm32h743\bluetooth.crf --depend stm32h743\bluetooth.d)
I (..\FML\bluetooth.h)(0x693A4563)
I (../HIDOLibrary/Include/HIDO_TypeDef.h)(0x6912F9C1)
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal.h)(0x692048F0)
I (../Core/Inc/stm32h7xx_hal_conf.h)(0x6912F9C0)
@@ -948,7 +948,7 @@
I (D:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5E53505C)
I (D:\Keil_v5\ARM\ARMCC\include\stdarg.h)(0x5E53505C)
I (D:\Keil_v5\ARM\ARMCC\include\string.h)(0x5E53505C)
I (../APL/AppConfig.h)(0x69398AD6)
I (../APL/AppConfig.h)(0x693A79A8)
I (../HIDOLibrary/Include/HIDO_Util.h)(0x6912F9C1)
I (..\FML\DBG.h)(0x6921AFCB)
I (../HAL/Uart.h)(0x691B11A6)
@@ -994,7 +994,7 @@
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim_ex.h)(0x692048F0)
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart.h)(0x692048F0)
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart_ex.h)(0x692048F0)
I (..\FML\bluetooth.h)(0x69319429)
I (..\FML\bluetooth.h)(0x693A4563)
I (../HIDOLibrary/Include/HIDO_TypeDef.h)(0x6912F9C1)
I (../Core/Inc/stm32h7xx_it.h)(0x6915A22E)
I (../Core/Inc/main.h)(0x6912F9C0)
@@ -1047,7 +1047,7 @@
I (..\FML\PythonLink.h)(0x69232A0C)
I (..\FML\GPS.h)(0x69328DD3)
I (../HAL/GPIO.h)(0x6912F9C1)
F (..\FML\PythonLink.c)(0x69392802)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\pythonlink.o --omf_browse stm32h743\pythonlink.crf --depend stm32h743\pythonlink.d)
F (..\FML\PythonLink.c)(0x693A7955)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\pythonlink.o --omf_browse stm32h743\pythonlink.crf --depend stm32h743\pythonlink.d)
I (..\FML\PythonLink.h)(0x69232A0C)
I (../HIDOLibrary/Include/HIDO_TypeDef.h)(0x6912F9C1)
I (..\FML\GPS.h)(0x69328DD3)
@@ -2123,7 +2123,7 @@
I (../Middlewares/Third_Party/FreeRTOS/Source/include/task.h)(0x69204891)
I (../Middlewares/Third_Party/FreeRTOS/Source/include/list.h)(0x69204891)
F (..\HIDOLibrary\HIDOLibrary.lib)(0x6912F9C1)()
F (..\FML\motion_control.c)(0x6939A7FB)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\motion_control.o --omf_browse stm32h743\motion_control.crf --depend stm32h743\motion_control.d)
F (..\FML\motion_control.c)(0x693A7F0B)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\motion_control.o --omf_browse stm32h743\motion_control.crf --depend stm32h743\motion_control.d)
I (..\FML\motion_control.h)(0x6923C106)
I (../HIDOLibrary/Include/HIDO_TypeDef.h)(0x6912F9C1)
I (..\FML\GPS.h)(0x69328DD3)
@@ -2231,7 +2231,7 @@
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_tim_ex.h)(0x692048F0)
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart.h)(0x692048F0)
I (../Drivers/STM32H7xx_HAL_Driver/Inc/stm32h7xx_hal_uart_ex.h)(0x692048F0)
F (..\APL\motion_control_task.c)(0x6939A625)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\motion_control_task.o --omf_browse stm32h743\motion_control_task.crf --depend stm32h743\motion_control_task.d)
F (..\APL\motion_control_task.c)(0x693A7CDB)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\motion_control_task.o --omf_browse stm32h743\motion_control_task.crf --depend stm32h743\motion_control_task.d)
I (..\APL\motion_control_task.h)(0x6921AD3B)
I (../HIDOLibrary/Include/HIDO_TypeDef.h)(0x6912F9C1)
I (../Middlewares/Third_Party/FreeRTOS/Source/include/FreeRTOS.h)(0x69204891)
@@ -2290,7 +2290,7 @@
I (../FML/pwm_ctrol.h)(0x692FEE59)
I (..\APL\motion_mode.h)(0x693257BA)
I (../FML/SBUS.h)(0x6915AFBD)
I (..\APL\AppConfig.h)(0x69398AD6)
I (..\APL\AppConfig.h)(0x693A79A8)
F (..\FML\arm_math_compat.c)(0x6923F683)()
F (..\APL\motion_calibration_task.c)(0x69315018)(--c99 --gnu -c --cpu Cortex-M7.fp.dp -g -O0 --apcs=interwork --split_sections -I ../Core/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc -I ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32H7xx/Include -I ../Drivers/CMSIS/Include -I ../HIDOLibrary/Include -I ../HAL -I ../FML -I ../APL -I ../FML/Internet -I ../FML/Internet/Module -I ../FML/Internet/Module/EG800 --fpmode=fast -I.\RTE\_STM32H743 -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\Include -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS-DSP\1.16.2\PrivateInclude -ID:\Users\zhyin\AppData\Local\Arm\Packs\ARM\CMSIS\5.8.0\CMSIS\Core\Include -D__UVISION_VERSION="530" -D_RTE_ -DSTM32H743xx -D_RTE_ -DUSE_PWR_LDO_SUPPLY -DUSE_HAL_DRIVER -DSTM32H743xx -D_USE_OS_ -D__TARGET_FPU_VFP -o stm32h743\motion_calibration_task.o --omf_browse stm32h743\motion_calibration_task.crf --depend stm32h743\motion_calibration_task.d)
I (..\APL\motion_calibration_task.h)(0x6925DDF7)
python/hitl/__pycache__/run_sim.cpython-310.pyc
Binary files differ
python/hitl/run_sim.py
@@ -339,14 +339,27 @@
        self.view.sceneMouseMoved.connect(self._update_mouse_pos)
        left_layout.addWidget(self.view, stretch=1)
        # Bottom bar for map controls
        bottom_bar = QtWidgets.QWidget()
        bottom_layout = QtWidgets.QHBoxLayout(bottom_bar)
        bottom_layout.setContentsMargins(0, 4, 0, 0)
        self.follow_checkbox = QtWidgets.QCheckBox("自动跟随车辆")
        self.follow_checkbox.setChecked(True)
        self.follow_checkbox.toggled.connect(self._on_follow_toggled)
        left_layout.addWidget(self.follow_checkbox, alignment=QtCore.Qt.AlignLeft)
        bottom_layout.addWidget(self.follow_checkbox)
        self.clear_trail_btn = QtWidgets.QPushButton("清除轨迹")
        self.clear_trail_btn.clicked.connect(self._clear_trail)
        bottom_layout.addWidget(self.clear_trail_btn)
        bottom_layout.addStretch(1)
        self.mouse_pos_label = QtWidgets.QLabel("E: 0.00  N: 0.00")
        self.mouse_pos_label.setStyleSheet("color:#222; background:rgba(255,255,255,190); padding:2px 6px; border-radius:4px;")
        left_layout.addWidget(self.mouse_pos_label, alignment=QtCore.Qt.AlignRight)
        bottom_layout.addWidget(self.mouse_pos_label)
        left_layout.addWidget(bottom_bar)
        layout.addWidget(left_panel, stretch=3)
@@ -430,12 +443,13 @@
        status_layout = QtWidgets.QVBoxLayout(status_group)
        self.info_label = QtWidgets.QLabel("等待数据...")
        self.info_label.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignLeft)
        self.info_label.setStyleSheet("font-family: Consolas, 'Courier New'; font-size: 12px;")
        self.info_label.setStyleSheet("font-family: Consolas, 'Courier New'; font-size: 14px;")
        info_scroll = QtWidgets.QScrollArea()
        info_scroll.setWidgetResizable(True)
        info_scroll.setWidget(self.info_label)
        info_scroll.setMinimumHeight(500)  # è¿›ä¸€æ­¥å¢žåŠ æœ€å°é«˜åº¦
        status_layout.addWidget(info_scroll)
        right_layout.addWidget(status_group, stretch=1)
        right_layout.addWidget(status_group, stretch=4)  # è¿›ä¸€æ­¥å¢žåŠ å¸ƒå±€æƒé‡ï¼Œä»Ž2增加到4
        # Stack table
        stack_group = QtWidgets.QGroupBox("堆栈监测")
@@ -556,6 +570,12 @@
        if checked and self.pose_status:
            self.view.centerOn(self.pose_status.east, -self.pose_status.north)
    def _clear_trail(self):
        """清除地图上的轨迹点"""
        self.trail_points = []
        # Update scene to remove trail
        self._update_scene()
    def _update_mouse_pos(self, east: float, scene_y: float):
        north = -scene_y
        self.mouse_pos_label.setText(f"E: {east: .2f}  N: {north: .2f}")
python/hitl/runlog.txt
ÎļþÌ«´ó
н¨Îı¾Îĵµ.txt
@@ -0,0 +1,111 @@
[13:58:36.316]收←◆[PythonLink] Init success (UART5, 921600 bps, DMA)
[MC_INIT] Path loaded: count=7, first_point=(1.77,0.16)
[MotionCtrl] Task started (75.0 Hz)
[BT] Poll: IntCnt=3, Flag=1, DMA_CNDTR=1024, RecvLen=0
[BT] Empty IDLE interrupt (Len=0), restarting DMA
[MC_CTRL] CH8 failsafe detected (1024), keeping previous value=1000
[MC_CTRL] SBUS valid changed: 0 -> 1
$STATE,idle,0.000,0.00,0*53
[13:58:37.317]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=1005, RecvLen=0
$STATE,idle,0.000,0.00,0*53
[13:58:37.352]收←◆[MC_CTRL] CH8 state confirmed: MANUAL -> AUTO (ch8=1800)
[13:58:38.319]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=986, RecvLen=0
$STATE,idle,0.000,0.00,0*53
[13:58:39.320]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=967, RecvLen=0
$STATE,idle,0.000,0.00,0*53
[13:58:40.320]收←◆$STATE,idle,0.000,0.00,0*53
[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=948, RecvLen=0
[13:58:41.318]收←◆$STATE,idle,0.000,0.00,0*53
[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=929, RecvLen=0
[13:58:42.315]收←◆$STATE,idle,0.000,0.00,0*53
[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=910, RecvLen=0
[13:58:43.312]收←◆$STATE,idle,0.000,0.00,0*53
[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=891, RecvLen=0
[13:58:44.309]收←◆$STATE,idle,0.000,0.00,0*53
[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=872, RecvLen=0
[13:58:45.073]收←◆$STACK,Motion,1729,2624,2624*7D
$STACK,App,1737,2624,2624*0D
[13:58:45.306]收←◆$STATE,idle,0.000,0.00,0*53
[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=853, RecvLen=0
[13:58:46.304]收←◆$STATE,idle,0.000,0.00,0*53
[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=834, RecvLen=0
[13:58:47.301]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:47.330]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=815, RecvLen=0
[13:58:48.299]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:48.333]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=796, RecvLen=0
[13:58:49.296]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:49.333]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=777, RecvLen=0
[13:58:50.293]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:50.335]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=758, RecvLen=0
[13:58:51.291]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:51.336]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=739, RecvLen=0
[13:58:52.287]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:52.337]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=720, RecvLen=0
[13:58:53.285]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:53.338]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=701, RecvLen=0
[13:58:54.282]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:54.339]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=682, RecvLen=0
[13:58:55.045]收←◆$STACK,Motion,1729,2624,2624*7D
$STACK,App,1737,2624,2624*0D
[13:58:55.280]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:55.341]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=663, RecvLen=0
[13:58:56.277]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:56.342]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=644, RecvLen=0
[13:58:57.273]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:57.343]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=625, RecvLen=0
[13:58:58.271]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:58.345]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=606, RecvLen=0
[13:58:59.268]收←◆$STATE,idle,0.000,0.00,0*53
[13:58:59.346]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=587, RecvLen=0
[13:59:00.265]收←◆$STATE,idle,0.000,0.00,0*53
[13:59:00.346]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=568, RecvLen=0
[13:59:01.263]收←◆$STATE,idle,0.000,0.00,0*53
[13:59:01.347]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=549, RecvLen=0
[13:59:02.259]收←◆$STATE,idle,0.000,0.00,0*53
[13:59:02.349]收←◆[BT] Poll: IntCnt=3, Flag=0, DMA_CNDTR=530, RecvLen=0