当前位置: 首页 > news >正文

Klipper-配置解析

配置参数

  • 配置跟踪的参数有493个
  • 493个配置参数,包含打印机配置文件里的,以及程序里默认设置的参数

  • 打印机的组件对象共有124个

  • status_raw_config:在 _read_config的 pconfig.check_unused_options(config) 里面实现的
主代码解析
def read_main_config(self):filename = self.printer.get_start_args()['config_file']data = self._read_config_file(filename)regular_data, autosave_data = self._find_autosave_data(data)regular_config = self._build_config_wrapper(regular_data, filename)autosave_data = self._strip_duplicates(autosave_data, regular_config)self.autosave = self._build_config_wrapper(autosave_data, filename)cfg = self._build_config_wrapper(regular_data + autosave_data, filename)return cfg
  • data = self._read_config_file(filename):读取配置文件数据,返回字符串结果
  • regular_data, autosave_data = self._find_autosave_data(data):解析出常规配置数据和通过页面操作自动保存的配置数据
  • regular_config = self._build_config_wrapper(regular_data, filename):构建常规配置的包装器
  • autosave_data = self._strip_duplicates(autosave_data, regular_config):解析自动保存配置和常规配置里的重复项,并去除自动保存重复的配置字段
  • self._build_config_wrapper(autosave_data, filename):构建自动保存配置的包装器
  • cfg = self._build_config_wrapper(regular_data + autosave_data, filename):配置合并,构建一个所有配置的包装器
def _build_config_wrapper(self, data, filename):if sys.version_info.major >= 3:fileconfig = configparser.RawConfigParser(strict=False, inline_comment_prefixes=(';', '#'))else:fileconfig = configparser.RawConfigParser()self._parse_config(data, filename, fileconfig, set())return ConfigWrapper(self.printer, fileconfig, {}, 'printer')
  • fileconfig = configparser.RawConfigParser():创建解析器对象
  • self._parse_config(data, filename, fileconfig, set()):将配置信息解析到 解析器对象里
  • ConfigWrapper(self.printer, fileconfig, {}, ‘printer’): 返回配置包装器,包含打印机对象,解析器对象
http://www.dtcms.com/a/310653.html

相关文章:

  • 「一键召唤 007」:开源多智能体 JoyAgent-JDGenie 如何让你的 AI 产品从 Demo 到 真香 只差 Ctrl+C / Ctrl+V?
  • 电商客服协同中,智能处理哪些问题,人工专攻哪些需求?
  • 日志管理工具 ——ELK Stack
  • 开源工具FossFLOW,绘制技术图表
  • 告别软件残留!IObit Uninstaller Pro 让电脑彻底干净!
  • GPS定位 JT808 / 视频监控 - JT1078 技术剖析(1)
  • 《文明5》错误代码0xc0000142修复方法
  • JavaScript 中的 new 关键字和函数调用方法详解,apply、call 和 bind 的区别
  • 解决MySQL不能编译存储过程的问题
  • session和cookie作用详解
  • 如何使用AI+工单实现高效率高质量的服务?
  • python 断点pdb
  • 选择美颜sdk时应该关注什么?美白滤镜效果与兼容性对比评测
  • 【人工智能-17】机器学习:KNN算法、模型选择和调优、朴素贝叶斯分类
  • JS核心语法与实战技巧
  • 如何实现长时间录音的自动分段与文本生成?
  • 自定义View学习记录之 折线图View
  • 栈与队列的泛型实现
  • gcc g++ makefile CMakeLists.txt cmake make 的关系
  • [lvgl_player] 用户界面(LVGL) | 播放器核心设计
  • 桌面端界面设计 |货物 TMS 系统 - SaaS UI UX 设计:审美积累之境
  • 图像处理拉普拉斯算子
  • 进阶08:Winform编写与SQL Server通信范例
  • 【OD机试题解法笔记】考古学家考古问题
  • SOLIDWORKS材料明细表设置,属于自己的BOM表模板
  • 【数据结构】-----排序的艺术画卷
  • 上海月赛kk
  • 1.2.6 装配式混凝土建筑设计构造要求
  • LOVON——面向足式Open-Vocabulary的物体导航:LLM做任务分解、YOLO11做目标检测,最后L2MM将指令和视觉映射为动作(且解决动态模糊)
  • RAGFLOW~knowledge graph