Python CAN总线通知器

2024-01-06

我正在尝试连接到我的汽车的 CAN 总线。连接正常,数据正在打印到终端,没有任何问题。

bus = can.interface.Bus("can0", bustype="socketcan")
notifier = can.Notifier(bus, [can.Printer()])

我正在使用 Python Can 2.2 和 python 3.7。

我想在 can.dlc 上添加一个带有某种 switch-case 语句的新监听器。下面的伪代码是最好的方法吗?

import can

def parse_data(can):
    SingleCanFrame = can.Message
    print(SingleCanFrame)
    if SingleCanFrame.arbitration_id == 304:    #car voltage
        #convert data 
        #save to DB table 1
    elif SingleCanFrame.arbitration_id == 400:  #car speed
        #convert data 
        #save to DB table 2
    elif SingleCanFrame.arbitration_id == 401:  #car tachometer
        #convert data 
        #save to DB table 3
    else:
        #save to DB errorlog
    
bus = can.interface.Bus("can0", bustype="socketcan")    
notifier = can.Notifier(bus, [parse_data(can)]) 

从本质上讲,这将是一个很好的方法。

但是,如果您想更清楚地表达您的意图,字典会很有帮助:

CAR = {"voltage": 304, "speed": 400, "tachometer": 401} # capital var name as this a constant var

然后你可以将这些值称为if SingleCanFrame.dlc == CAR["voltage"]:这更不容易出错。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python CAN总线通知器 的相关文章

随机推荐

  • 用于分析进程中加载​​的本机 DLL 和程序集的内存占用的工具?

    根据任务管理器 我有一个进程持有 130MB 内存 根据任务管理器 只有 11MB 的活动 NET 对象dotTrace http www jetbrains com profiler 所以我想知道另外 120MB 发生了什么 我需要一个工
  • 在 R 中合并 2 个具有相同但不同 case 列的数据框

    我有两个数据框 但问题是合并 by 列在不同情况下具有值 sn1capx1e0001 与 SN1CAPX1E0001 authors lt data frame surname I c Tukey Venables Tierney Ripl
  • 理解大 O 表示法 - 破解编码面试示例 9

    我被这两个代码困住了 Code 1 int f int n if n lt 1 return 1 return f n 1 f n 1 Code 2 平衡二叉搜索树 int sum Node node if node null return
  • 太阳位置的 R 函数给出了意想不到的结果

    我想计算给定时间 纬度和经度的太阳的位置 我在这里找到了这个很棒的问题和答案 一天中给定时间 纬度和经度的太阳位置 https stackoverflow com questions 8708048 position of the sun
  • 正则表达式中的异或

    寻找一些正则表达式帮助 我想设计一个与字符串匹配的表达式 foo OR bar 但不是两者都 foo AND bar 如果我做类似的事情 foo bar 它将匹配 foobar 不是我正在寻找的 那么 如何才能仅在存在一个或另一个术语时才使
  • Excel4Node:如何下载Excel文件而不保存?

    使用 excel4node 我可以将文件写入硬盘 但我想将其作为下载返回 而不将文件保存在服务器上 我认为以下代码是必需的 但不确定如何使用它 wb writeToBuffer then function buffer console lo
  • 以编程方式将 IIS 应用程序池标识“用户”分配给组

    问题 当创建新的 IIS 应用程序池并将其设置为使用应用程序池标识来获取权限时 我不确定如何将这些标识添加到用户组 例如管理员或性能计数器用户 的背景 我目前正在编写一个 C NET 库 它使用 Microsoft Web Administ
  • Spring MVC 中 POST 方法后重定向

    我的问题是我想重定向到索引页 而不必查看 URL 中附加的属性 我发现解决方案是addFlashAttributes 它不会在 URL 中附加属性 但我看不到此方法保存的任何消息 Code 控制器 RequestMapping value
  • React Hooks 渲染两次

    我定义了一个场景 我们有一个使用父级道具和自身状态的组件 有两个组件 DC 和 JOKER 我的步骤如下 点击DC的按钮 DC设置计数 JOKER 将以旧状态渲染 运行 useEffect 和 setCount JOKER 再次渲染 我想问
  • Gtsummary 输出与 mgcv gam

    我有以下数据集 structure list Age c 83L 26L 26L 20L 20L 77L 32L 21L 15L 75L 27L 81L 81L 15L 24L 16L 35L 27L 30L 31L 24L 24L 31L
  • 在 Gradle 中引用另一个项目中任务的输出

    考虑以下设置 rootProject projectA projectB 有一个任务taskB in projectB我想在复制任务中参考该任务的输出taskA in projectA 例如 taskA可能看起来像这样 task taskA
  • Highcharts X 轴时间来自 JS 日期

    我想使用 Highcharts 可视化数据库中的温度 JS 数据数组如下所示 date object value 例如 Fri Mar 04 2016 01 39 10 GMT 0100 Central Europe Standard Ti
  • 捕获安静的 NaN

    我有一个应用程序 其中某些组件偶尔会在大型数据流中插入 qNaN 这会使整个处理无效 对包含单个 qNaN 的向量进行 FFT 会产生全 qNaN 输出 现在我想捕获该行为中的该组件并找出它为什么这样做 为此 我需要在调试期间以某种方式发出
  • 如何将Python变量发送到bash变量?

    我正在尝试使用 Python 从列表中选择一个变量 然后使用 bash 命令大声说出它 现在我有这样的东西 foo a b c d from random import choice x choice foo foo remove x fr
  • 无休止的异步和等待?

    我不明白关于 async await 的一些事情 异步方法内部必须有一个await调用是强制性的 但是如果有await 那是因为它正在调用另一个异步方法 对吧 因此 它似乎是一个无限的异步方法链 其中等待调用另一个异步方法 那么是否可以创建
  • 将两个结果集合并为一个

    我想知道是否有一种方法可以将两个或多个结果集合并为一个 我实际上需要执行多个查询并只返回一个结果集 我无法使用 UNION 或 JOIN 运算符 因为我正在使用 Cassandra CQL 提前致谢 Playorm 等框架为 Cassand
  • 使用 Webpack 在 Aurelia 中添加模块依赖项

    我刚刚开始使用Aurelia Webpack 骨架 https github com aurelia skeleton navigation tree master skeleton es2016 webpack并尝试简单地添加一个新的依赖
  • 从 sql 渲染 html - webmatrix

    我正在使用带有 webmatrix 的 cshtml 页面 我试图渲染存储在我的数据库中的 html 但输出就像 b Lorem ipsum dolor sit amet consectetur adipiscing elit b 代替Lo
  • 无法通过 Facebook Like 按钮发表评论

    我从以下位置获取 赞 按钮代码https developers facebook com docs reference plugins like https developers facebook com docs reference pl
  • Python CAN总线通知器

    我正在尝试连接到我的汽车的 CAN 总线 连接正常 数据正在打印到终端 没有任何问题 bus can interface Bus can0 bustype socketcan notifier can Notifier bus can Pr