CanFestival对象字典编辑器Python3版本

CanFestival是一个CANOpen开源C库,其自带对象字典编辑器,但是得用Python2来打开,其界面库使用的也是老版本的wxPython,使用起来非常不方便。

本人复制了一份对象字典编辑器源码,然后经过辛苦的修改,终于可以使用Python3和最新的wxPython来运行了。

代码在https://github.com/happybruce/objdictgen

如何运行

运行前要先安装wxPython,

pip install -U wxpython

安装完后就可以运行了,本人用的wxPython版本是4.2.1

python objdictedit.py

运行后显示如下,
在这里插入图片描述

点击File可以新建对象字典工程或者打开已有的对象字典工程,也可以导入EDS文件,
在这里插入图片描述

主要做的工作

这里总结一下主要做的适配工作以及采用的方法

  • 把Python2的代码格式转为Python3,使用Python3自带的2to3.py工具来实现转换(位于Python安装目录下的Tools\scripts里)
  • 把使用到的老版wxPython API替换成新版的API,这里主要是针对新版已经不再支持的API,需要到wxPython官网API文档中逐个查找
  • 把加载和保存对象字典文件的库使用Python自带的pickle库代替,原本使用的是Gnosis库,但是这个库非常老而且只能Python2使用。经过本人阅读源码,原作者使用Gnosis主要是为了序列化和反序列化,所以这里使用pickle代替。
  • 生成对象字典.c/h文件的python代码进行一定的优化

这里要注意:pickle和Gnosis生成的文件格式不一样,前者是二进制字节序列,后者是xml,所以源码里自带的examples目录下的对象字典文件是无法导入的,不过使用pickle新生成的对象字典文件是可以导入的,同时也能看出pickle更加高效。

后续工作

后续会在Linux下使用CanFestival源码结合对象字典编辑器生成的源码来搭建工程进行进一步的验证,如果一切OK,再往STM32上移植。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1487789.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Pyqt5新手教程

PyQt界面开发的两种方式:可视化UI 编程式UI (1)可视化UI:基于Qt Designer可视化编辑工具进行组件拖放、属性设置、布局管理等操作创建界面。 一是将其保存为.ui文件,然后在PyQt应用程序中加载和使用.ui文件。 二是使用…

【监控软件】Zabbix

目录 重点提要 1. 常见监控软件 2. 常用的zabbix组件 3. 主动模式与被动模式原理 4. 主动模式与被动模式实现 5. 监测JAVA程序Tomcat 6. proxy架构 7. proxy的安装 8. proxy的主动被动实现 9. zabbix自定义模版 10. zabbix邮件通知 11. zabbix自愈(nginx为例) 12. …

EXCEL 排名(RANK,COUNTIFS)

1.单列排序 需求描述:如有下面表格,需要按笔试成绩整体排名。 解决步骤: 我们使用RANK函数即可实现单列整体排名。 Number 选择第一列。 Ref 选择这一整列(CtrlShift向下箭头、再按F4)。 "确定"即可计算…

Scikit-learn内置的数据集

数据集是我们学习和研究机器学习不可或缺的基础,Scikit-learn库内置了丰富的数据集资源,非常适合初学者用来练习和验证机器学习算法的效果。 一、鸢尾花数据集 鸢尾花数据集(Iris Dataset)是机器学习领域中最著名的数据集之一&am…

论文解读 | ICML2024:突破Transformer上下文学习中的瓶颈

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 作者简介 付靖文,西安交通大学博士生 简介 上下文学习,即从上下文示例中学习,是Transformer一项令人印象深刻的能力。然而,由于学习瓶颈的出现——在训练过程中模…

【Java题解】以二进制加法的方式来计算两个内容为二进制数字的字符串相加的结果

🎉欢迎大家收看,请多多支持🌹 🥰关注小哇,和我一起成长🚀个人主页🚀 👑目录 分析:🚀 数字层面分析⭐ 字符串层面分析⭐ 代码及运行结果分析:&#x1f6…

对语言大模型的现状总结与趋势

ChatGPT与LLM技术现状 LLM的主要手段 模型:Transformer拥有强大的表示能力,能对具有组合性(compositinality)的语言进行很好的表示和学习。 预训练(pre-training):使用大规模文本数据进行语言建模(langu…

浅谈监听器之后端监听器

浅谈监听器之后端监听器 “后端监听器”(Backend Listener)是一种高级功能,用于异步地将测试结果数据发送至外部系统,如数据库、消息队列或时间序列数据库等,以便于长期存储、实时分析和可视化展示。 后端监听器的作…

绕过token降低与对方服务器交互时延,如何实现??

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

[C++] string管理:深浅拷贝写时拷贝

文章目录 拷贝问题的引入问题代码string类的构造函数String 类的析构函数测试入口函数(问题)详细分析 浅拷贝深拷贝传统版与现代版的String类传统String类现代版String类 写时拷贝先构造的对象后析构的影响写时拷贝举例及测试样例代码举例测试用例 拷贝问…

浅谈Llama3.1,从结构、训练过程、影响到数据合成

Llama3.1系列模型的开源,真让大模型格局大震,指标上堪比最好的闭源模型比如GPT 4o和Claude3.5,让开源追赶闭源成为现实。 这里给大家分享一篇俊林兄(知乎张俊林)的一篇解读,主要对LLaMA3.1的模型结构、训练…

1.1 操作系统的基本概念

文章目录 操作系统的概念(定义)操作系统的目标和功能操作系统作为计算机系统资源的管理者操作系统向上层提供方便易用的服务命令接口程序接口 操作系统作为最接近硬件的层次 操作系统的特征(4个)并发共享互斥共享方式同时共享方式 虚拟虚拟处理器&#x…

【性能优化】在大批量数据下使用 HTML+CSS实现走马灯,防止页面卡顿(二)

上一篇只是简单演示了’下一张’的操作和整体的设计思路,这两天把剩余功能补全了,代码经过精简,可封装当成轮播组件使用,详细如下. 代码 <template><div class"container"><button click"checkNext(last)">上一张</button><b…

Vue Router基础

Router 的作用是在单页应用&#xff08;SPA&#xff09;中将浏览器的URL和用户看到的内容绑定起来。当用户在浏览不同页面时&#xff0c;URL会随之更新&#xff0c;但页面不需要从服务器重新加载。 1 Router 基础 RouterView RouterView 用于渲染当前URL路径对应的路由组件。…

Linux--Socket编程预备

目录 1. 理解源 IP 地址和目的 IP 地址 2.端口号 2.1端口号(port)是传输层协议的内容 2.2端口号范围划分 2.3理解 "端口号" 和 "进程 ID" 2.4理解 socket 3.传输层的典型代表 3.1认识 TCP 协议 3.2认识 UDP 协议 4. 网络字节序 5. socket 编程接…

边缘计算网关项目(含上报进程、32Modbus采集进程、设备搜索响应进程源码)

目录 边缘层 架构说明 包含知识点 数据上报进程 功能描述 功能开发 上报线程 数据存储线程 指令处理线程 项目源码 上报模块.c代码&#xff1a; 上报模块Makefile代码&#xff1a; STM32采集模块.c代码 设备搜索响应模块Linux部分.c代码 设备搜索响应模块Qt端代码.h …

流量录制与回放:jvm-sandbox-repeater工具详解

在软件开发和测试过程中&#xff0c;流量录制与回放是一个非常重要的环节&#xff0c;它可以帮助开发者验证系统在特定条件下的行为是否符合预期。本文将详细介绍一款强大的流量录制回放工具——jvm-sandbox-repeater&#xff0c;以及如何利用它来提高软件测试的效率和质量。 …

《Cross-Modal Dynamic Transfer Learning for Multimodal Emotion Recognition》

Multi-modal系列论文研读目录 文章目录 Multi-modal系列论文研读目录1.ABSTRACT2.INDEX TERMS3.INTRODUCTION4.RELATED WORKSA. MULTIMODAL EMOTION RECOGNITION 多模态情感识别1) CONVENTIONAL FUSION METHODS 常规融合方法2) TRANSFORMER-BASED FUSION METHODS 基于变压器的融…

C#测试控制台程序调用Quartz.NET的基本用法

Quartz.Net是常用的任务调用框架之一&#xff0c;既能在客户端程序中使用&#xff0c;也支持在网页程序后台调用。本文结合参考文献4中的示例代码学习其在控制台程序中的基本用法。   VS2022新建控制台项目&#xff0c;在Nuget包管理器中搜索并安装Quartz包&#xff0c;如下所…

IDEA在编译的时候报Error: java: 找不到符号符号: 变量 log lombok失效问题

错误描述 idea因为lombok的报错: java: You arent using a compiler supported by lombok, so lombok will not work and has been disabled.Your processor is: com.sun.proxy.$Proxy8Lombok supports: sun/apple javac 1.6, ECJ 原因&#xff1a;这是由于Lombok的版本过低的…