python - 如何使用Python-CAN查看CAN网络的错误帧

标签 python error-handling embedded can-bus automotive

我在下面写了程序

can = CAN("can0", bitrate=50000, listen_only=True, error_reporting=True)
while True:
        msg = can.recv()
        print "Msg: ", msg

但是,即使我在S中运行命令以检查X时,它也仅显示标准Terminal或Extended network activity标志,我可以看到错误计数器正在增加。
import can
import CAN
import time
import logging
#logging.basicConfig(level=logging.DEBUG)

print("Initializing Listener")
can1 = CAN('can0', bitrate=500000, listen_only=True, err_reporting=True)
#print "Bus is : ", can1.bus.get_can_bus()
can1.bus.set_filters(can_filters=[{"can_mask":0x7FF, "can_id":0x00000000, "extended":False}])
CAN_ERR_FLAG = 0x20000000

while 1:
   msg = can1.recv()
   if (msg.arbitration_id & CAN_ERR_FLAG) == CAN_ERR_FLAG:
        print "Can Error Caught"
   elif msg.is_error_frame:
        print "Finally Error Frame"

如何读取CAN总线的错误帧?
当我使用commnad candump -e any,0:0,#FFFFFFFF时,一切正常

最佳答案

使用Python-3

import binascii

channel_name = "vcan0"
socketID = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)

# socketID.setsockopt(socket.SOL_CAN_RAW, socket.CAN_RAW_ERR_FILTER, 0x1FFFFFFF)

error = socketID.bind((channel_name,))
print(binascii.hexlify(socketID.recv(32)))

关于python - 如何使用Python-CAN查看CAN网络的错误帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57400907/

相关文章:

python - 查找 pandas 数据框中两个相关列之间的不匹配

python - 如何下载Coco数据集的特定部分?

python - 只打印列表中包含某些字符的字符串

javascript - 复制正常的NodeJS错误打印行为

php - 应用程序中的错误处理函数

java - 传递字节数组;通过junit测试,但无法定期调用方法?

c - 在 C 中为 pic18f1xk22 设置 ADC

python - 如何使用Python计算for循环中的表达式?

c - TI MSP430 中断源

c++ - 实例化同一类中的多个对象时,代码不会运行,但是实例化具有相同代码的重复类中的对象时,代码会起作用