CANABLE_CONNECT
 
 Connect to a slcan-compatible USB-to-CAN adapter.   Params:    device : SerialDevice  The serial device to connect to.   CAN_address : str  The `CAN_address` to use in other blocks to refer to this connection.
Note: This is not the physical address of the device, but rather a unique identifier for the connection. Needed since not all CAN bus connection can be retreive with a SerialDevice.   bitrate : int  The bitrate to use for the CAN bus.     Returns:    out : Optional[DataContainer]  None    
   Python Code
from flojoy import (
    DataContainer,
    SerialDevice,
    flojoy,
    DeviceConnectionManager,
    HardwareDevice,
)
from typing import Optional
import can
@flojoy(deps={"python-can": "4.3.1"})
def CANABLE_CONNECT(
    device: SerialDevice,
    CAN_address: str,
    bitrate: int = 500000,
    default: Optional[DataContainer] = None,
) -> Optional[DataContainer]:
    """Connect to a slcan-compatible USB-to-CAN adapter.
    Parameters
    ----------
    device : SerialDevice
        The serial device to connect to.
    CAN_address : str
        The `CAN_address` to use in other blocks to refer to this connection.
        Note: This is not the physical address of the device, but rather a unique identifier for the connection. Needed since not all CAN bus connection can be retreive with a SerialDevice.
    bitrate : int
        The bitrate to use for the CAN bus.
    Returns
    -------
    Optional[DataContainer]
        None
    """
    session = can.interface.Bus(
        interface="slcan", channel=device.get_port(), bitrate=bitrate
    )
    DeviceConnectionManager.register_connection(
        HardwareDevice(CAN_address), session, lambda slcan_bus: slcan_bus.shutdown()
    )
    return None
Example
Having problems with this example app? Join our Discord community and we will help you out!
This example shows how to send a frame to a CAN bus using the CANable USB-to-CAN adapter. The application sends a first frame intended to indicate the start of a test on a system. Subsequently, the application sends a burst of messages and then sends a frame to indicate the end of the test.
This application uses an CANABLE_CONNECT block to establish a connection to the CAN bus, but this connection could be replaced by any other connection. For example, the PEAK_CONNECT block could be used instead.