首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python可以过滤消息,而掩码不过滤消息。

Python可以过滤消息,而掩码不过滤消息。
EN

Stack Overflow用户
提问于 2022-10-07 16:23:36
回答 1查看 85关注 0票数 1

尝试在python中使用can过滤消息,使用以下方法:

代码语言:javascript
复制
   bus=can.Bus(interface="ixxat",channel=0, bitrate=250000)
   filter=[{"can_id":0x0629, "can_mask"=0xFFFF}]
   bus.setfilters(filter)

   while True:
       msg=bus.recv()
       print(msg)

我也尝试使用"extended"=False,并尝试使用不同的id,以防我误解了0629的含义。使用相同的结果尝试"can_id“= 629,0x629。

最初,我尝试使用filter、bus.apply_filters和bus.set_filters设置总线。似乎没有改变输出。

这样做的目的是跟踪网络中的某个特定设备,以密切监视它,并使响应其消息传递的命令更容易。另外,我也不确定如何向设备具体发送消息,除非在消息本身中也可以找到这些信息(设备上的所有技术规范似乎都表明了这一点)。这是我第一次使用CAN总线,所以我正在学习它,我已经阅读了很多关于它的文档,但仍然保留了一些原则。谢谢你的帮助。

我是否误用了"can_id“或"can_mask”设置?

我是不是误解了这是怎么回事?非常感谢你的帮助。由于上面的代码,我还需要添加更多的细节,所以我正在编写系统说明的内容。我想不出任何可能与解决这个特定问题相关的事情。一旦我学习了如何跟踪每条消息,我就可以识别我们添加的网络上的新设备,确保它们是正确的,然后开始发送消息来在网络中设置它们。再次感谢。

EN

回答 1

Stack Overflow用户

发布于 2022-10-26 19:44:22

@Ryan M. Williams.请尝试在您的代码中使用可以标识为== 0x0629和掩码== 0xFFF,并让我知道是否有效。另外,稍后尝试编写如下代码:

代码语言:javascript
复制
filters = [ {"can_id": 0x0629, "can_mask": 0xFFF, "extended": False} ]

bus = can.interface.Bus(channel=0, bustype="ixxat", can_filters=filters,bitrate=250000)

必须根据IXXAT行为指定CAN _id/掩码,即CAN_id/掩码参数的位0表示CAN帧中的RTR字段。有关更多信息,请参见IXXAT文档,“消息筛选器”一节。

来自ixxat文档

要在列表中单独注册一个ID,请在dwCode中指定所需的ID (包括RTR位),在dwMask中指定0xFFF (11位ID)的值。0x3FFFFFFF (29位ID)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73990030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档