file-type

Linux远程连接配置:一键脚本简化nfs和ftp设置

下载需积分: 3 | 2KB | 更新于2025-08-09 | 135 浏览量 | 0 下载量 举报 1 收藏
download 立即下载
标题中提到的“seting_file.zip”意味着有一个压缩文件包含了某些设置脚本或文件,用户通过指定的邮箱地址可以获取该压缩包。文件的描述提到“liunx初始化设置的脚本”,这里有一个拼写错误,应该是“linux”而不是“liunx”,意味着压缩包内含有用于Linux系统的初始化配置脚本。这些脚本可能涉及到源文件的替换,并且还包含了网络文件系统(NFS)和文件传输协议(FTP)的配置内容。 从标签“linux ftp nfs 远程连接”中可以提炼出几个关键知识点,首先是Linux操作系统的基础知识,其次是如何配置和使用NFS以及FTP服务,这些服务都是实现远程连接和文件共享的重要工具。现在将详细说明这些知识点: Linux操作系统: Linux是一个开源的操作系统,以其高效、稳定、安全而广泛应用于服务器、嵌入式系统以及桌面计算领域。Linux系统具有灵活的内核配置选项,支持多种文件系统,并且拥有强大的网络功能。它通常采用命令行界面(CLI)进行操作,但也支持图形用户界面(GUI)。Linux系统由数以千计的软件包组成,用户可以根据需要安装各种软件来扩展系统功能。 Linux初始化设置脚本: 在Linux系统中,初始化设置脚本通常用于在系统启动或新安装时自动执行一系列配置命令。这些脚本可能包含更改系统设置、更新系统源、配置网络连接、安装软件包、启动服务等任务。脚本通常是用shell语言编写的,比如bash,可以通过命令行解释器进行执行。在本例中,脚本可能包含修改系统源文件的操作,这通常是更新系统软件包管理器的源列表,以便安装最新的软件包。 源文件替换: 源文件替换是指更改Linux系统中软件包源代码的文件,这通常是为了更新或定制系统功能。例如,在某些情况下,用户可能需要从不同的源下载软件包以获得特定的补丁或改进。源文件替换可能涉及到编辑配置文件,如软件仓库的源列表文件(通常位于/etc/apt/sources.list对于基于Debian的系统,如Ubuntu),或者修改环境变量等。 NFS(Network File System): NFS是一种用于分布式文件系统的网络协议,它允许客户端通过网络访问存储在远程服务器上的文件。使用NFS,多个用户和计算机可以共享存储资源,并且能够在网络中实现高效的数据访问。它在Linux系统中非常常见,是实现文件共享和统一文件系统视图的重要协议。配置NFS服务通常涉及编辑配置文件并启动nfs服务,还要在客户端进行挂载配置,以实现远程访问。 FTP(File Transfer Protocol): FTP是一种网络协议,用于在计算机网络中进行文件传输。FTP服务允许用户登录到远程服务器,并进行文件的上传、下载、删除以及重命名等操作。在Linux系统中,可以使用诸如vsftpd(Very Secure FTP Daemon)这样的软件包来搭建FTP服务器,同时还需要进行相应的配置以保证服务的安全性和可用性。对于客户端来说,也有多种工具如ftp命令和图形界面的文件管理器可以用来连接FTP服务器。 远程连接: 远程连接指的是通过网络从一个地点远程访问另一地点的计算机资源或服务。Linux系统支持多种远程连接方式,包括SSH(安全壳协议)、VNC(虚拟网络计算)、RDP(远程桌面协议)等。远程连接允许管理员在不直接访问计算机的情况下管理服务器,这在系统维护、故障排除和网络管理中非常有用。配置远程连接服务通常需要开放相应的端口,并在服务器上运行相应的守护进程。 总之,从所提供的文件信息可以看出,涉及到Linux系统的基本操作、系统配置、网络服务配置以及远程访问等方面的知识点。这些内容在Linux服务器管理和维护工作中都是极其重要的。

相关推荐

filetype

Parsing of file failed: D:\workspase\uc_app\kitchen-pro\arp.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\MammotionKits.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\MammotionUnit.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\beautify.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\service.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\settings\config.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\ui\ui_main.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\ui\ui_new_app_dialog.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\ui\ui_new_app_version_dialog.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\ui\ui_new_session.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\ui\ui_tasks.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\app\ui\ui_task_session.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\as_tool\global_var.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\as_tool\comps\func\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\as_tool\comps\func\widgets.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\as_tool\comps\home\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\as_tool\comps\home\ui_home.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\as_tool\comps\home\widgets.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\as_tool\comps\home\workers.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\as_tool\comps\home\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\main.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\comm_workers.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\Accessory\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\Accessory\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\Accessory\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\battery\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\battery\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\battery\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\camerainfo\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\camerainfo\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\camerainfo\workers.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\camerainfo\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\camerainfo\mods\camera_mod.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\camerainfo\mods\rear_camera_mod.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\camerainfo\ui\ui_camera_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\camerainfo\ui\ui_rear_camera_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\communtinfo\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\communtinfo\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\communtinfo\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\connect\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\connect\ui_connect.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\connect\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\connect\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\connect\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\factory_test\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\factory_test\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\factory_test\workers.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\factory_test\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\fw\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\fw\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\internet\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\internet\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\internet\workers.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\internet\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\motorinfo\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\motorinfo\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\motorinfo\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\readme\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\readme\markdown_styles.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\readme\ui_readme.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\readme\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\readme\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\rtk\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\rtk\ui_rtk.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\upgarde\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\upgarde\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\upgarde\workers.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\upgarde\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\widget_wheel\communal_head.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\widget_wheel\ui\ui_head.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\widget_wheel\ui\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\work\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\work\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\comps\work\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\basealgorithm.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\ble_manager.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\bluetooth_operation.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\car_method.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\dataenc.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\file_operation.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\manage.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\net_operation.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\protobuf_msg.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\seting.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\signalmanage.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\include\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\owncharts\battery_test_chart.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\ownqttoy\battery.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\ownqttoy\btn_blueTooth.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\ownqttoy\flowlayout.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_blue\ownqttoy\switchbutton.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\Accessory\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\Accessory\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\Accessory\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\attachment\metadata.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\attachment\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\attachment\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\auto_check\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\auto_check\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\auto_check\workers.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\auto_check\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\backup\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\backup\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\backup\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\battery\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\battery\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\battery\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\board\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\board\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\board\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\board\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\camerainfo\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\camerainfo\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\camerainfo\workers.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\camerainfo\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\camerainfo\mods\camera_mod.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\camerainfo\mods\rear_camera_mod.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\camerainfo\ui\ui_camera_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\camerainfo\ui\ui_rear_camera_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\car_error\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\connection\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\connection\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\connection\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\connection\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\connection\ui\ui_connection.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\detection\detect.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\detection\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\detection\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\detection\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\detection\ui\ui_detection.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\detection\ui\ui_home.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\detection\ui\ui_state_item.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\detection\ui\ui_sub_dev_page.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\error_code\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\error_code\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\esprtk\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\factory_test\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\factory_test\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\factory_test\workers.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\factory_test\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\flash\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\home\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\internet\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\internet\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\internet\workers.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\internet\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\motorinfo\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\motorinfo\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\motorinfo\workers.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\motorinfo\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\repair\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\repair\mods.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\repair\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\repair\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\repair\ui\ui_repair.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\rtk_logger\beautify.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\rtk_logger\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\rtk_logger\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\tlog\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\tlog\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\upgrade\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\upgrade\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\work\factory.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\work\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\customer_service\comps\work\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\amu\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\amu\ui\ui_taskman.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\amu\ui\ui_taskman_new.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\bs_test\cases.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\bs_test\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\bs_test\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\bs_test\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\bs_test\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\bs_test\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\bs_test\settings\ui_opts.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\bs_test\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\charge_station\case.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\charge_station\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\charge_station\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\charge_station\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\charge_station\settings\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\charge_station\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\debug_switch\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\debug_switch\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\debug_switch\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\dev_conf\conf.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\dev_conf\production.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\dev_conf\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\dev_conf\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\dev_conf\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\dev_conf\settings\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\dev_conf\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\dev_conf\ui\rtk_dialog.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\dev_conf\ui\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\electronic_load\case.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\electronic_load\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\electronic_load\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\electronic_load\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\esp_mbu\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\esp_mbu\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\esp_mbu\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\esp_mbu\ui\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\esp_mbu\ui\ui_dev_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\export_log\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\export_log\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\export_log\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\cases.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\com.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\mods\camera_dynamic_mod.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\mods\camera_mod.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\mods\rear_camera_mod.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\settings\ui_opts.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\ui\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\ui\ui_camera_mods_dialog.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\ui\ui_camera_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\ui\ui_confirm_dialog.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\fat\ui\ui_rear_camera_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\file_transfer\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\file_transfer\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\freq_hopping\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\freq_hopping\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\freq_hopping\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\freq_hopping\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\hall_test\case.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\hall_test\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\hall_test\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\hall_test\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\hall_test\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\hall_test\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\hall_test\ui\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\hall_test\ui\ui_single.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\hall_test\ui\ui_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\home\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\home\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\home\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\imu_cali_yaw\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\imu_cali_yaw\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\imu_cali_yaw\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\imu_cali_yaw\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\imu_tools\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\imu_tools\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\imu_tools\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\imu_tools\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\jlink_burner\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\jlink_burner\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\jlink_burner\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\jlink_burner\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_mod\config.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_mod\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_mod\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_mod\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_mod\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_movement\case.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_movement\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_movement\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_movement\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_movement\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_movement\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_movement\ui\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lidar_movement\ui\ui_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\logger\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\logger\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lora_test\case.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lora_test\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lora_test\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lora_test\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lora_test\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lora_test\ui\ui_lora_test.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lora_test\ui\ui_lora_test_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\lora_test\ui\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\mbu\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\mbu\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\mbu\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\mbu\settings\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\mbu\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\mbu\ui\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\mbu\ui\ui_dev_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\module_aging\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\module_aging\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\module_aging\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\module_aging\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\module_aging\ui\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\module_aging\ui\ui_item.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_flags\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_flags\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_flags\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_flags\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_test\case.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_test\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_test\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_test\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_test\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_test\ui\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_test\ui\ui_single.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\motor_test\ui\ui_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\msgbus_tools\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\msgbus_tools\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\noise_test\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\noise_test\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\noise_test\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\noise_test\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\reporter\local.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\reporter\mes.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\reporter\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\reporter\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\smu\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\smu\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\smu\ui\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\smu\ui\ui_fw_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\solar_pannel\case.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\solar_pannel\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\solar_pannel\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\solar_pannel\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\solar_pannel\settings\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\solar_pannel\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\static_current\case.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\static_current\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\static_current\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\static_current\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\static_current\settings\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\static_current\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\term\sftp_model.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\term\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\term\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\term\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\term\ui\enhanced_tree_view.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\term\ui\multi_file_transfer.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\term\ui\multi_transfer_dialog.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_4g\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_4g\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_4g\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_4g\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_4g\settings\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_4g\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_4g\ui\ui_4g_test.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_4g\ui\ui_dev_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_lte\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_lte\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_lte\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_lte\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_lte\settings\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_lte\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_lte\ui\ui_4g_test.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\test_lte\ui\ui_dev_widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\unbind_dev_conf\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\unbind_dev_conf\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\unbind_dev_conf\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\unbind_dev_conf\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\unbind_dev_conf\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\upgrade\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\upgrade\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\upgrade_checker\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\upgrade_checker\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\upgrade_checker\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\upgrade_checker\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\vehicle_restored\cases.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\vehicle_restored\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\vehicle_restored\production.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\vehicle_restored\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\vehicle_restored\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\vehicle_restored\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\vehicle_restored\settings\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\vehicle_restored\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\vehicle_restored\ui\rtk_dialog.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\vehicle_restored\ui\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\vehicle_restored\ui\ui_warning.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\visa_test\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\visa_test\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\visa_test\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\visa_test\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\voltage_mod\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\voltage_mod\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\voltage_mod\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\voltage_mod\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\wireless_test\cases.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\wireless_test\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\wireless_test\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\wireless_test\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\wireless_test\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\wireless_test\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\wireless_test\settings\ui_opt.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\ftt\comps\wireless_test\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\keygen\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\keygen\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\camera_yuv\handler.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\camera_yuv\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\conf_tools\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\conf_tools\widget.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\conf_tools\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\conf_tools\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\conf_tools\settings\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\generate_ota\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\home\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\home\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\msgbus_tools\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\msgbus_tools\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\upgrade\worker.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\kitchen\comps\upgrade\__init__.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\updater\ui.py Parsing of file failed: D:\workspase\uc_app\kitchen-pro\updater\worker.py There were errors during the operation, perhaps you are trying to parse python 3 project, with python 2 version of the script? (or vice versa) Project successfully transformed to AST, checking imports for cycles.. No worries, no cycles here! If you think some cycle was missed, please open an Issue on Github. Finished. 解释

filetype

# -------------------------------------- # Created by Milo on 2025/3/18 # Project: app_maintain # Desc: 纯蓝牙连接 # -------------------------------------- import traceback from asyncio import Event from threading import Thread from typing import Union from PyQt6.QtCore import QThread from bleak import BleakClient, BleakScanner, BLEDevice from bleak.exc import BleakError import asyncio import logging from customer_blue.include.basealgorithm import decimal_to_hex, get_high_low from customer_blue.include.protobuf_msg import MessagePB from customer_blue.include.seting import logger from customer_blue.include.signalmanage import MainSignal BLUE_SERVICE_UUID = "0000ffff-0000-1000-8000-00805f9b34fb" BLUE_WRITE_CHAR_UUID = "0000ff01-0000-1000-8000-00805f9b34fb" BLUE_NOTIF_CHAR_UUID = "0000ff02-0000-1000-8000-00805f9b34fb" BLUE_NOTIF_DESC_UUID = "00002902-0000-1000-8000-00805f9b34fb" class StableBleakClient: def __init__(self, device_name=None, device_address=None, timeout=20.0, retries=3, heartbeat_interval=10.0): """ 稳定的BLE客户端封装类 参数: device_name: 目标设备名称 (优先使用) device_address: 目标设备MAC地址 timeout: 连接超时时间(秒) retries: 最大重连次数 heartbeat_interval: 心跳检测间隔(秒) """ self.device_name = device_name self.device_address = device_address self.timeout = timeout self.max_retries = retries self.heartbeat_interval = heartbeat_interval self.client = None self.heartbeat_task = None self.connected = False self.alive_callbacks = None self.main_disconnected_callbacks = None self.notification_callbacks = {} # 存储通知回调 async def connect(self): """建立稳定连接,包含重试机制和信号强度筛选""" if not self.device_name and not self.device_address: raise ValueError("必须提供device_name或device_address") device = None attempts = 0 while attempts < self.max_retries and not self.connected: attempts += 1 try: # 通过扫描查找设备 if self.device_name: device = await self._find_device_by_name() elif self.device_address: device = await self._find_device_by_address() if not device: print(f"未找到设备,重试 {attempts}/{self.max_retries}") await asyncio.sleep(2) continue # 创建客户端并连接 self.client = BleakClient(device.address, timeout=self.timeout, disconnected_callback=self._handle_disconnect) await self.client.connect() # 设置断开回调 # 启动心跳检测 self.heartbeat_task = asyncio.create_task(self._heartbeat_check()) self.connected = True print(f"成功连接到设备: {device.name} ({device.address})") return True except (BleakError, asyncio.TimeoutError) as e: print(f"连接失败 (尝试 {attempts}/{self.max_retries}): {str(e)}") await self._cleanup_resources() await asyncio.sleep(1 + attempts) # 指数退避重试 return False async def _find_device_by_name(self): """通过设备名称查找信号最强的设备""" devices = await BleakScanner.discover(timeout=5.0) target_devices = [d for d in devices if d.name and d.name == self.device_name] if not target_devices: return None # 选择RSSI信号最强的设备 strongest_device = max(target_devices, key=lambda d: d.rssi) print(f"找到设备: {strongest_device.name}, RSSI: {strongest_device.rssi}") return strongest_device async def _find_device_by_address(self): """通过MAC地址查找设备""" device = await BleakScanner.find_device_by_address( self.device_address, timeout=5.0 ) if device: print(f"找到设备: {device.address}") return device def regst_disconnect_callback(self, callback): self.main_disconnected_callbacks = callback async def _heartbeat_check(self): """心跳检测维持连接""" while self.connected: try: # 读取设备信息作为心跳检测 if self.client and self.client.is_connected: await self.client.read_gatt_char(BLUE_NOTIF_CHAR_UUID) # 设备名称特征 print("心跳检测成功") else: print("心跳检测失败,连接已断开") self.connected = False except BleakError as e: print(f"心跳检测错误: {str(e)}") self.connected = False await self.alive_callbacks( self.connected # 内部状态标志 and self.client is not None # 客户端对象存在 and self.client.is_connected ) await asyncio.sleep(self.heartbeat_interval) async def enable_notifications(self, char_uuid, callback): """启用通知并注册回调""" if not self.connected or not self.client: raise ConnectionError("未连接") await self.client.start_notify(char_uuid, callback) self.notification_callbacks[char_uuid] = callback async def disable_notifications(self, char_uuid): """禁用通知并移除回调""" if not self.connected or not self.client: return if char_uuid in self.notification_callbacks: await self.client.stop_notify(char_uuid) del self.notification_callbacks[char_uuid] def _handle_disconnect(self, client): """处理断开连接事件""" print("设备断开连接") self.connected = False self.main_disconnected_callbacks("disconnected") asyncio.create_task(self._cleanup_resources()) async def disconnect(self): """安全断开连接并清理资源""" if not self.connected or not self.client: return print("正在断开连接...") self.connected = False await self.alive_callbacks(False) # 取消心跳任务 if self.heartbeat_task: self.heartbeat_task.cancel() try: await self.heartbeat_task except asyncio.CancelledError: pass await self._cleanup_resources() async def _cleanup_resources(self): """清理所有资源""" try: if self.client: # 停止所有通知 for char_uuid in list(self.notification_callbacks.keys()): try: await self.client.stop_notify(char_uuid) except BleakError: pass self.notification_callbacks.clear() # 断开连接 if self.client.is_connected: await self.client.disconnect() # 强制清理(平台特定) if hasattr(self.client, '_backend') and hasattr(self.client._backend, 'cleanup'): self.client._backend.cleanup() # print("资源清理完成") except Exception as e: print(f"清理资源时出错: {str(e)}") finally: self.client = None async def read_characteristic(self, char_uuid): """读取特征值""" if not self.connected or not self.client: raise ConnectionError("未连接") return await self.client.read_gatt_char(char_uuid) async def write_characteristic(self, char_uuid, data, response=True): """写入特征值""" if not self.connected or not self.client: raise ConnectionError("未连接") await self.client.write_gatt_char(char_uuid, data) async def __aenter__(self): await self.connect() return self async def __aexit__(self, exc_type, exc_value, traceback): await self.disconnect() def is_alive_callbacks(self, callback): """是否连接""" self.alive_callbacks = callback class BleakClientThread(QThread): FLAG = 'BleakClientThread' def __init__(self, address_or_ble_device: Union[BLEDevice, str], parent, disconnect_callback=None): super().__init__() self.send_sequence = 0 self.manage = parent self.ble_device = address_or_ble_device self.loop = asyncio.new_event_loop() self.stop_event = asyncio.Event() self.write_queue = asyncio.Queue() # 当前已经存的长度 self.already_len = None # 当前的片计数 self.cont = None # 需要拼包的总长的,第一次进入时赋值 self.total_length = None # 拼包数据 self.pack_data = [] self.pack_flag = False self.last_seq = None self.notice_callback = None self.recv_callback = None self.is_connected = False self.disconnect_callback = disconnect_callback def register_connect(self, parm): """ 注册连接成功、失败、断开的回调通知函数 :param parm: 函数指针名 :return: """ self.notice_callback = parm def unregister_connect(self): """ 注销回调函数 :return: """ self.notice_callback = None def register_recv(self, parm): """ 注册收数 :param parm: :return: """ self.recv_callback = parm def unregister_recv(self): """ 注销收数 :return: """ self.recv_callback = None def run(self): try: asyncio.set_event_loop(self.loop) self.loop.run_until_complete(self.main()) except Exception as e: logger.error(f"{self.FLAG}, run error: {str(e)}") finally: # Clean up loop resources self.loop.run_until_complete(self.loop.shutdown_asyncgens()) # self.loop.close() async def main(self): # 使用设备名称连接 async with StableBleakClient(device_address=self.ble_device) as client: # 启用通知 await client.enable_notifications( BLUE_NOTIF_CHAR_UUID, self.notification_handler ) client.is_alive_callbacks(self.is_connect) client.regst_disconnect_callback(self.disconnect_callback) # 读取设备信息 # device_name = await client.read_characteristic(BLUE_NOTIF_DESC_UUID) # print(f"设备名称: {device_name.decode('utf-8')}") while True: try: data = await asyncio.wait_for(self.write_queue.get(), timeout=1.0) if data is None: break print("send to ",data) # 写入数据 await client.write_characteristic( BLUE_WRITE_CHAR_UUID, data, response=True ) except asyncio.TimeoutError: continue # Timeout is expected, continue the loop # async def main(self): # try: # await self.client.connect() # for service in self.client.services: # logger.error( # '-----------------service uuid: {} [{}]---------------------'.format(service.uuid, # service.description)) # for c in service.characteristics: # logger.error('characteristic uuid: {} [{}] [{}]'.format(c.uuid, c.description, c.properties)) # await self.client.start_notify(BLUE_NOTIF_CHAR_UUID, self.notification_handler) # MainSignal.get_instance().manage_client_connected.emit(True) # if self.notice_callback: # self.notice_callback(True) # while not self.stop_event.is_set(): # try: # data = await asyncio.wait_for(self.write_queue.get(), timeout=1.0) # if data is None: # break # await self.client.write_gatt_char(BLUE_WRITE_CHAR_UUID, data) # except asyncio.TimeoutError: # continue # Timeout is expected, continue the loop # except Exception as e: # logger.error(f"{self.FLAG}, connection or notification error: {str(e)}") # finally: # try: # await self.client.disconnect() # logger.error(f"{self.FLAG}, Bluetooth disconnected") # except Exception as e: # logger.error(f"{self.FLAG}, disconnect error: {str(e)}") # # MainSignal.get_instance().manage_client_connected.emit(False) # if self.notice_callback: # self.notice_callback(True) # 第一次收到14帧序号,进行初始拼包操作 def inti_merge_data(self, data): self.pack_data.clear() high = data[0:2] low = data[2:4] self.total_length = int(low + high, 16) * 2 self.pack_data.append(data[4:]) self.already_len = len(data[4:]) self.pack_flag = True # 拼包0x14 def dispose_0x14(self, msg_type, fc, data): if not self.pack_flag and fc == '14': self.inti_merge_data(data) elif fc == '14': # 第二次来的还是14 就进行检查是否为上一帧的后续,如果不是,就当第一次14帧处理 temp_height = data[0:2] temp_low = data[2:4] temp_len = int(temp_low + temp_height, 16) * 2 if self.total_length != temp_len + self.already_len: self.inti_merge_data(data) else: self.pack_data.append(data[4:]) self.already_len += len(data[4:]) else: temp_len = len(data) if self.total_length == self.already_len + temp_len: real_data = '' for str_data in self.pack_data: real_data += str_data real_data += data self.pack_flag = False MainSignal.get_instance().manage_data_received.emit(msg_type, real_data) if self.recv_callback: self.recv_callback(msg_type, data) self.pack_data.clear() else: self.dispose_0x04(msg_type, data) # 直接丢出0x04 def dispose_0x04(self, msg_type, data): MainSignal.get_instance().manage_data_received.emit(msg_type, data) if self.recv_callback: self.recv_callback(msg_type, data) def notification_handler(self, sender, data): try: print("", data) data_t = bytes(data).hex() lo = ' '.join([data_t[i:i + 2] for i in range(0, len(data_t), 2)]) # print(lo) msg_type = data_t[0:2] fc = data_t[2:4] seq = data_t[4:6] data_len = data_t[6:8] data_protobuf = data_t[8:] if msg_type == '3d': return # if msg_type != '4d': # print(lo) if fc == '14' or self.pack_flag: self.dispose_0x14(msg_type, fc, data_protobuf) else: self.dispose_0x04(msg_type, data_protobuf) except Exception: traceback.print_exc() # 获取计数 def get_send_num(self): self.send_sequence += 1 self.send_sequence = self.send_sequence & 0xFF return self.send_sequence def send_data(self, obj: object): seqs = self.get_send_num() data = None # TODO if isinstance(obj, MessagePB): obj.setseqs(seqs) data = obj.create_msg() else: # data = obj return while True: data_len = len(data) if data_len == 0: break if data_len > 100: head = [77, 20, seqs, 102] hex_st = decimal_to_hex(data_len) high_byte, low_byte = get_high_low(hex_st) low_byte = int(low_byte, 16) head.append(low_byte) high_byte = int(high_byte, 16) head.append(high_byte) head.extend(data[0:100]) data = data[100:] send_data = bytearray(head) seqs = self.get_send_num() else: len_data = len(data) head = [77, 4, seqs, len_data] head.extend(data) send_data = bytearray(head) data = '' hx = send_data.hex() # logger.debug(f" send data: {' '.join([hx[i:i + 2] for i in range(0, len(hx), 2)])}") if not self.loop.is_closed(): self.loop.call_soon_threadsafe(self.write_queue.put_nowait, send_data) def send_wifi_cntrl(self, msg_type, msg_data): seqs = self.get_send_num() if msg_data is None: head = [msg_type, 0, seqs, 0] else: head = [msg_type, 0, seqs, len(msg_data)] head.extend(msg_data) send_data = bytearray(head) hx = send_data.hex() # logger.debug(f"send data: {' '.join([hx[i:i + 2] for i in range(0, len(hx), 2)])}") if not self.loop.is_closed(): self.loop.call_soon_threadsafe(self.write_queue.put_nowait, send_data) async def is_connect(self, parm): self.is_connected = parm def is_alive(self): return self.is_connected def stop(self): try: self.loop.call_soon_threadsafe(self.write_queue.put_nowait, None) # self.loop.call_soon_threadsafe(self.stop_event.set) except Exception as e: logger.error(f'{self.FLAG} stop error: {str(e)}') 整理成一个可复用的

无脚鸟拼命飞
  • 粉丝: 19
上传资源 快速赚钱