python can通信_Python中的高级/抽象Canbus接口
我在python(pcanbasicapi)中使用canbus,希望它更易于使用。在
许多设备通过总线连接。他们都被允许发送数据,如果发生碰撞,最低的ID将获胜。在
数据以ID、SubID、hexvalues的帧组织
为了说明我试图解决的问题,想象一个信号的振幅。在
读取帧发送到的值问题ID问题子ID问题数据
如果没有优先级更高的消息(=lowerID),则答案将写入总线:答案ID答案子ID答案数据
由于任何模块/设备都可以写入总线,因此您不知道下一个将得到哪个答案。设置值也是一样的,只是使用不同的ID。因此,对于上述示例,振幅将具有:4与读/写问题/答案相关的ID和子ID
此外,必须指定/存储数据的长度has(0-8)。在
由于数据都是十六进制值,因此必须指定解析器以获得人类可读的值(例如十进制表示的电压)
为了存储这些信息,我使用嵌套dict:parameters = {'Parameter_1': {'Read': {'question_ID': ID,
'question_SUBID': SubID,
'question_Data': hex_value_list,
'answer_ID': ...,
'answer_subID': ...,
'answer_parser': function},
'Write': {'ID': ...,
'SubID': ...,
'parser' ...,
'answer_ID': ...,
'answer_subID': ...}},
'Parameter_2': ... }}
有很多工具可以显示在什么时候设置了哪个值,但是对于硬件控制来说,只要参数表是最新的,它们的读取顺序就不相关了。因此,可能解决方案的一部分是将整个流量存储在dict的dict中:
^{pr2}$
由于总线的性质,我得到了许多其他设备询问的答案-总线相当满-这些不应该被忽略,因为它们可能是我下一步需要的值,并且没有必要创建额外的流量-我可能会使用带有到期日的时间戳,但到目前为止,我并没有考虑太多。在
这很管用,但用起来很糟糕。一般来说,我大概有300个参数。最终目标是通过一个(pyqt)Gui来控制设备,读取一些诸如序列号之类的值,同时运行测量任务。在
因此,最大的问题是如何定义一个更易于访问和理解的更好的数据结构?我期待任何关于干净设计的建议。在
主要目标将是类似于删除整个基于消息的方法。在
编辑:我的目标是消除整个基于CAN的特定消息的方法:
我想我需要一个线程来进行通信,它应该:读取缓冲区并更新我的变量
发送请求(消息)以获取其他值/变量
定期发送一些值
因此,通过gui,我希望能够:按名称获取参数-->发送带有参数名称的字符串
设置参数signal-->;str(name),value(在gui中显示)
定期获取值-->;名称、间隔、持续时间(10秒或无限)
线程必须:在总线上记录所有数据以备内部存储
通过从名称、值和读取生成消息来处理请求,直到获得结果
发送周期性信号
我想要一个实际硬件的设计理念:我想到的解决方案是上面的参数
对于内部存储,我考虑了总线数据
但我不知道如何:将数据从总线线程传递到gui(所有值vs.新值/请求值)
如何用pyqt中的信号和插槽实现它
在内部存储数据(dict的dict或一些新的更好的想法)
如果这个设计是个不错的选择
python can通信_Python中的高级/抽象Canbus接口相关推荐
- python map用法_Python中ChainMap的一种实用用法
Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 简而言之ChainMap:将多个字典视为一个,解锁Python超能力. Python标准库中的集合模块包含 ...
- python基本统计量_Python中简单统计量的计算
本篇文章给大家带来的内容是关于Python中简单统计量的计算,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.这些操作都要确保已经在电脑中安装好了Anaconda集成库,如果安装好 ...
- python串口通信_python 读取串口数据的示例
python3 读取串口数据 demo 最近在写一个demo,zigbee串口连接树莓派,树莓派使用串口通信接受zigbee穿过来得值.其中我是用的树莓派是3代B+,zigbee每隔三秒钟从串口输出数 ...
- python解析原理_Python 中 -m 的典型用法、原理解析与发展演变
在命令行中使用 Python 时,它可以接收大约 20 个选项(option),语法格式如下: python [-bBdEhiIOqsSuvVWx?] [-c command | -m module- ...
- python正则表达式空格_python中的正则表达式的使用
一.正则表达式简介 正则表达式:又称正规表示式.正规表示法.正规表达式.规则表示式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或者是RE),是计算 ...
- python wraps模块_python中 wraps 的作用
这里使用两段代码比较加入wraps装饰器后,函数打印的结果对比: 新建文件名:Testword 代码1:不加wraps装饰器 # coding=utf-8 from functools import ...
- 用python输出数组_Python 中输出数组中的全部元素
只需要在开头加上一句即可 import numpy as np np.set_printoptions(threshold=np.inf) Python 输出到文本中 参考:https://blog. ...
- python 高级使用实例_Python中的高级函数map/reduce使用实例
怎么用Python写mapreduce,请举例说明,初学者,请1.lambda # 匿名函数# 基本用法 lambda x: x**2 # 第一个参数,然后是表达式# 也可以使用如下(lambda x ...
- python海龟作图好看图案_Python中的高级turtle(海龟)作图
在Python里,海龟不仅可以画简单的黑线,还可以用它画更复杂的几何图形,用不同的颜色,甚至还可以给形状填色. 一.从基本的正方形开始 引入turtle模块并创建Pen对象: >>> ...
- python海龟绘图颜色_Python中的高级turtle(海龟)作图(续)
四.填色 color 函数有三个参数.第一个参数指定有多少红色,第二个指定有多少绿色,第三个指定有多少蓝色.比如,要得到车子的亮红色,我们用 color(1,0,0),也就是让海龟用百分之百的红色画笔 ...
最新文章
- classpath详解
- AI理论知识基础(26)-相对熵,KL散度
- 利用matlab提取水印,怎么在含有水印的图像中提取出水印
- C和指针之函数之归以字符形式按顺序打印数字的每位数字(递归和非递归)
- 解决CsrfFilter与Rest服务Post方式的矛盾
- 深入解读Docker底层技术Cgroup
- MPLAB PICKIT3、MPLAB SIM调试
- 关系数据库与对象数据库
- 无线路由器WINS服务器,怎么创建和配置wins服务器
- JRebel出现ERROR Failed to obtain seat. Unable to connect to license server
- ECS 入门到入土: 一、什么是 ECS
- 机器学习中向量函数的求导问题
- 叹为观止,四款让人赞不绝口的优质软件,越用越上瘾
- DRM驱动(六)之atomic_check
- unity打PC包修改exe版本信息
- 高级计算机网络(习题二加解析)
- ThinkPHP 多语言模块RCE漏洞复现
- Highly Efficient Salient Object Detection with 100K Parameters论文解读
- dede首页php调用会员积分,dedecms织梦添加会员积分的方法
- CS224n自然语言处理(一)——词向量和句法分析