LOAD_DBC
Python Code
from flojoy import flojoy, File, Stateful, DataContainer
from typing import Optional
from cantools import database
@flojoy(deps={"python-can": "4.3.1", "cantools": "39.4.2"})
def LOAD_DBC(file_path: File, default: Optional[DataContainer] = None) -> Stateful:
"""Load a DBC file.
Open and parse a given database file. The database format is inferred from the file extension.
This block is compatible with the following database format. `dbc`, `arxml`, `kcd`, `sym`, `cdd`.
Parameters
----------
file_path : File
The path to the DBC file.
Returns
-------
Stateful : cantools.database.Database
Return a cantools database object.
"""
db = database.load_file(file_path.unwrap())
return Stateful(db)
Example App
This application demonstrates how to use multiple CAN blocks to connect to a PEAK-USB device and read messages from it. The PEAK-USB device is a USB-to-CAN interface that enables you to connect a computer to a CAN network. This device is used in this case to capture the messages of a particular sensor by filtering them directly at the kernel level, thus reducing the load on the CPU, and save those messages to a log file locally.
Once the app is done, the generated logs are exported to an S3 bucket to keep a record of the sensor’s data for further analysis.
To replicate this application, you must connect the PEAK-USB to your computer and install the required driver (refer to the PEAK_CONNECT
blocks for more information on the necessary driver for your platform). Then, simply specify the PEAK-USB channel in the required blocks, and this Flojoy application will log the messages received by the device!
Detecting channels
A valuable block is the PEAK_DETECT_AVAILABLE_DEVICE
. This block allows you to display the devices using the PCAN interface that are connected to your computer.