os_ver.c

本文提供了一个简单的C程序示例,该程序使用_dos.h_库来打印操作系统的主版本号和次版本号。通过调用_osmajor和_osminor宏,程序能够准确地获取并显示当前运行的操作系统版本。

  name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1194442938015&lmt=1194190197&format=336x280_as&output=html&correlator=1194442937843&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2Flhh1%2F%E6%A1%8C%E9%9D%A2%2FCLanguage.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=583001034.1194442938&ga_sid=1194442938&ga_hid=1942779085&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> #include <stdio.h>
#include <dos.h>

void main(void)
 {
   printf("Operating system version number %d.%d/n",
    _osmajor, _osminor);
  
   printf("Operating system version number %d.%d/n",
    _version & 255, _version >> 8);
 }

 

[1/10] Building CXX object esp-idf/OLED/CMakeFiles/__idf_OLED.dir/OLED.C.obj FAILED: esp-idf/OLED/CMakeFiles/__idf_OLED.dir/OLED.C.obj ccache C:\esp32\Espressif\tools\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32s3-elf-g++.exe -DESP_PLATFORM -DIDF_VER=\"v5.5.1-dirty\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -D_GLIBCXX_HAVE_POSIX_SEMAPHORE -D_GLIBCXX_USE_POSIX_SEMAPHORE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -ID:/ESP32/1/build/config -ID:/ESP32/1/components/OLED -IC:/esp32/v5.5.1/esp-idf/components/newlib/platform_include -IC:/esp32/v5.5.1/esp-idf/components/freertos/config/include -IC:/esp32/v5.5.1/esp-idf/components/freertos/config/include/freertos -IC:/esp32/v5.5.1/esp-idf/components/freertos/config/xtensa/include -IC:/esp32/v5.5.1/esp-idf/components/freertos/FreeRTOS-Kernel/include -IC:/esp32/v5.5.1/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -IC:/esp32/v5.5.1/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include/freertos -IC:/esp32/v5.5.1/esp-idf/components/freertos/esp_additions/include -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/include -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/include/soc -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/include/soc/esp32s3 -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/dma/include -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/ldo/include -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/debug_probe/include -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/mspi_timing_tuning/include -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/mspi_timing_tuning/tuning_scheme_impl/include -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/power_supply/include -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/port/esp32s3/. -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/port/esp32s3/include -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/mspi_timing_tuning/port/esp32s3/. -IC:/esp32/v5.5.1/esp-idf/components/esp_hw_support/mspi_timing_tuning/port/esp32s3/include -IC:/esp32/v5.5.1/esp-idf/components/heap/include -IC:/esp32/v5.5.1/esp-idf/components/heap/tlsf -IC:/esp32/v5.5.1/esp-idf/components/log/include -IC:/esp32/v5.5.1/esp-idf/components/soc/include -IC:/esp32/v5.5.1/esp-idf/components/soc/esp32s3 -IC:/esp32/v5.5.1/esp-idf/components/soc/esp32s3/include -IC:/esp32/v5.5.1/esp-idf/components/soc/esp32s3/register -IC:/esp32/v5.5.1/esp-idf/components/hal/platform_port/include -IC:/esp32/v5.5.1/esp-idf/components/hal/esp32s3/include -IC:/esp32/v5.5.1/esp-idf/components/hal/include -IC:/esp32/v5.5.1/esp-idf/components/esp_rom/include -IC:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/include -IC:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/include/esp32s3 -IC:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3 -IC:/esp32/v5.5.1/esp-idf/components/esp_common/include -IC:/esp32/v5.5.1/esp-idf/components/esp_system/include -IC:/esp32/v5.5.1/esp-idf/components/esp_system/port/soc -IC:/esp32/v5.5.1/esp-idf/components/esp_system/port/include/private -IC:/esp32/v5.5.1/esp-idf/components/xtensa/esp32s3/include -IC:/esp32/v5.5.1/esp-idf/components/xtensa/include -IC:/esp32/v5.5.1/esp-idf/components/xtensa/deprecated_include -IC:/esp32/v5.5.1/esp-idf/components/lwip/include -IC:/esp32/v5.5.1/esp-idf/components/lwip/include/apps -IC:/esp32/v5.5.1/esp-idf/components/lwip/include/apps/sntp -IC:/esp32/v5.5.1/esp-idf/components/lwip/lwip/src/include -IC:/esp32/v5.5.1/esp-idf/components/lwip/port/include -IC:/esp32/v5.5.1/esp-idf/components/lwip/port/freertos/include -IC:/esp32/v5.5.1/esp-idf/components/lwip/port/esp32xx/include -IC:/esp32/v5.5.1/esp-idf/components/lwip/port/esp32xx/include/arch -IC:/esp32/v5.5.1/esp-idf/components/lwip/port/esp32xx/include/sys -IC:/esp32/v5.5.1/esp-idf/components/driver/deprecated -IC:/esp32/v5.5.1/esp-idf/components/driver/i2c/include -IC:/esp32/v5.5.1/esp-idf/components/driver/touch_sensor/include -IC:/esp32/v5.5.1/esp-idf/components/driver/twai/include -IC:/esp32/v5.5.1/esp-idf/components/driver/touch_sensor/esp32s3/include -IC:/esp32/v5.5.1/esp-idf/components/esp_pm/include -IC:/esp32/v5.5.1/esp-idf/components/esp_ringbuf/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_gpio/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_pcnt/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_gptimer/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_spi/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_mcpwm/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_ana_cmpr/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_i2s/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_sdmmc/include -IC:/esp32/v5.5.1/esp-idf/components/sdmmc/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_sdspi/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_sdio/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_dac/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_rmt/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_tsens/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_sdm/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_i2c/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_uart/include -IC:/esp32/v5.5.1/esp-idf/components/vfs/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_ledc/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_parlio/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_usb_serial_jtag/include -IC:/esp32/v5.5.1/esp-idf/components/esp_driver_twai/include -mlongcalls -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-error=extra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -O0 -fmacro-prefix-map=D:/ESP32/1=. -fmacro-prefix-map=C:/esp32/v5.5.1/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -std=gnu++2b -fno-exceptions -fno-rtti -fuse-cxa-atexit -MD -MT esp-idf/OLED/CMakeFiles/__idf_OLED.dir/OLED.C.obj -MF esp-idf\OLED\CMakeFiles\__idf_OLED.dir\OLED.C.obj.d -o esp-idf/OLED/CMakeFiles/__idf_OLED.dir/OLED.C.obj -c D:/ESP32/1/components/OLED/OLED.C In file included from D:/ESP32/1/components/OLED/OLED.C:20: D:/ESP32/1/components/OLED/OLED.C: In function 'void I2C_Init()': D:/ESP32/1/components/OLED/OLED.h:26:13: error: invalid conversion from 'int' to 'gpio_num_t' [-fpermissive] 26 | #define SDA 5 | ^ | | | int D:/ESP32/1/components/OLED/OLED.C:98:31: note: in expansion of macro 'SDA' 98 | .sda_io_num = SDA, //鎸囧畾SDA寮曡剼鍙? | ^~~ D:/ESP32/1/components/OLED/OLED.h:25:13: error: invalid conversion from 'int' to 'gpio_num_t' [-fpermissive] 25 | #define SCL 4 | ^ | | | int D:/ESP32/1/components/OLED/OLED.C:99:31: note: in expansion of macro 'SCL' 99 | .scl_io_num = SCL, //鎸囧畾SCL寮曡剼鍙? | ^~~ D:/ESP32/1/components/OLED/OLED.C:103:5: warning: missing initializer for member 'i2c_master_bus_config_t::intr_priority' -Wmissing-field-initializers] 103 | }; | ^ D:/ESP32/1/components/OLED/OLED.C:103:5: warning: missing initializer for member 'i2c_master_bus_config_t::trans_queue_depth' [-Wmissing-field-initializers] D:/ESP32/1/components/OLED/OLED.C:103:5: warning: missing initializer for member 'i2c_master_bus_config_t::<unnamed struct>::allow_pd' [-Wmissing-field-initializers] D:/ESP32/1/components/OLED/OLED.C:115:5: warning: missing initializer for member 'i2c_device_config_t::scl_wait_us' [-Wmissing-field-initializers] 2/10] Performing build step for 'bootloader' [1/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/util.c.obj [2/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/util.c.obj [3/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_lock.c.obj [4/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_crc.c.obj [5/123] Building ASM object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_longjmp.S.obj [6/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_timestamp_common.c.obj [7/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_print.c.obj [8/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_timestamp.c.obj [9/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_format_text.c.obj [10/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log.c.obj [11/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_efuse.c.obj [12/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_sys.c.obj [13/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_systimer.c.obj [14/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/buffer/log_buffers.c.obj [15/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_gpio.c.obj [16/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_spiflash.c.obj [17/123] Building ASM object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_cache_writeback_esp32s3.S.obj [18/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_uart.c.obj [19/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_print.c.obj [20/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_cache_esp32s2_esp32s3.c.obj [21/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_wdt.c.obj [22/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/cpu_region_protect.c.obj [23/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/esp_cpu_intr.c.obj [24/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/esp_memory_utils.c.obj [25/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/cpu.c.obj [26/123] Building C object esp-idf/esp_common/CMakeFiles/__idf_esp_common.dir/src/esp_err_to_name.c.obj [27/123] Linking C static library esp-idf\log\liblog.a [28/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_table.c.obj [29/123] Building C object esp-idf/esp_system/CMakeFiles/__idf_esp_system.dir/esp_err.c.obj [30/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/chip_info.c.obj [31/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_clk_init.c.obj [32/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_fields.c.obj [33/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_sleep.c.obj [34/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_rtc_calib.c.obj [35/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_time.c.obj [36/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_utility.c.obj [37/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_init.c.obj [38/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_clk.c.obj [39/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_api.c.obj [40/123] Linking C static library esp-idf\esp_rom\libesp_rom.a [41/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_fields.c.obj [42/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_utility.c.obj [43/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/efuse_controller/keys/with_key_purposes/esp_efuse_api_key.c.obj [44/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_mem.c.obj [45/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random.c.obj [46/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_init.c.obj [47/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common_loader.c.obj [48/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_efuse.c.obj [49/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random_esp32s3.c.obj [50/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/secure_boot.c.obj [51/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common.c.obj [52/123] Linking C static library esp-idf\esp_common\libesp_common.a [53/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_partitions.c.obj [54/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_encrypt.c.obj [55/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_loader.c.obj [56/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/flash_qio_mode.c.obj [57/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_sha.c.obj [58/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash_config_esp32s3.c.obj [59/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash.c.obj [60/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32s3/bootloader_soc.c.obj [61/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console_loader.c.obj [62/123] Building C object esp-idf/esp_bootloader_format/CMakeFiles/__idf_esp_bootloader_format.dir/esp_bootloader_desc.c.obj [63/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/hal_utils.c.obj [64/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console.c.obj [65/123] Linking C static library esp-idf\esp_hw_support\libesp_hw_support.a [66/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mpu_hal.c.obj [67/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_panic.c.obj [68/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/dport_access_common.c.obj [69/123] Building C object esp-idf/spi_flash/CMakeFiles/__idf_spi_flash.dir/spi_flash_wrap.c.obj [70/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/efuse_hal.c.obj [71/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/lldesc.c.obj [72/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_init.c.obj [73/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp_image_format.c.obj [74/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/esp32s3/efuse_hal.c.obj [75/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/gpio_periph.c.obj [76/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/interrupts.c.obj [77/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_utility.c.obj [78/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mmu_hal.c.obj [79/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/cache_hal.c.obj [80/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/adc_periph.c.obj [81/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/uart_periph.c.obj [82/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32s3/bootloader_esp32s3.c.obj [83/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/gdma_periph.c.obj [84/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/dedic_gpio_periph.c.obj [85/123] Linking C static library esp-idf\esp_system\libesp_system.a [86/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/ledc_periph.c.obj [87/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/sdm_periph.c.obj [88/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/spi_periph.c.obj [89/123] Building C object esp-idf/micro-ecc/CMakeFiles/__idf_micro-ecc.dir/uECC_verify_antifault.c.obj [90/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/rmt_periph.c.obj [91/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/i2c_periph.c.obj [92/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/pcnt_periph.c.obj [93/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/i2s_periph.c.obj [94/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/temperature_sensor_periph.c.obj [95/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/lcd_periph.c.obj [96/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/timer_periph.c.obj [97/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/touch_sensor_periph.c.obj [98/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/mcpwm_periph.c.obj [99/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/twai_periph.c.obj [100/123] Generating project_elf_src_esp32s3.c [101/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/mpi_periph.c.obj [102/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/sdmmc_periph.c.obj [103/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/usb_dwc_periph.c.obj [104/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/wdt_periph.c.obj [105/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/cam_periph.c.obj [106/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/power_supply_periph.c.obj [107/123] Building C object esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/eri.c.obj [108/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/rtc_io_periph.c.obj [109/123] Linking C static library esp-idf\efuse\libefuse.a [110/123] Building C object CMakeFiles/bootloader.elf.dir/project_elf_src_esp32s3.c.obj [111/123] Building C object esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/xt_trax.c.obj [112/123] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/bootloader_start.c.obj [113/123] Linking C static library esp-idf\bootloader_support\libbootloader_support.a [114/123] Linking C static library esp-idf\esp_bootloader_format\libesp_bootloader_format.a [115/123] Linking C static library esp-idf\spi_flash\libspi_flash.a [116/123] Linking C static library esp-idf\hal\libhal.a [117/123] Linking C static library esp-idf\micro-ecc\libmicro-ecc.a [118/123] Linking C static library esp-idf\soc\libsoc.a [119/123] Linking C static library esp-idf\xtensa\libxtensa.a [120/123] Linking C static library esp-idf\main\libmain.a [121/123] Linking C executable bootloader.elf [122/123] Generating binary image from built executable esptool.py v4.10.0 Creating esp32s3 image... Merged 2 ELF sections Successfully created esp32s3 image. Generated D:/ESP32/1/build/bootloader/bootloader.bin [123/123] C:\WINDOWS\system32\cmd.exe /C "cd /D D:\ESP32\1\build\bootloader\esp-idf\esptool_py && c:\esp32\Espressif\tools\python_env\idf5.5_py3.11_env\Scripts\python.exe C:/esp32/v5.5.1/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 D:/ESP32/1/build/bootloader/bootloader.bin" Bootloader binary size 0x5240 bytes. 0x2dc0 bytes (36%) free. ninja: build stopped: subcommand failed.
11-26
[129/615] AR libs/libbegetutil_static.a FAILED: libs/libbegetutil_static.a ccache riscv32-linux-musl-ar cr libs/libbegetutil_static.a @"libs/libbegetutil_static.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [130/615] gcc CXX obj/base/hiviewdfx/hilog_lite/frameworks/featured/libhilog_static.hilog.o FAILED: obj/base/hiviewdfx/hilog_lite/frameworks/featured/libhilog_static.hilog.o ccache riscv32-linux-musl-g++ -D_XOPEN_SOURCE=700 -DOHOS_DEBUG -D__LITEOS__ -D__LITEOS_M__ -I../../../commonlibrary/utils_lite/include -I../../../device/soc/hisilicon/ws63v100/sdk/include -I../../../device/soc/hisilicon/ws63v100/sdk/include/driver -I../../../device/soc/hisilicon/ws63v100/sdk/include/middleware/utils -I../../../device/soc/hisilicon/ws63v100/sdk/middleware/chips/ws63/update/include -I../../../device/soc/hisilicon/ws63v100/sdk/middleware/chips/ws63/partition/include -I../../../device/soc/hisilicon/ws63v100/sdk/middleware/chips/ws63/littlefs -I../../../device/soc/hisilicon/ws63v100/sdk/middleware/utils/update/inner_include -I../../../device/soc/hisilicon/ws63v100/sdk/middleware/utils/common_headers -I../../../device/soc/hisilicon/ws63v100/sdk/drivers/chips/ws63/include -I../../../device/soc/hisilicon/ws63v100/sdk/drivers/boards/ws63/evb/memory_config/include/product -I../../../device/soc/hisilicon/ws63v100/sdk/open_source/lwip/lwip_v2.1.3/src/include -I../../../device/soc/hisilicon/ws63v100/sdk/open_source/lwip/lwip_adapter/liteos_207/src/include -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/kernel/include -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/compat/linux/include -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/platform/libsec/include -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/osal/include/lock -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/open_source/musl/include -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/osal/include/schedule -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/open_source/musl/arch/generic -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/open_source/musl/arch/riscv32 -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/lib/liteos_libc/include -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/drivers/interrupt/include -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/drivers/timer/include -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/targets/ws63/include -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/arch/riscv/include -I../../../kernel/liteos_m/utils -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/compat/cmsis -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/kernel/base/include -I../../../device/soc/hisilicon/ws63v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/open_source/CMSIS/CMSIS/RTOS2/Include -I../../../base/hiviewdfx/hilog_lite/interfaces/native/innerkits/hilog -I../../../base/hiviewdfx/hilog_lite/interfaces/native/innerkits -I../../../third_party/bounds_checking_function/include -Os -mabi=ilp32f -falign-functions=2 -msave-restore -fno-optimize-strlen -freorder-blocks-algorithm=simple -fno-schedule-insns -fno-inline-small-functions -fno-inline-functions-called-once -mtune=size -mno-small-data-limit=0 -fno-aggressive-loop-optimizations -std=c99 -Wpointer-arith -Wstrict-prototypes -ffunction-sections -fdata-sections -fno-exceptions -fshort-enums -Wextra -Wundef -U PRODUCT_CFG_BUILD_TIME -D__LITEOS__ -DCMSIS_OS_VER=2 -DLOSCFG_COMPAT_CMSIS_VER_2 -DCHIP_WS63=1 -DLOSCFG_XTS_SUPPORT -DLWIP_CONFIG_FILE=\"lwip/lwipopts_default.h\" -march=rv32imfc -fno-common -fno-builtin -fno-strict-aliasing -Wall -fstack-protector-all -std=c++11 -mabi=ilp32f -falign-functions=2 -msave-restore -fno-optimize-strlen -freorder-blocks-algorithm=simple -fno-schedule-insns -fno-inline-small-functions -fno-inline-functions-called-once -mtune=size -mno-small-data-limit=0 -fno-aggressive-loop-optimizations -std=c99 -Wpointer-arith -Wstrict-prototypes -ffunction-sections -fdata-sections -fno-exceptions -fshort-enums -Wextra -Wundef -U PRODUCT_CFG_BUILD_TIME -D__LITEOS__ -DCMSIS_OS_VER=2 -DLOSCFG_COMPAT_CMSIS_VER_2 -DCHIP_WS63=1 -DLOSCFG_XTS_SUPPORT -DLWIP_CONFIG_FILE=\"lwip/lwipopts_default.h\" -c ../../../base/hiviewdfx/hilog_lite/frameworks/featured/hilog.cpp -o obj/base/hiviewdfx/hilog_lite/frameworks/featured/libhilog_static.hilog.o ccache: error: Could not find compiler "riscv32-linux-musl-g++" in PATH [131/615] AR libs/libblackbox_lite.a FAILED: libs/libblackbox_lite.a ccache riscv32-linux-musl-ar cr libs/libblackbox_lite.a @"libs/libblackbox_lite.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [132/615] AR libs/libinit_log.a FAILED: libs/libinit_log.a ccache riscv32-linux-musl-ar cr libs/libinit_log.a @"libs/libinit_log.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [133/615] AR libs/libexport_headers_lib.a FAILED: libs/libexport_headers_lib.a ccache riscv32-linux-musl-ar cr libs/libexport_headers_lib.a @"libs/libexport_headers_lib.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [134/615] AR libs/libhidumper_mini.a FAILED: libs/libhidumper_mini.a ccache riscv32-linux-musl-ar cr libs/libhidumper_mini.a @"libs/libhidumper_mini.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [135/615] AR libs/libinithook.a FAILED: libs/libinithook.a ccache riscv32-linux-musl-ar cr libs/libinithook.a @"libs/libinithook.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [136/615] AR libs/libpwm_servo_demo.a FAILED: libs/libpwm_servo_demo.a ccache riscv32-linux-musl-ar cr libs/libpwm_servo_demo.a @"libs/libpwm_servo_demo.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [137/615] AR libs/libhiview_lite_static.a FAILED: libs/libhiview_lite_static.a ccache riscv32-linux-musl-ar cr libs/libhiview_lite_static.a @"libs/libhiview_lite_static.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [139/615] AR libs/libparameterbase.a FAILED: libs/libparameterbase.a ccache riscv32-linux-musl-ar cr libs/libparameterbase.a @"libs/libparameterbase.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [140/615] AR libs/libinit_utils.a FAILED: libs/libinit_utils.a ccache riscv32-linux-musl-ar cr libs/libinit_utils.a @"libs/libinit_utils.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [141/615] AR libs/libparameterbase_noflto.a FAILED: libs/libparameterbase_noflto.a ccache riscv32-linux-musl-ar cr libs/libparameterbase_noflto.a @"libs/libparameterbase_noflto.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [143/615] AR libs/libfsmanager_static.a FAILED: libs/libfsmanager_static.a ccache riscv32-linux-musl-ar cr libs/libfsmanager_static.a @"libs/libfsmanager_static.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [144/615] AR libs/libhal_sys_param.a FAILED: libs/libhal_sys_param.a ccache riscv32-linux-musl-ar cr libs/libhal_sys_param.a @"libs/libhal_sys_param.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH [145/615] AR libs/libfsmanager_static_real.a FAILED: libs/libfsmanager_static_real.a ccache riscv32-linux-musl-ar cr libs/libfsmanager_static_real.a @"libs/libfsmanager_static_real.a.rsp" ccache: error: Could not find compiler "riscv32-linux-musl-ar" in PATH
11-03
. ├── cliff_distance_measurement │ ├── CMakeLists.txt │ ├── include │ │ └── cliff_distance_measurement │ ├── package.xml │ └── src │ ├── core │ ├── ir_ranging.cpp │ └── platform ├── robot_cartographer │ ├── config │ │ └── fishbot_2d.lua │ ├── map │ │ ├── fishbot_map.pgm │ │ └── fishbot_map.yaml │ ├── package.xml │ ├── readme.md │ ├── resource │ │ └── robot_cartographer │ ├── robot_cartographer │ │ ├── __init__.py │ │ └── robot_cartographer.py │ ├── rviz │ ├── setup.cfg │ └── setup.py ├── robot_control_service │ ├── bash │ │ └── pwm_control_setup.sh │ ├── CMakeLists.txt │ ├── config │ │ └── control_params.yaml │ ├── include │ │ └── robot_control_service │ ├── package.xml │ ├── readme.md │ └── src │ ├── control_client_camera.cpp │ ├── control_client_cliff.cpp │ ├── control_client_ir.cpp │ ├── control_client_ir_four.cpp │ ├── control_client_master.cpp │ ├── control_client_ros.cpp │ ├── control_client_ultrasonic.cpp │ ├── control_service.cpp │ ├── DirectMotorControl.cpp │ ├── PIDControl.cpp │ ├── publisher_control_view.cpp │ └── publisher_human_realized.cpp ├── robot_control_view │ ├── config │ │ └── icare_robot.rviz │ ├── __init__.py │ ├── launch │ │ └── start_init_view.launch.py │ ├── package.xml │ ├── resource │ │ └── robot_control_view │ ├── robot_control_view │ │ ├── app │ │ ├── blood_oxygen_pulse │ │ ├── __init__.py │ │ ├── __pycache__ │ │ ├── robot_automatic_cruise_server.py │ │ ├── robot_automatic_recharge_server.py │ │ ├── robot_automatic_slam_server.py │ │ ├── robot_blood_oxygen_pulse.py │ │ ├── robot_city_locator_node.py │ │ ├── robot_control_policy_server.py │ │ ├── robot_local_websocket.py │ │ ├── robot_log_clear_node.py │ │ ├── robot_main_back_server.py │ │ ├── robot_network_publisher.py │ │ ├── robot_network_server.py │ │ ├── robot_odom_publisher.py │ │ ├── robot_speech_server.py │ │ ├── robot_system_info_node.py │ │ ├── robot_ultrasonic_policy_node.py │ │ ├── robot_view_manager_node.py │ │ ├── robot_websockets_client.py │ │ ├── robot_websockets_server.py │ │ ├── robot_wifi_server_node.py │ │ ├── start_account_view.py │ │ ├── start_bluetooth_view.py │ │ ├── start_chat_view.py │ │ ├── start_clock_view.py │ │ ├── start_feedback_view.py │ │ ├── start_health_view.py │ │ ├── start_init_view.py │ │ ├── start_lifecycle_view.py │ │ ├── start_main_view.py │ │ ├── start_member_view.py │ │ ├── start_movie_view.py │ │ ├── start_music_view.py │ │ ├── start_radio_view.py │ │ ├── start_schedule_view.py │ │ ├── start_setting_view.py │ │ ├── start_test_view.py │ │ ├── start_view_manager.py │ │ ├── start_weather_view.py │ │ └── start_wifi_view.py │ ├── setup.cfg │ ├── setup.py │ ├── test │ │ ├── my_test.py │ │ ├── test_copyright.py │ │ ├── test_flake8.py │ │ └── test_pep257.py │ └── urdf │ ├── first_robot.urdf.xacro │ ├── fishbot.urdf │ ├── fishbot.urdf.xacro │ ├── fist_robot.urdf │ ├── icare_robot.urdf │ ├── icare_robot.urdf.xacro │ ├── ramand.md │ └── xacro_template.xacro ├── robot_costmap_filters │ ├── CMakeLists.txt │ ├── include │ │ └── robot_costmap_filters │ ├── launch │ │ ├── start_costmap_filter_info_keepout.launch.py │ │ ├── start_costmap_filter_info.launch.py │ │ └── start_costmap_filter_info_speedlimit.launch.py │ ├── package.xml │ ├── params │ │ ├── filter_info.yaml │ │ ├── filter_masks.yaml │ │ ├── keepout_mask.pgm │ │ ├── keepout_mask.yaml │ │ ├── keepout_params.yaml │ │ ├── speedlimit_params.yaml │ │ ├── speed_mask.pgm │ │ └── speed_mask.yaml │ ├── readme.md │ └── src ├── robot_description │ ├── launch │ │ └── gazebo.launch.py │ ├── package.xml │ ├── readme.md │ ├── resource │ │ └── robot_description │ ├── robot_description │ │ └── __init__.py │ ├── rviz │ │ └── urdf_config.rviz │ ├── setup.cfg │ ├── setup.py │ ├── urdf │ │ ├── fishbot_gazebo.urdf │ │ ├── fishbot_v0.0.urdf │ │ ├── fishbot_v1.0.0.urdf │ │ ├── test.urdf │ │ └── three_wheeled_car_model.urdf │ └── worlds │ └── empty_world.world ├── robot_interfaces │ ├── CMakeLists.txt │ ├── include │ │ └── robot_interfaces │ ├── msg │ │ ├── AlarmClockMsg.msg │ │ ├── CameraMark.msg │ │ ├── DualRange.msg │ │ ├── HuoerSpeed.msg │ │ ├── IrSensorArray.msg │ │ ├── IrSignal.msg │ │ ├── NavigatorResult.msg │ │ ├── NavigatorStatus.msg │ │ ├── NetworkDataMsg.msg │ │ ├── PoseData.msg │ │ ├── RobotSpeed.msg │ │ ├── SensorStatus.msg │ │ ├── TodayWeather.msg │ │ └── WifiDataMsg.msg │ ├── package.xml │ ├── readme.md │ ├── src │ └── srv │ ├── LightingControl.srv │ ├── MotorControl.srv │ ├── NewMotorControl.srv │ ├── SetGoal.srv │ ├── StringPair.srv │ ├── String.srv │ └── VoicePlayer.srv ├── robot_launch │ ├── config │ │ └── odom_imu_ekf.yaml │ ├── launch │ │ ├── start_all_base_sensor.launch.py │ │ ├── start_cartographer.launch.py │ │ ├── start_control_service.launch.py │ │ ├── start_navigation.launch.py │ │ ├── start_navigation_service.launch.py │ │ ├── start_navigation_speed_mask.launch.py │ │ ├── start_navigation_with_speed_and_keepout.launch.py │ │ ├── start_ros2.launch.py │ │ ├── test_camera_2.launch.py │ │ ├── test_camera.launch.py │ │ ├── test_car_model.launch.py │ │ ├── test_cliff.launch.py │ │ ├── test_ir.launch.py │ │ ├── test_self_checking.launch.py │ │ ├── test_video_multiplesing.launch.py │ │ └── test_visualization.launch.py │ ├── package.xml │ ├── readme.md │ ├── resource │ │ └── robot_launch │ ├── robot_launch │ │ └── __init__.py │ ├── setup.cfg │ └── setup.py ├── robot_navigation │ ├── config │ │ ├── nav2_filter.yaml │ │ ├── nav2_params.yaml │ │ └── nav2_speed_filter.yaml │ ├── maps │ │ ├── fishbot_map.pgm │ │ └── fishbot_map.yaml │ ├── package.xml │ ├── readme.md │ ├── resource │ │ └── robot_navigation │ ├── robot_navigation │ │ ├── __init__.py │ │ └── robot_navigation.py │ ├── setup.cfg │ └── setup.py ├── robot_navigation2_service │ ├── package.xml │ ├── readme.md │ ├── resource │ │ └── robot_navigation2_service │ ├── robot_navigation2_service │ │ ├── camera_follower_client.py │ │ ├── go_to_pose_service.py │ │ ├── __init__.py │ │ ├── leave_no_parking_zone_client_test_2.py │ │ ├── pose_init.py │ │ ├── real_time_point_client.py │ │ ├── recharge_point_client.py │ │ ├── repub_speed_filter_mask.py │ │ └── save_pose.py │ ├── setup.cfg │ └── setup.py ├── robot_sensor │ ├── bash │ │ └── isr_brushless.sh │ ├── CMakeLists.txt │ ├── config │ │ └── sensor_params.yaml │ ├── include │ │ └── robot_sensor │ ├── package.xml │ ├── readme.md │ └── src │ ├── robot_battery_state_publisher.cpp │ ├── robot_battery_voltage_publisher.cpp │ ├── robot_charging_status_publisher.cpp │ ├── robot_cliff_distance_publisher.cpp │ ├── robot_encode_speed_publisher.cpp │ ├── robot_imu_publisher.cpp │ ├── robot_ir_four_signal_publisher.cpp │ ├── robot_ir_signal_publisher.cpp │ ├── robot_keyboard_control_publisher.cpp │ ├── robot_lighting_control_server.cpp │ ├── robot_map_publisher.cpp │ ├── robot_odom_publisher.cpp │ ├── robot_smoke_alarm_publisher.cpp │ ├── robot_ultrasonic_publisher.cpp │ └── robot_wireless_alarm_publisher.cpp ├── robot_sensor_self_check │ ├── check_report │ │ ├── sensor_diagnostic_report_20250226_144435.json │ │ ├── sensor_diagnostic_report_20250226_144435.txt │ │ ├── sensor_diagnostic_report_20250226_144850.json │ │ ├── sensor_diagnostic_report_20250226_144850.txt │ │ ├── sensor_diagnostic_report_20250226_144927.json │ │ ├── sensor_diagnostic_report_20250226_144927.txt │ │ ├── sensor_diagnostic_report_20250226_144958.json │ │ └── sensor_diagnostic_report_20250226_144958.txt │ ├── config │ │ └── sensors_config.yaml │ ├── package.xml │ ├── resource │ │ └── robot_sensor_self_check │ ├── robot_sensor_self_check │ │ ├── __init__.py │ │ ├── robot_sensor_self_check.py │ │ └── test_topic.py │ ├── setup.cfg │ ├── setup.py │ └── test │ ├── test_copyright.py │ ├── test_flake8.py │ └── test_pep257.py ├── robot_visual_identity │ ├── cfg │ │ ├── nanotrack.yaml │ │ ├── rknnconfig.yaml │ │ └── stgcnpose.yaml │ ├── face_feature │ │ ├── mss_face_encoding.npy │ │ ├── wd_face_encoding.npy │ │ └── yls_face_encoding.npy │ ├── package.xml │ ├── resource │ │ ├── robot_visual_identity │ │ └── ros_rknn_infer │ ├── rknn_model │ │ ├── blood_detect.rknn │ │ ├── blood-seg-last-cbam.rknn │ │ ├── face_detect.rknn │ │ ├── face_emotion.rknn │ │ ├── face_keypoint.rknn │ │ ├── face_verify.rknn │ │ ├── head_detect.rknn │ │ ├── nanotrack_backbone127.rknn │ │ ├── nanotrack_backbone255.rknn │ │ ├── nanotrack_head.rknn │ │ ├── people_detect.rknn │ │ ├── stgcn_pose.rknn │ │ ├── yolo_kpt.rknn │ │ └── yolov8s-pose.rknn │ ├── robot_visual_identity │ │ ├── 人体跟随与避障控制系统文档.md │ │ ├── __init__.py │ │ ├── rknn_infer │ │ ├── robot_behavior_recognition.py │ │ ├── robot_emotion_recognition.py │ │ ├── robot_people_rgb_follow.py │ │ ├── robot_people_scan_follow.py │ │ └── robot_people_track.py │ ├── setup.cfg │ ├── setup.py │ └── test │ ├── test_copyright.py │ ├── test_flake8.py │ └── test_pep257.py ├── video_multiplexing │ ├── bash │ │ ├── test_config.linphonerc │ │ ├── test_video_stream.sh │ │ └── video_stream.pcap │ ├── COLCON_IGNORE │ ├── package.xml │ ├── resource │ │ └── video_multiplexing │ ├── setup.cfg │ ├── setup.py │ ├── test │ │ ├── test_copyright.py │ │ ├── test_flake8.py │ │ └── test_pep257.py │ └── video_multiplexing │ ├── __init__.py │ ├── __pycache__ │ ├── rtp_utils.py │ ├── video_freeswitch.py │ ├── video_linphone_bridge.py │ ├── video_publisher.py │ └── video_test_freeswitch.py └── ydlidar_ros2_driver-humble ├── CMakeLists.txt ├── config │ └── ydlidar.rviz ├── details.md ├── images │ ├── cmake_error.png │ ├── EAI.png │ ├── finished.png │ ├── rviz.png │ ├── view.png │ └── YDLidar.jpg ├── launch │ ├── ydlidar_launch.py │ ├── ydlidar_launch_view.py │ └── ydlidar.py ├── LICENSE.txt ├── package.xml ├── params │ └── TminiPro.yaml ├── README.md ├── src │ ├── ydlidar_ros2_driver_client.cpp │ └── ydlidar_ros2_driver_node.cpp └── startup └── initenv.sh 93 directories, 299 files 我的机器人ros2系统是有显示和主控页面的居家服务型移动机器人,用户点击下载更新就开始执行更新流程,整个系统更新功能应该怎么设计,在开发者应该编写哪些代码和做哪些准备,如何设计流程
07-21
class AudioFlashTool: def __init__(self, root): # 处理打包环境和开发环境 if getattr(sys, 'frozen', False): # 打包环境:资源位于临时目录(sys._MEIPASS) self.root_dir = sys._MEIPASS self.log_path = os.path.dirname(sys.executable) else: # 开发环境:当前脚本所在目录 self.root_dir = os.path.dirname(os.path.abspath(__file__)) self.log_path = os.path.dirname(os.path.abspath(__file__)) # 设置资源路径 self.config_file = os.path.join(self.root_dir, "config.json") self.ico_file = os.path.join(self.root_dir, "headphones.ico") self.devices_dir = os.path.join(self.root_dir, "devices_dir") self.flash_exe = os.path.join(self.root_dir, "HiAudioUploadTool.exe") self.export_exe = os.path.join(self.root_dir, "HiAudioGetLogTool.exe") self.puffer_flash_exe = os.path.join(self.root_dir, "puffer_upgrade_tool.exe") # 设置日志路径 self.log_dir = os.path.join(self.log_path, r"logs") self.tool_logs_dir = os.path.join(self.log_path, r"logs\tool_logs") self.audio_logs_dir = os.path.join(self.log_path, r"logs\audio_logs") # 设置编码格式 self.port_encoding = "utf-8" self.exe_encoding = "gbk" self.root = root self.root.title("音频设备刷机工具v2.0 作者:罗俊l60072836") # 设置初始窗口尺寸 self.window_width = 1100 self.window_height = 670 # 不允许缩小\放大窗口且居中显示 self.root.resizable(False, False) center_window(root, self.window_width, self.window_height) # 初始化设备选择状态变量 self.device_selection = { "charging_box": tk.BooleanVar(value=False), "left_ear": tk.BooleanVar(value=False), "right_ear": tk.BooleanVar(value=False) } # 创建主标签页 self.notebook = ttk.Notebook(root) self.notebook.pack(fill=BOTH, expand=True, padx=10, pady=10) # 创建主工作区标签页 self.main_tab = ttk.Frame(self.notebook) self.notebook.add(self.main_tab, text="工具页面") self.setup_main_tab() # 创建日志标签页 self.log_tab = ttk.Frame(self.notebook) self.notebook.add(self.log_tab, text="详细日志") self.setup_log_tab() # 初始化设备信息 self.device_info = { "charging_box": {"SN": "CB-2023-001", "内部版本": "v1.2.5", "外部版本": "v1.0", "MCU": "STM32F401"}, "left_ear": {"SN": "LE-2023-001", "内部版本": "v1.1.8", "外部版本": "v1.0", "MCU": "nRF52832"}, "right_ear": {"SN": "RE-2023-001", "内部版本": "v1.1.8", "外部版本": "v1.0", "MCU": "nRF52832"} } # 初始化设备状态 self.device_status = { "charging_box": False, "left_ear": False, "right_ear": False } def setup_main_tab(self): # 主内容区域 - 直接开始布局内容 main_frame = ttk.Frame(self.main_tab) main_frame.pack(fill=BOTH, expand=True, padx=10, pady=5) # 创建容器确保左右面板等高 equal_height_container = ttk.Frame(main_frame) equal_height_container.pack(fill=BOTH, expand=True) # 左面板 left_panel = ttk.Frame(equal_height_container) left_panel.pack(side=LEFT, fill=BOTH, padx=(0, 10)) # 右面板 right_panel = ttk.Frame(equal_height_container) right_panel.pack(side=RIGHT, fill=BOTH, expand=True) # ========== 左面板内容 ========== # 设备设置 conn_frame = ttk.Labelframe(left_panel, text="设备设置", padding=10) conn_frame.pack(fill=X, pady=(0, 10)) # 串口号选择 port_row = ttk.Frame(conn_frame) port_row.pack(fill=X, pady=5) ttk.Label(port_row, text="串口选择:").pack(side=LEFT, padx=(0, 5)) self.port_combobox = ttk.Combobox(port_row, width=20) self.port_combobox.pack(side=LEFT, padx=(0, 5), fill=X, expand=True) refresh_btn = ttk.Button( port_row, text="刷新", command=self.refresh_ports, width=4 ) refresh_btn.pack(side=LEFT) # 设备型号选择 model_row = ttk.Frame(conn_frame) model_row.pack(fill=X, pady=5) ttk.Label(model_row, text="设备型号:").pack(side=LEFT, padx=(0, 5)) self.model_combobox = ttk.Combobox( model_row, width=20, values=["TWS-1000", "TWS-2000 Pro", "TWS-3000 Max"] ) self.model_combobox.pack(side=LEFT, fill=X, expand=True) self.model_combobox.set("TWS-2000 Pro") # 设备名称显示 name_row = ttk.Frame(conn_frame) name_row.pack(fill=X, pady=5) ttk.Label(name_row, text="设备名称:").pack(side=LEFT, padx=(0, 5)) self.device_name = ttk.Label(name_row, text="TWS-2000 Pro") self.device_name.pack(side=LEFT) # 设备版本选择 version_row = ttk.Frame(conn_frame) version_row.pack(fill=X, pady=5) ttk.Label(version_row, text="设备版本:").pack(side=LEFT, padx=(0, 5)) self.version_combobox = ttk.Combobox( version_row, width=20, values=["v1.0.0", "v1.1.0", "v1.2.0", "v2.0.0"] ) self.version_combobox.pack(side=LEFT, fill=X, expand=True) self.version_combobox.set("v2.0.0") # 充电盒版本文件选择 box_file_row = ttk.Frame(conn_frame) box_file_row.pack(fill=X, pady=5) ttk.Label(box_file_row, text="充电盒版本文件:").pack(side=LEFT, padx=(0, 5)) self.box_file_entry = ttk.Entry(box_file_row, width=18) self.box_file_entry.pack(side=LEFT, fill=X, expand=True, padx=(0, 5)) self.box_file_entry.insert(0, r"内部文件\Conch-T010\5.0.0.126\box_end_userconch_mu0303_12.hi.dfu") box_browse_btn = ttk.Button( box_file_row, text="浏览", command=self.box_browse_file, bootstyle=SECONDARY, width=4 ) box_browse_btn.pack(side=LEFT) # 耳机版本文件选择 ears_file_row = ttk.Frame(conn_frame) ears_file_row.pack(fill=X, pady=5) ttk.Label(ears_file_row, text="耳机版本文件:").pack(side=LEFT, padx=(0, 5)) self.ears_file_entry = ttk.Entry(ears_file_row, width=18) self.ears_file_entry.pack(side=LEFT, fill=X, expand=True, padx=(0, 5)) self.ears_file_entry.insert(0, r"内部文件\Conch-T010\5.0.0.126\box_end_userconch_mu0303_12.hi.dfu") ears_browse_btn = ttk.Button( ears_file_row, text="浏览", command=self.box_browse_file, bootstyle=SECONDARY, width=4 ) ears_browse_btn.pack(side=LEFT) # 设备版本类型选择 type_row = ttk.Frame(conn_frame) type_row.pack(fill=X, pady=5) ttk.Label(type_row, text="版本类型:").pack(side=LEFT, padx=(0, 5)) self.type_combobox = ttk.Combobox( type_row, width=20, values=["正式版", "测试版", "调试版"] ) self.type_combobox.pack(side=LEFT, fill=X, expand=True) self.type_combobox.set("正式版") # 设备选择(使用勾选框) device_frame = ttk.Labelframe(left_panel, text="设备选择", padding=10) device_frame.pack(fill=X, pady=(0, 10)) # 创建容器放置三个勾选框在同一行 device_selection_row = ttk.Frame(device_frame) device_selection_row.pack(fill=X, pady=5) # 充电盒勾选框 ttk.Checkbutton( device_selection_row, text="充电盒", variable=self.device_selection["charging_box"] ).pack(side=LEFT, padx=10) # 左耳勾选框 ttk.Checkbutton( device_selection_row, text="左耳", variable=self.device_selection["left_ear"] ).pack(side=LEFT, padx=10) # 右耳勾选框 ttk.Checkbutton( device_selection_row, text="右耳", variable=self.device_selection["right_ear"] ).pack(side=LEFT, padx=10) # 功能选择按钮 func_frame = ttk.Labelframe(left_panel, text="功能选择按钮", padding=10) func_frame.pack(fill=X) ttk.Button( func_frame, text="开始连接设备", command=self.connect_device, bootstyle=SUCCESS, width=15 ).pack(fill=X, pady=5) ttk.Button( func_frame, text="执行设备刷机", command=self.flash_device, bootstyle=PRIMARY, width=15 ).pack(fill=X, pady=5) ttk.Button( func_frame, text="导出设备日志", command=self.export_logs, bootstyle=INFO, width=15 ).pack(fill=X, pady=5) ttk.Button( func_frame, text="日志目录查看", command=self.view_log_dir, bootstyle=SECONDARY, width=15 ).pack(fill=X, pady=5) # ========== 右面板内容 ========== # 设备信息展示 info_frame = ttk.Labelframe(right_panel, text="设备信息", padding=10) info_frame.pack(fill=X, pady=(0, 10)) # 设备信息表格 columns = ("部件", "SN信息", "内部版本", "外部版本", "MCU信息") # 创建样式并增大行高 style = ttk.Style() style.configure("Treeview", rowheight=35, padding=(0, 5, 0, 5)) # 增加行高50%(默认约为25) self.device_info_tree = ttk.Treeview( info_frame, columns=columns, show="headings", height=3, selectmode="browse", style="Treeview" # 应用新样式 ) # 设置列标题和宽度 for col in columns: self.device_info_tree.heading(col, text=col) self.device_info_tree.column(col, width=100, anchor=CENTER) # 添加设备信息 self.device_info_tree.insert("", "end", values=("充电盒", "", "", "", ""), tags=("charging_box",)) self.device_info_tree.insert("", "end", values=("左耳", "", "", "", ""), tags=("left_ear",)) self.device_info_tree.insert("", "end", values=("右耳", "", "", "", ""), tags=("right_ear",)) self.device_info_tree.pack(fill=X) # 添加右键菜单用于复制 self.context_menu = tk.Menu(self.root, tearoff=1) self.context_menu.add_command(label="复制", command=self.copy_cell_value) self.device_info_tree.bind("<Button-3>", self.show_context_menu) # 结果展示区域 result_frame = ttk.Labelframe(right_panel, text="结果展示", padding=10) result_frame.pack(fill=BOTH, expand=True, pady=(0, 10)) self.result_text = tk.Text(result_frame, height=6) self.result_text.pack(fill=BOTH, expand=True) self.result_text.insert(END, ">>> 系统启动成功\n") self.result_text.insert(END, ">>> 请选择串口并连接设备\n") self.result_text.config(state=DISABLED) # 清空按钮 clear_btn_frame = ttk.Frame(result_frame) clear_btn_frame.pack(fill=X, pady=(5, 0)) ttk.Button( clear_btn_frame, text="清空", command=self.clear_results, bootstyle=OUTLINE, width=5 ).pack(side=RIGHT) # 指令发送区域 cmd_frame = ttk.Labelframe(right_panel, text="指令发送", padding=10) cmd_frame.pack(fill=X) # 创建水平容器用于指令输入和按钮 cmd_container = ttk.Frame(cmd_frame) cmd_container.pack(fill=X, pady=5) # 命令输入框(左侧) self.cmd_entry = ttk.Entry(cmd_container) self.cmd_entry.pack(side=LEFT, fill=X, expand=True, padx=(0, 10)) self.cmd_entry.insert(0, "AT+INFO?") # 创建按钮容器(右侧) btn_container = ttk.Frame(cmd_container) btn_container.pack(side=RIGHT) # 发送和清空按钮(在按钮容器内从右向左排列) ttk.Button( btn_container, text="清空", command=self.clear_command, bootstyle=OUTLINE, width=5 ).pack(side=RIGHT, padx=(5, 0)) ttk.Button( btn_container, text="发送", command=self.send_command, bootstyle=PRIMARY, width=5 ).pack(side=RIGHT) def setup_log_tab(self): # 日志文本区域 log_frame = ttk.Frame(self.log_tab) log_frame.pack(fill=BOTH, expand=True, padx=10, pady=10) self.log_text = tk.Text(log_frame, wrap=WORD) self.log_text.pack(fill=BOTH, expand=True) # 添加滚动条 scrollbar = ttk.Scrollbar(log_frame, command=self.log_text.yview) scrollbar.pack(side=RIGHT, fill=Y) self.log_text.config(yscrollcommand=scrollbar.set) # 初始日志内容 self.log_text.insert(END, "=" * 50 + " 系统日志 " + "=" * 50 + "\n") self.log_text.insert(END, "[2023-11-15 14:25:10] 应用程序启动\n") self.log_text.insert(END, "[2023-11-15 14:25:12] 初始化串口模块\n") self.log_text.insert(END, "[2023-11-15 14:25:15] 加载设备配置文件\n") self.log_text.insert(END, "[2023-11-15 14:25:18] 初始化用户界面\n") self.log_text.insert(END, "[2023-11-15 14:25:20] 准备就绪\n") def refresh_ports(self): """刷新可用串口列表""" ports = [f"COM{i}" for i in range(1, 5)] self.port_combobox["values"] = ports if ports: self.port_combobox.set(ports[0]) self.append_result(f"发现串口: {', '.join(ports)}") else: self.port_combobox.set("") self.append_result("未发现可用串口") def box_browse_file(self): """浏览文件""" self.append_result("打开文件选择对话框") self.box_file_entry.delete(0, END) self.box_file_entry.insert(0, "firmware_v2.0.0.bin") def ears_browse_file(self): """浏览文件""" self.append_result("打开文件选择对话框") self.ears_file_entry.delete(0, END) self.ears_file_entry.insert(0, "firmware_v2.0.0.bin") def connect_device(self): """连接设备""" port = self.port_combobox.get() if not port: self.append_result("错误: 请选择串口") return threading.Thread(target=self._connect_device_thread, daemon=True).start() def _connect_device_thread(self): """设备连接线程""" port = self.port_combobox.get() self.append_result(f"正在连接设备 ({port})...") self.root.update() time.sleep(1.5) # 更新设备信息表格 for item in self.device_info_tree.get_children(): device = self.device_info_tree.item(item, "tags")[0] sn = self.device_info[device]["SN"] internal_ver = self.device_info[device]["内部版本"] external_ver = self.device_info[device]["外部版本"] mcu = self.device_info[device]["MCU"] status = "已连接" if random.random() > 0.3 else "未连接" self.device_status[device] = (status == "已连接") self.device_info_tree.item(item, values=( self.device_info_tree.item(item, "values")[0], f"{sn} ({status})", internal_ver, external_ver, mcu )) self.append_result("设备连接成功!") def flash_device(self): """执行设备刷机""" connected_devices = [device for device, connected in self.device_status.items() if connected] selected_devices = [device for device, selected in self.device_selection.items() if selected.get()] if not connected_devices: self.append_result("错误: 没有已连接的设备") return if not selected_devices: self.append_result("错误: 请选择至少一个设备") return threading.Thread(target=self._flash_device_thread, args=(selected_devices,), daemon=True).start() def _flash_device_thread(self, devices): """设备刷机线程""" self.append_result(f"开始刷机: {', '.join(devices)}") self.append_result("正在擦除旧固件...") time.sleep(1.5) self.append_result("正在写入新固件...") for i in range(1, 6): time.sleep(0.5) self.append_result(f"进度: {i * 20}%") self.append_result("固件校验中...") time.sleep(1) success = random.random() > 0.2 if success: self.append_result("刷机成功!") else: self.append_result("刷机失败! 请检查连接并重试") def export_logs(self): """导出设备日志""" self.append_result("正在导出设备日志...") time.sleep(1) self.append_result("设备日志已导出到 logs/device_logs_20231115.log") def view_log_dir(self): """查看日志目录""" self.append_result("打开日志目录: logs/") def append_result(self, message): """在结果区域添加消息""" self.result_text.config(state=NORMAL) self.result_text.insert(END, f">>> {message}\n") self.result_text.see(END) self.result_text.config(state=DISABLED) self.log_text.insert(END, f"[操作] {message}\n") self.log_text.see(END) def clear_results(self): """清空结果区域""" self.result_text.config(state=NORMAL) self.result_text.delete(1.0, END) self.result_text.insert(END, ">>> 结果区域已清空\n") self.result_text.config(state=DISABLED) self.log_text.insert(END, "[操作] 清空结果区域\n") self.log_text.see(END) def send_command(self): """发送命令""" cmd = self.cmd_entry.get() if not cmd: self.append_result("错误: 请输入命令") return self.append_result(f"发送命令: {cmd}") responses = { "AT+INFO?": "设备信息: TWS-2000 Pro, FW v2.0.0, 电池85%", "AT+VERSION": "固件版本: v2.0.0", "AT+RESET": "设备正在重启...", "AT+ERASE": "开始擦除固件...", "AT+FLASH": "开始刷写固件..." } response = responses.get(cmd, f"未知命令: {cmd}") self.root.after(800, lambda: self.append_result(f"响应: {response}")) def clear_command(self): """清空命令输入框""" self.cmd_entry.delete(0, END) def show_context_menu(self, event): """显示右键菜单""" region = self.device_info_tree.identify("region", event.x, event.y) if region == "cell": self.context_menu.post(event.x_root, event.y_root) def copy_cell_value(self): """复制选中单元格的值""" selected_item = self.device_info_tree.selection() if not selected_item: return column = self.device_info_tree.identify_column(self.root.winfo_pointerx() - self.root.winfo_rootx()) if not column: return col_index = int(column.replace("#", "")) - 1 item_values = self.device_info_tree.item(selected_item, "values") if col_index < len(item_values): cell_value = item_values[col_index] pyperclip.copy(cell_value) self.append_result(f"已复制: {cell_value}") if __name__ == "__main__": root = ttkbootstrap.Window(themename="minty") tool = AudioFlashTool(root) root.iconbitmap(tool.ico_file) root.after(100, tool.refresh_ports) # 初始刷新串口 root.mainloop() 去除复制功能,直接通过界面双击信息文本内容实现复制,优化后的代码全部输出出来,不改变其他类名称、方法名称、变量名称
最新发布
11-28
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值