mirror of
https://github.com/goldenfishs/MRobot.git
synced 2025-06-16 06:46:38 +08:00
Compare commits
No commits in common. "fd34cbfc8a36a96d120e7b6a8226a27ac3dc8d95" and "4539cfb332e1d96d7ac5b0d9c735a75900a2aa0c" have entirely different histories.
fd34cbfc8a
...
4539cfb332
7
.vscode/settings.json
vendored
Normal file
7
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"uart.h": "c",
|
||||
"device.h": "c",
|
||||
"pc_uart.h": "c"
|
||||
}
|
||||
}
|
103
MRobot.py
103
MRobot.py
@ -19,21 +19,13 @@ class MRobotApp:
|
||||
self.header_file_vars = {}
|
||||
self.task_vars = [] # 用于存储任务的变量
|
||||
|
||||
# 初始化
|
||||
def initialize(self):
|
||||
print("初始化中,正在克隆仓库...")
|
||||
self.clone_repo()
|
||||
self.ioc_data = self.find_and_read_ioc_file()
|
||||
print("初始化完成,启动主窗口...")
|
||||
self.show_main_window()
|
||||
|
||||
# 克隆仓库
|
||||
def clone_repo(self):
|
||||
try:
|
||||
if os.path.exists(REPO_DIR):
|
||||
shutil.rmtree(REPO_DIR)
|
||||
print(f"正在克隆仓库到 {REPO_DIR}(仅克隆当前文件内容)...")
|
||||
Repo.clone_from(REPO_URL, REPO_DIR, multi_options=["--depth=1"])
|
||||
print(f"正在克隆仓库到 {REPO_DIR}...")
|
||||
Repo.clone_from(REPO_URL, REPO_DIR)
|
||||
print("仓库克隆成功!")
|
||||
except Exception as e:
|
||||
print(f"克隆仓库时出错: {e}")
|
||||
@ -169,7 +161,13 @@ class MRobotApp:
|
||||
status = "未检测到 .ioc 文件"
|
||||
label.config(text=f"FreeRTOS 状态: {status}")
|
||||
|
||||
|
||||
# 初始化
|
||||
def initialize(self):
|
||||
print("初始化中,正在克隆仓库...")
|
||||
self.clone_repo()
|
||||
self.ioc_data = self.find_and_read_ioc_file()
|
||||
print("初始化完成,启动主窗口...")
|
||||
self.show_main_window()
|
||||
|
||||
# 显示主窗口
|
||||
def show_main_window(self):
|
||||
@ -203,62 +201,25 @@ class MRobotApp:
|
||||
self.header_files_frame = header_files_frame
|
||||
self.update_header_files()
|
||||
|
||||
|
||||
if self.ioc_data and self.check_freertos_enabled(self.ioc_data):
|
||||
task_frame = tk.LabelFrame(module_task_frame, text="任务管理", padx=10, pady=10, font=("Arial", 10, "bold"))
|
||||
task_frame.pack(side="left", fill="both", expand=True, padx=5)
|
||||
self.task_frame = task_frame
|
||||
self.update_task_ui()
|
||||
|
||||
# 添加消息框和生成按钮在同一行
|
||||
bottom_frame = tk.Frame(main_frame)
|
||||
bottom_frame.pack(fill="x", pady=10, side="bottom")
|
||||
|
||||
# 消息框
|
||||
self.message_box = tk.Text(bottom_frame, wrap="word", state="disabled", height=5, width=60)
|
||||
self.message_box.pack(side="left", fill="x", expand=True, padx=5, pady=5)
|
||||
|
||||
# 生成按钮和 .gitignore 选项
|
||||
button_frame = tk.Frame(bottom_frame)
|
||||
button_frame.pack(side="right", padx=10)
|
||||
button_frame = tk.Frame(main_frame)
|
||||
button_frame.pack(fill="x", pady=10)
|
||||
generate_button = tk.Button(button_frame, text="一键自动生成MR架构", command=self.generate_action, bg="green", fg="white", font=("Arial", 12, "bold"))
|
||||
generate_button.pack(side="left", padx=10)
|
||||
tk.Checkbutton(button_frame, text="添加 .gitignore", variable=self.add_gitignore_var).pack(side="left", padx=10)
|
||||
|
||||
# 添加 .gitignore 复选框
|
||||
tk.Checkbutton(button_frame, text="添加 .gitignore", variable=self.add_gitignore_var).pack(side="top", pady=5)
|
||||
|
||||
# 添加生成按钮
|
||||
generate_button = tk.Button(button_frame, text="一键生成MRobot代码", command=self.generate_action, bg="green", fg="white", font=("Arial", 12, "bold"))
|
||||
generate_button.pack(side="top", pady=5)
|
||||
|
||||
# 重定向输出到消息框
|
||||
self.redirect_output()
|
||||
|
||||
# 打印欢迎信息
|
||||
print("欢迎使用 MRobot 自动生成脚本!")
|
||||
print("请根据需要选择模块文件和任务。")
|
||||
print("点击“一键生成MRobot代码”按钮开始生成。")
|
||||
|
||||
# 启动 Tkinter 主事件循环
|
||||
# 在程序关闭时清理
|
||||
root.protocol("WM_DELETE_WINDOW", lambda: self.on_closing(root))
|
||||
root.mainloop()
|
||||
|
||||
def redirect_output(self):
|
||||
"""
|
||||
重定向标准输出到消息框
|
||||
"""
|
||||
class TextRedirector:
|
||||
def __init__(self, text_widget):
|
||||
self.text_widget = text_widget
|
||||
|
||||
def write(self, message):
|
||||
self.text_widget.config(state="normal")
|
||||
self.text_widget.insert("end", message)
|
||||
self.text_widget.see("end")
|
||||
self.text_widget.config(state="disabled")
|
||||
|
||||
def flush(self):
|
||||
pass
|
||||
|
||||
sys.stdout = TextRedirector(self.message_box)
|
||||
sys.stderr = TextRedirector(self.message_box)
|
||||
|
||||
# 修改 update_task_ui 方法
|
||||
def update_task_ui(self):
|
||||
# 检查是否有已存在的任务文件
|
||||
task_dir = os.path.join("User", "task")
|
||||
@ -267,24 +228,9 @@ class MRobotApp:
|
||||
file_base, file_ext = os.path.splitext(file_name)
|
||||
# 忽略 init 和 user_task 文件
|
||||
if file_ext == ".c" and file_base not in ["init", "user_task"] and file_base not in [task_var.get() for task_var, _ in self.task_vars]:
|
||||
# 尝试从文件中读取频率信息
|
||||
frequency = 100 # 默认频率
|
||||
file_path = os.path.join(task_dir, file_name)
|
||||
try:
|
||||
with open(file_path, "r", encoding="utf-8") as f:
|
||||
content = f.read()
|
||||
# 调试信息:打印文件内容
|
||||
print(f"读取任务文件 {file_name} 内容:\n{content}")
|
||||
match = re.search(r"#define\s+TASK_FREQ_\w+\s*\((\d+)\)", content)
|
||||
if match:
|
||||
frequency = int(match.group(1))
|
||||
print(f"从文件 {file_name} 中读取到频率: {frequency}")
|
||||
except Exception as e:
|
||||
print(f"读取任务文件 {file_name} 时出错: {e}")
|
||||
|
||||
# 自动添加已存在的任务名和频率
|
||||
# 自动添加已存在的任务名
|
||||
new_task_var = tk.StringVar(value=file_base)
|
||||
self.task_vars.append((new_task_var, tk.IntVar(value=frequency)))
|
||||
self.task_vars.append((new_task_var, tk.IntVar(value=100))) # 默认频率为 100
|
||||
|
||||
# 清空任务框架中的所有子组件
|
||||
for widget in self.task_frame.winfo_children():
|
||||
@ -319,7 +265,6 @@ class MRobotApp:
|
||||
def remove_task(self, idx):
|
||||
del self.task_vars[idx]
|
||||
self.update_task_ui()
|
||||
|
||||
# 更新文件夹显示
|
||||
def update_folder_display(self):
|
||||
for widget in self.folder_frame.winfo_children():
|
||||
@ -388,7 +333,6 @@ class MRobotApp:
|
||||
col = 0
|
||||
row += 1
|
||||
|
||||
|
||||
def handle_dependencies(self, file_base, dependencies):
|
||||
"""
|
||||
根据依赖关系自动勾选相关模块
|
||||
@ -491,10 +435,7 @@ class MRobotApp:
|
||||
task_handle_definitions = "\n".join([f" osThreadId_t {task_var.get()};" for task_var, _ in self.task_vars])
|
||||
task_attr_declarations = "\n".join([f"extern const osThreadAttr_t attr_{task_var.get().lower()};" for task_var, _ in self.task_vars])
|
||||
task_function_declarations = "\n".join([f"void {task_var.get()}(void *argument);" for task_var, _ in self.task_vars])
|
||||
task_frequency_definitions = "\n".join([
|
||||
f"#define TASK_FREQ_{task_var.get().upper()} ({freq_var.get()}u)"
|
||||
for task_var, freq_var in self.task_vars # 动态获取任务频率
|
||||
])
|
||||
task_frequency_definitions = "\n".join([f"#define TASK_FREQ_{task_var.get().upper()} (100u)" for task_var, _ in self.task_vars])
|
||||
task_init_delay_definitions = "\n".join([f"#define TASK_INIT_DELAY_{task_var.get().upper()} (0u)" for task_var, _ in self.task_vars])
|
||||
|
||||
# 替换模板中的占位符
|
||||
@ -514,7 +455,6 @@ class MRobotApp:
|
||||
except Exception as e:
|
||||
print(f"生成 user_task.h 文件时出错: {e}")
|
||||
|
||||
|
||||
def generate_init_file(self):
|
||||
try:
|
||||
template_file_path = os.path.join(REPO_DIR, "User", "task", "init.c.template")
|
||||
@ -610,7 +550,6 @@ class MRobotApp:
|
||||
self.delete_repo()
|
||||
root.destroy()
|
||||
|
||||
|
||||
# 程序入口
|
||||
if __name__ == "__main__":
|
||||
app = MRobotApp()
|
||||
|
@ -1 +0,0 @@
|
||||
Subproject commit 4539cfb332e1d96d7ac5b0d9c735a75900a2aa0c
|
14
User/bsp/adc.c
Normal file
14
User/bsp/adc.c
Normal file
@ -0,0 +1,14 @@
|
||||
/* Includes ----------------------------------------------------------------- */
|
||||
#include "bsp\adc.h"
|
||||
|
||||
#include <adc.h>
|
||||
|
||||
/* Private define ----------------------------------------------------------- */
|
||||
/* Private macro ------------------------------------------------------------ */
|
||||
/* Private typedef ---------------------------------------------------------- */
|
||||
/* Private variables -------------------------------------------------------- */
|
||||
/* Private function -------------------------------------------------------- */
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
// float BSP_GetAdc(){
|
||||
|
||||
// }
|
20
User/bsp/adc.h
Normal file
20
User/bsp/adc.h
Normal file
@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ----------------------------------------------------------------- */
|
||||
#include <stdint.h>
|
||||
|
||||
#include "bsp/bsp.h"
|
||||
|
||||
/* Exported constants ------------------------------------------------------- */
|
||||
/* Exported macro ----------------------------------------------------------- */
|
||||
/* Exported types ----------------------------------------------------------- */
|
||||
/* Exported functions prototypes -------------------------------------------- */
|
||||
// float BSP_GetAdc();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@ -10,6 +10,8 @@ extern "C" {
|
||||
#define BSP_ERR_INITED (-3)
|
||||
#define BSP_ERR_NO_DEV (-4)
|
||||
|
||||
#define SIGNAL_BSP_USB_BUF_RECV (1u << 0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -1,32 +1,29 @@
|
||||
|
||||
|
||||
/* Includes ----------------------------------------------------------------- */
|
||||
#include <gpio.h>
|
||||
#include "bsp/bsp.h"
|
||||
#include "bsp/buzzer_gpio.h"
|
||||
#include "bsp/bsp.h"
|
||||
#include <gpio.h>
|
||||
|
||||
/* Private define ----------------------------------------------------------- */
|
||||
#define BSP_BUZZER_GPIO GPIOA
|
||||
#define BSP_BUZZER_PIN GPIO_PIN_1
|
||||
/* Private macro ------------------------------------------------------------ */
|
||||
/* Private typedef ---------------------------------------------------------- */
|
||||
/* Private variables -------------------------------------------------------- */
|
||||
|
||||
/* Private function --------------------------------------------------------- */
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
int8_t BSP_Buzzer_Set(BSP_Buzzer_Status_t s)
|
||||
{
|
||||
switch (s)
|
||||
{
|
||||
case BSP_BUZZER_ON:
|
||||
HAL_GPIO_WritePin(BSP_BUZZER_GPIO, BSP_BUZZER_PIN, GPIO_PIN_SET); // 打开蜂鸣器
|
||||
break;
|
||||
case BSP_BUZZER_OFF:
|
||||
HAL_GPIO_WritePin(BSP_BUZZER_GPIO, BSP_BUZZER_PIN, GPIO_PIN_RESET); // 关闭蜂鸣器
|
||||
break;
|
||||
case BSP_BUZZER_TAGGLE:
|
||||
HAL_GPIO_TogglePin(BSP_BUZZER_GPIO, BSP_BUZZER_PIN); // 切换蜂鸣器状态
|
||||
break;
|
||||
default:
|
||||
return BSP_ERR;
|
||||
|
||||
int8_t BSP_Buzzer_Set(BSP_Buzzer_Status_t s) {
|
||||
switch (s) {
|
||||
case BSP_BUZZER_ON:
|
||||
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET); // 打开蜂鸣器
|
||||
break;
|
||||
case BSP_BUZZER_OFF:
|
||||
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET); // 关闭蜂鸣器
|
||||
break;
|
||||
case BSP_BUZZER_TAGGLE:
|
||||
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_1); // 切换蜂鸣器状态
|
||||
break;
|
||||
default:
|
||||
return -1; // 无效的状态
|
||||
}
|
||||
return BSP_OK;
|
||||
return 0; // 成功
|
||||
}
|
@ -7,7 +7,7 @@
|
||||
/* Exported macro ----------------------------------------------------------- */
|
||||
/* Exported types ----------------------------------------------------------- */
|
||||
|
||||
/* 设置BUZZER状态 */
|
||||
/* Buzzer状态,设置用 */
|
||||
typedef enum
|
||||
{
|
||||
BSP_BUZZER_ON,
|
||||
|
@ -9,11 +9,10 @@ static void (*I2C_Callback[BSP_I2C_NUM][BSP_I2C_CB_NUM])(void);
|
||||
|
||||
/* Private function -------------------------------------------------------- */
|
||||
static BSP_I2C_t I2C_Get(I2C_HandleTypeDef *hi2c) {
|
||||
if (hi2c->Instance == I2C1)
|
||||
return BSP_I2C_EXAMPLE;
|
||||
if (hi2c->Instance == I2C1) return BSP_I2C_OLED;
|
||||
/*
|
||||
else if (hi2c->Instance == I2CX)
|
||||
return BSP_I2C_XXX;
|
||||
return BSP_I2C_XXX;
|
||||
*/
|
||||
else
|
||||
return BSP_I2C_ERR;
|
||||
@ -94,7 +93,7 @@ void HAL_I2C_AbortCpltCallback(I2C_HandleTypeDef *hi2c) {
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
I2C_HandleTypeDef *BSP_I2C_GetHandle(BSP_I2C_t i2c) {
|
||||
switch (i2c) {
|
||||
case BSP_I2C_EXAMPLE:
|
||||
case BSP_I2C_OLED:
|
||||
return &hi2c1;
|
||||
/*
|
||||
case BSP_I2C_XXX:
|
||||
|
@ -17,13 +17,13 @@ extern "C" {
|
||||
|
||||
/* I2C实体枚举,与设备对应 */
|
||||
typedef enum {
|
||||
BSP_I2C_EXAMPLE,
|
||||
BSP_I2C_OLED,
|
||||
/* BSP_I2C_XXX,*/
|
||||
BSP_I2C_NUM,
|
||||
BSP_I2C_ERR,
|
||||
} BSP_I2C_t;
|
||||
|
||||
/* I2C支持的中断回调函数类型*/
|
||||
/* I2C支持的中断回调函数类型,具体参考HAL中定义 */
|
||||
typedef enum {
|
||||
HAL_I2C_MASTER_TX_CPLT_CB,
|
||||
HAL_I2C_MASTER_RX_CPLT_CB,
|
||||
|
@ -7,43 +7,33 @@
|
||||
/* Private macro ------------------------------------------------------------ */
|
||||
/* Private typedef ---------------------------------------------------------- */
|
||||
/* Private variables -------------------------------------------------------- */
|
||||
static uint32_t led_stats; // 使用位掩码记录每个通道的状态,最多支持32LED
|
||||
static uint32_t led_stats; // 使用位掩码记录每个通道的状态
|
||||
|
||||
// 定义 LED 引脚和端口映射表:需要根据自己的修改,添加,或删减。
|
||||
static const BSP_LED_Config_t LED_CONFIGS[] = {
|
||||
{GPIOA, GPIO_PIN_2}, // BSP_LED_1
|
||||
{GPIOA, GPIO_PIN_3}, // BSP_LED_2
|
||||
{GPIOA, GPIO_PIN_4}, // BSP_LED_3
|
||||
};
|
||||
|
||||
#define LED_CHANNEL_COUNT (sizeof(LED_CONFIGS) / sizeof(LED_CONFIGS[0])) // 通道数量
|
||||
// 定义 LED 引脚映射表
|
||||
static const uint16_t LED_PINS[] = {GPIO_PIN_2, GPIO_PIN_3, GPIO_PIN_4};
|
||||
|
||||
/* Private function --------------------------------------------------------- */
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
int8_t BSP_LED_Set(BSP_LED_Channel_t ch, BSP_LED_Status_t s)
|
||||
{
|
||||
if (ch < LED_CHANNEL_COUNT)
|
||||
{
|
||||
GPIO_TypeDef *port = LED_CONFIGS[ch].port;
|
||||
uint16_t pin = LED_CONFIGS[ch].pin;
|
||||
switch (s)
|
||||
{
|
||||
case BSP_LED_ON:
|
||||
led_stats |= (1 << ch);
|
||||
HAL_GPIO_WritePin(port, pin, GPIO_PIN_SET); // 点亮LED
|
||||
break;
|
||||
case BSP_LED_OFF:
|
||||
led_stats &= ~(1 << ch);
|
||||
HAL_GPIO_WritePin(port, pin, GPIO_PIN_RESET); // 熄灭LED
|
||||
break;
|
||||
case BSP_LED_TAGGLE:
|
||||
led_stats ^= (1 << ch);
|
||||
HAL_GPIO_TogglePin(port, pin); // 切换LED状态
|
||||
break;
|
||||
default:
|
||||
return BSP_ERR;
|
||||
int8_t BSP_LED_Set(BSP_LED_Channel_t ch, BSP_LED_Status_t s) {
|
||||
if (ch >= BSP_LED_1 && ch <= BSP_LED_3) {
|
||||
uint16_t pin = LED_PINS[ch - BSP_LED_1]; // 获取对应的 GPIO 引脚
|
||||
switch (s) {
|
||||
case BSP_LED_ON:
|
||||
led_stats |= (1 << ch); // 设置对应位为1
|
||||
HAL_GPIO_WritePin(GPIOA, pin, GPIO_PIN_SET); // 点亮LED
|
||||
break;
|
||||
case BSP_LED_OFF:
|
||||
led_stats &= ~(1 << ch); // 清除对应位为0
|
||||
HAL_GPIO_WritePin(GPIOA, pin, GPIO_PIN_RESET); // 熄灭LED
|
||||
break;
|
||||
case BSP_LED_TAGGLE:
|
||||
led_stats ^= (1 << ch); // 切换对应位
|
||||
HAL_GPIO_TogglePin(GPIOA, pin); // 切换LED状态
|
||||
break;
|
||||
default:
|
||||
return -1; // 无效的状态
|
||||
}
|
||||
return BSP_OK;
|
||||
return 0; // 成功
|
||||
}
|
||||
return BSP_ERR;
|
||||
return -1; // 无效的通道
|
||||
}
|
@ -21,16 +21,8 @@ typedef enum
|
||||
BSP_LED_1,
|
||||
BSP_LED_2,
|
||||
BSP_LED_3,
|
||||
/*BSP_LED_XXX*/
|
||||
} BSP_LED_Channel_t;
|
||||
|
||||
/* LED GPIO 配置 */
|
||||
typedef struct
|
||||
{
|
||||
GPIO_TypeDef *port; // GPIO 端口 (如 GPIOA, GPIOB)
|
||||
uint16_t pin; // GPIO 引脚
|
||||
} BSP_LED_Config_t;
|
||||
|
||||
/* Exported functions prototypes -------------------------------------------- */
|
||||
|
||||
int8_t BSP_LED_Set(BSP_LED_Channel_t ch, BSP_LED_Status_t s);
|
||||
int8_t BSP_LED_Set(BSP_LED_Channel_t ch, BSP_LED_Status_t s);
|
||||
|
@ -10,7 +10,7 @@ static void (*SPI_Callback[BSP_SPI_NUM][BSP_SPI_CB_NUM])(void);
|
||||
/* Private function -------------------------------------------------------- */
|
||||
static BSP_SPI_t SPI_Get(SPI_HandleTypeDef *hspi) {
|
||||
if (hspi->Instance == SPI1)
|
||||
return BSP_SPI_EXAMPLE;
|
||||
return BSP_SPI_OLED;
|
||||
/*
|
||||
else if (hspi->Instance == SPIX)
|
||||
return BSP_SPI_XXX;
|
||||
@ -87,7 +87,7 @@ void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi) {
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
SPI_HandleTypeDef *BSP_SPI_GetHandle(BSP_SPI_t spi) {
|
||||
switch (spi) {
|
||||
case BSP_SPI_EXAMPLE:
|
||||
case BSP_SPI_OLED:
|
||||
return &hspi1;
|
||||
/*
|
||||
case BSP_SPI_XXX:
|
||||
|
@ -17,7 +17,7 @@ extern "C" {
|
||||
|
||||
/* SPI实体枚举,与设备对应 */
|
||||
typedef enum {
|
||||
BSP_SPI_EXAMPLE,
|
||||
BSP_SPI_OLED,
|
||||
/* BSP_SPI_XXX,*/
|
||||
BSP_SPI_NUM,
|
||||
BSP_SPI_ERR,
|
||||
|
@ -10,7 +10,7 @@ static void (*UART_Callback[BSP_UART_NUM][BSP_UART_CB_NUM])(void);
|
||||
/* Private function -------------------------------------------------------- */
|
||||
static BSP_UART_t UART_Get(UART_HandleTypeDef *huart) {
|
||||
if (huart->Instance == USART1)
|
||||
return BSP_UART_EXAMPLE;
|
||||
return BSP_UART_PC;
|
||||
|
||||
/*else */
|
||||
|
||||
@ -102,7 +102,7 @@ void BSP_UART_IRQHandler(UART_HandleTypeDef *huart) {
|
||||
|
||||
UART_HandleTypeDef *BSP_UART_GetHandle(BSP_UART_t uart) {
|
||||
switch (uart) {
|
||||
case BSP_UART_EXAMPLE:
|
||||
case BSP_UART_PC:
|
||||
return &huart1;
|
||||
default:
|
||||
return NULL;
|
||||
|
@ -17,7 +17,7 @@ extern "C" {
|
||||
|
||||
/* UART实体枚举,与设备对应 */
|
||||
typedef enum {
|
||||
BSP_UART_EXAMPLE,
|
||||
BSP_UART_PC,
|
||||
/*BSP_UART_??*/
|
||||
BSP_UART_NUM,
|
||||
BSP_UART_ERR,
|
||||
|
4487
build/MRobot/Analysis-00.toc
Normal file
4487
build/MRobot/Analysis-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
2986
build/MRobot/EXE-00.toc
Normal file
2986
build/MRobot/EXE-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
BIN
build/MRobot/MRobot.pkg
Normal file
BIN
build/MRobot/MRobot.pkg
Normal file
Binary file not shown.
2964
build/MRobot/PKG-00.toc
Normal file
2964
build/MRobot/PKG-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
BIN
build/MRobot/PYZ-00.pyz
Normal file
BIN
build/MRobot/PYZ-00.pyz
Normal file
Binary file not shown.
1542
build/MRobot/PYZ-00.toc
Normal file
1542
build/MRobot/PYZ-00.toc
Normal file
File diff suppressed because it is too large
Load Diff
BIN
build/MRobot/base_library.zip
Normal file
BIN
build/MRobot/base_library.zip
Normal file
Binary file not shown.
BIN
build/MRobot/localpycs/pyimod01_archive.pyc
Normal file
BIN
build/MRobot/localpycs/pyimod01_archive.pyc
Normal file
Binary file not shown.
BIN
build/MRobot/localpycs/pyimod02_importers.pyc
Normal file
BIN
build/MRobot/localpycs/pyimod02_importers.pyc
Normal file
Binary file not shown.
BIN
build/MRobot/localpycs/pyimod03_ctypes.pyc
Normal file
BIN
build/MRobot/localpycs/pyimod03_ctypes.pyc
Normal file
Binary file not shown.
BIN
build/MRobot/localpycs/pyimod04_pywin32.pyc
Normal file
BIN
build/MRobot/localpycs/pyimod04_pywin32.pyc
Normal file
Binary file not shown.
BIN
build/MRobot/localpycs/struct.pyc
Normal file
BIN
build/MRobot/localpycs/struct.pyc
Normal file
Binary file not shown.
61
build/MRobot/warn-MRobot.txt
Normal file
61
build/MRobot/warn-MRobot.txt
Normal file
@ -0,0 +1,61 @@
|
||||
|
||||
This file lists modules PyInstaller was not able to find. This does not
|
||||
necessarily mean this module is required for running your program. Python and
|
||||
Python 3rd-party packages include a lot of conditional or optional modules. For
|
||||
example the module 'ntpath' only exists on Windows, whereas the module
|
||||
'posixpath' only exists on Posix systems.
|
||||
|
||||
Types if import:
|
||||
* top-level: imported at the top-level - look at these first
|
||||
* conditional: imported within an if-statement
|
||||
* delayed: imported within a function
|
||||
* optional: imported within a try-except-statement
|
||||
|
||||
IMPORTANT: Do NOT post this list to the issue-tracker. Use it as a basis for
|
||||
tracking down the missing module yourself. Thanks!
|
||||
|
||||
missing module named pyimod02_importers - imported by C:\Users\lvzucheng\AppData\Local\Programs\Python\Python313\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgutil.py (delayed), C:\Users\lvzucheng\AppData\Local\Programs\Python\Python313\Lib\site-packages\PyInstaller\hooks\rthooks\pyi_rth_pkgres.py (delayed)
|
||||
missing module named pwd - imported by posixpath (delayed, conditional, optional), shutil (delayed, optional), tarfile (optional), pathlib._local (optional), subprocess (delayed, conditional, optional), getpass (delayed, optional), setuptools._distutils.util (delayed, conditional, optional), netrc (delayed, conditional), setuptools._vendor.backports.tarfile (optional), setuptools._distutils.archive_util (optional), http.server (delayed, optional)
|
||||
missing module named grp - imported by shutil (delayed, optional), tarfile (optional), pathlib._local (optional), subprocess (delayed, conditional, optional), setuptools._vendor.backports.tarfile (optional), setuptools._distutils.archive_util (optional)
|
||||
missing module named _posixsubprocess - imported by subprocess (conditional), multiprocessing.util (delayed)
|
||||
missing module named fcntl - imported by subprocess (optional), _pyrepl.unix_console (top-level)
|
||||
missing module named _manylinux - imported by packaging._manylinux (delayed, optional), setuptools._vendor.packaging._manylinux (delayed, optional), setuptools._vendor.wheel.vendored.packaging._manylinux (delayed, optional)
|
||||
missing module named posix - imported by os (conditional, optional), posixpath (optional), shutil (conditional), importlib._bootstrap_external (conditional), _pyrepl.unix_console (delayed, optional)
|
||||
missing module named resource - imported by posix (top-level)
|
||||
missing module named _frozen_importlib_external - imported by importlib._bootstrap (delayed), importlib (optional), importlib.abc (optional), zipimport (top-level)
|
||||
missing module named typing_extensions.TypeAlias - imported by setuptools._vendor.typing_extensions (top-level), setuptools._distutils.compilers.C.base (conditional), setuptools._reqs (conditional), setuptools.warnings (conditional), setuptools._path (conditional), setuptools._distutils.dist (conditional), setuptools.config.setupcfg (conditional), setuptools.config._apply_pyprojecttoml (conditional), setuptools.dist (conditional), pkg_resources (conditional), setuptools.command.bdist_egg (conditional), setuptools.compat.py311 (conditional)
|
||||
missing module named typing_extensions.Self - imported by setuptools._vendor.typing_extensions (top-level), setuptools.config.expand (conditional), setuptools.config.pyprojecttoml (conditional), setuptools.config._validate_pyproject.error_reporting (conditional), pkg_resources (conditional)
|
||||
missing module named asyncio.DefaultEventLoopPolicy - imported by asyncio (delayed, conditional), asyncio.events (delayed, conditional)
|
||||
missing module named _posixshmem - imported by multiprocessing.resource_tracker (conditional), multiprocessing.shared_memory (conditional)
|
||||
missing module named multiprocessing.set_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
||||
missing module named multiprocessing.get_start_method - imported by multiprocessing (top-level), multiprocessing.spawn (top-level)
|
||||
missing module named multiprocessing.get_context - imported by multiprocessing (top-level), multiprocessing.pool (top-level), multiprocessing.managers (top-level), multiprocessing.sharedctypes (top-level)
|
||||
missing module named multiprocessing.TimeoutError - imported by multiprocessing (top-level), multiprocessing.pool (top-level)
|
||||
missing module named _scproxy - imported by urllib.request (conditional)
|
||||
missing module named termios - imported by getpass (optional), tty (top-level), _pyrepl.pager (delayed, optional), _pyrepl.unix_console (top-level), _pyrepl.fancy_termios (top-level), _pyrepl.unix_eventqueue (top-level)
|
||||
missing module named multiprocessing.BufferTooShort - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
|
||||
missing module named multiprocessing.AuthenticationError - imported by multiprocessing (top-level), multiprocessing.connection (top-level)
|
||||
missing module named usercustomize - imported by site (delayed, optional)
|
||||
missing module named sitecustomize - imported by site (delayed, optional)
|
||||
missing module named _curses - imported by curses (top-level), curses.has_key (top-level), _pyrepl.curses (optional)
|
||||
missing module named readline - imported by site (delayed, optional), rlcompleter (optional), code (delayed, conditional, optional)
|
||||
missing module named trove_classifiers - imported by setuptools.config._validate_pyproject.formats (optional)
|
||||
missing module named typing_extensions.Buffer - imported by setuptools._vendor.typing_extensions (top-level), setuptools._vendor.wheel.wheelfile (conditional)
|
||||
missing module named typing_extensions.Literal - imported by setuptools._vendor.typing_extensions (top-level), setuptools.config._validate_pyproject.formats (conditional)
|
||||
missing module named typing_extensions.deprecated - imported by setuptools._vendor.typing_extensions (top-level), setuptools._distutils.sysconfig (conditional), setuptools._distutils.command.bdist (conditional)
|
||||
missing module named typing_extensions.Unpack - imported by setuptools._vendor.typing_extensions (top-level), setuptools._distutils.util (conditional), setuptools._distutils.compilers.C.base (conditional), setuptools._distutils.cmd (conditional)
|
||||
missing module named typing_extensions.TypeVarTuple - imported by setuptools._vendor.typing_extensions (top-level), setuptools._distutils.util (conditional), setuptools._distutils.compilers.C.base (conditional), setuptools._distutils.cmd (conditional)
|
||||
missing module named '_typeshed.importlib' - imported by pkg_resources (conditional)
|
||||
missing module named _typeshed - imported by setuptools._distutils.dist (conditional), pkg_resources (conditional), setuptools.glob (conditional), setuptools.compat.py311 (conditional), git.objects.fun (conditional)
|
||||
missing module named jnius - imported by setuptools._vendor.platformdirs.android (delayed, conditional, optional)
|
||||
missing module named android - imported by setuptools._vendor.platformdirs.android (delayed, conditional, optional)
|
||||
missing module named importlib_resources - imported by setuptools._vendor.jaraco.text (optional)
|
||||
missing module named 'collections.abc' - imported by traceback (top-level), inspect (top-level), logging (top-level), typing (top-level), importlib.resources.readers (top-level), selectors (top-level), tracemalloc (top-level), setuptools (top-level), setuptools._distutils.filelist (top-level), setuptools._distutils.util (top-level), setuptools._vendor.jaraco.functools (top-level), setuptools._vendor.more_itertools.more (top-level), setuptools._vendor.more_itertools.recipes (top-level), setuptools._distutils._modified (top-level), setuptools._distutils.compat (top-level), setuptools._distutils.spawn (top-level), setuptools._distutils.compilers.C.base (top-level), setuptools._distutils.fancy_getopt (top-level), setuptools._reqs (top-level), http.client (top-level), setuptools.discovery (top-level), setuptools.dist (top-level), setuptools._distutils.command.bdist (top-level), setuptools._distutils.core (top-level), setuptools._distutils.cmd (top-level), setuptools._distutils.dist (top-level), configparser (top-level), setuptools._distutils.extension (top-level), setuptools.config.setupcfg (top-level), setuptools.config.expand (top-level), setuptools.config.pyprojecttoml (top-level), setuptools.config._apply_pyprojecttoml (top-level), tomllib._parser (top-level), setuptools._vendor.tomli._parser (top-level), pkg_resources (top-level), setuptools._vendor.platformdirs.windows (conditional), setuptools.command.egg_info (top-level), setuptools._distutils.command.build (top-level), setuptools._distutils.command.sdist (top-level), setuptools.glob (top-level), setuptools.command._requirestxt (top-level), setuptools.command.bdist_wheel (top-level), setuptools._vendor.wheel.cli.convert (top-level), setuptools._vendor.wheel.cli.tags (top-level), setuptools._vendor.typing_extensions (top-level), asyncio.base_events (top-level), asyncio.coroutines (top-level), setuptools._distutils.command.build_ext (top-level), _pyrepl.types (top-level), _pyrepl.readline (top-level), setuptools._distutils.compilers.C.msvc (top-level)
|
||||
excluded module named _frozen_importlib - imported by importlib (optional), importlib.abc (optional), zipimport (top-level)
|
||||
missing module named vms_lib - imported by platform (delayed, optional)
|
||||
missing module named 'java.lang' - imported by platform (delayed, optional)
|
||||
missing module named java - imported by platform (delayed)
|
||||
missing module named _suggestions - imported by traceback (delayed, optional)
|
||||
missing module named gitdb_speedups - imported by gitdb.fun (optional)
|
||||
missing module named 'gitdb_speedups._perf' - imported by gitdb.stream (optional), gitdb.pack (optional)
|
||||
missing module named sha - imported by gitdb.util (delayed, optional)
|
21252
build/MRobot/xref-MRobot.html
Normal file
21252
build/MRobot/xref-MRobot.html
Normal file
File diff suppressed because it is too large
Load Diff
BIN
dist/MRobot.exe
vendored
Normal file
BIN
dist/MRobot.exe
vendored
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user