CAN over Serial / SLCAN¶
A text based interface: compatible to slcan-interfaces (slcan ASCII protocol) should also support LAWICEL direct. These interfaces can also be used with socketcan and slcand with Linux. This driver directly uses either the local or remote serial port, it makes slcan-compatible interfaces usable with Windows also. Remote serial ports will be specified via special URL. Both raw TCP sockets as also RFC2217 ports are supported.
Usage: use port or URL[@baurate]
to open the device.
For example use /dev/ttyUSB0@115200
or COM4@9600
for local serial ports and
socket://192.168.254.254:5000
or rfc2217://192.168.254.254:5000
for remote ports.
Supported devices¶
Todo
Document this.
Bus¶
- class can.interfaces.slcan.slcanBus(channel, ttyBaudrate=115200, bitrate=None, btr=None, sleep_after_open=2, rtscts=False, **kwargs)[source]¶
slcan interface
- Parameters
channel (str) – port of underlying serial or usb device (e.g.
/dev/ttyUSB0
,COM8
, …) Must not be empty. Can also end with@115200
(or similarly) to specify the baudrate.ttyBaudrate (int) – baudrate of underlying serial or usb device (Ignored if set via the
channel
parameter)bitrate (
Optional
[int
,None
]) – Bitrate in bit/sbtr (
Optional
[str
,None
]) – BTR register value to set custom can speedpoll_interval – Poll interval in seconds when reading messages
sleep_after_open (
float
) – Time to wait in seconds after opening serial connectionrtscts (
bool
) – turn hardware handshake (RTS/CTS) on and off
- Raises
ValueError – if both
bitrate
andbtr
are set or the channel is invalidCanInterfaceNotImplementedError – if the serial module is missing
CanInitializationError – if the underlying serial connection could not be established
- get_serial_number(timeout)[source]¶
Get serial number of the slcan interface.
- Parameters
timeout (
Optional
[float
,None
]) – seconds to wait for serial number orNone
to wait indefinitely- Return type
Optional
[str
,None
]- Returns
None
on timeout or astr
object.
- get_version(timeout)[source]¶
Get HW and SW version of the slcan interface.
- Parameters
timeout (
Optional
[float
,None
]) – seconds to wait for version or None to wait indefinitely- Return type
Tuple
[Optional
[int
,None
],Optional
[int
,None
]]- Returns
tuple (hw_version, sw_version) WHERE int hw_version is the hardware version or None on timeout int sw_version is the software version or None on timeout
- send(msg, timeout=None)[source]¶
Transmit a message to the CAN bus.
Override this method to enable the transmit path.
- Parameters
msg (Message) – A message object.
timeout (
Optional
[float
,None
]) – If > 0, wait up to this many seconds for message to be ACK’ed or for transmit queue to be ready depending on driver implementation. If timeout is exceeded, an exception will be raised. Might not be supported by all interfaces. None blocks indefinitely.
- Raises
can.CanOperationError – If an error occurred while sending
- Return type
None
- set_bitrate(bitrate)[source]¶
- Parameters
bitrate (
int
) – Bitrate in bit/s- Raises
ValueError – if
bitrate
is not among the possible values- Return type
None
Internals¶
Todo
Document the internals of slcan interface.