我正试着连接我汽车的CAN总线。连接正常,数据正在打印到终端,没有任何问题。在
bus = can.interface.Bus("can0", bustype="socketcan")
notifier = can.Notifier(bus, [can.Printer()])
我使用的是pyhtoncan2.2和python3.7。在
我想在can.dlc公司. 下面的伪代码是最好的方法吗?在
^{pr2}$忘记了参数:def parse_data(can)
新代码
import can
CAR = {"voltage": 304, "speed": 400, "tachometer": 401}
def cellvoltage(SingleCanFrame, MyDB):
#convert data
#save to DB table 1
def packcurrent(SingleCanFrame, MyDB):
#convert data
#save to DB table 2
def tachometer(SingleCanFrame, MyDB):
#convert data
#save to DB table 3
def parse_data(can):
SingleCanFrame = can.Message
MyDB = SomeDB.Connect()
print(SingleCanFrame)
if SingleCanFrame.arbitration_id == CAR["voltage"]: #car voltage
cellvoltage(SingleCanFrame, MyDB)
elif SingleCanFrame.arbitration_id == CAR["speed"]: #car speed
packcurrent(SingleCanFrame, MyDB)
elif SingleCanFrame.arbitration_id == CAR["tachometer"]: #car tachometer
tachometer(SingleCanFrame, MyDB)
else:
#save to DB errorlog
bus = can.interface.Bus("can0", bustype="socketcan")
notifier = can.Notifier(bus, [parse_data(can)])
基本上,这将是一个很好的方法。在
但是,如果您想更清楚地表达您的意图,字典会很有帮助:
然后您可以将这些值称为
if SingleCanFrame.dlc == CAR["voltage"]:
,这是不容易出错的。在相关问题 更多 >
编程相关推荐