直接上代码
class Pcan_com():
def __init__(self):
#设置canbus,用来收发数据, 设置通道和波特率.
self.bus = PcanBus(channel='PCAN_USBBUS1', bitrate=500000)
#消息,用来发数据,arbitration_id=0x202:CAN ID
#data 为发送的数据,is_extended_id:是否为扩展帧,默认Ture(是)
self.msg = can.Message(arbitration_id=0x202, data= self.link_data,
is_extended_id=False)
#设置过滤器,过滤ID,是否为扩展帧
self.bus.set_filters([{"can_id": 0x203, "can_mask": 0xFFFF, "extended": False}])
#记录初始时间
self.start_time = time.time()
#日志,如果想停掉就:logging.shutdown()
self.fmt = "%(levelname)s: %(message)s"
self.log_name = "logs.txt"
logging.basicConfig(
level=logging.DEBUG,
format=self.fmt,
filename=self.log_name,
filemode="w",
datefmt="%a, %d %b %Y %H:%M:%S")

本文档介绍了作者在使用Pcan_com类进行主从式CAN通信时遇到的接收队列过早读取错误,并详细描述了如何通过重置Canbus和清理接收缓存来确保通信时序。重点在于解决实际编程问题和调试技巧。
最低0.47元/天 解锁文章
1万+





