Devices and Channels¶
Identifying Devices and Channels¶
Once we have imported canlib.canlib
, which enumerates the connected Kvaser CAN
devices, we can call getNumberOfChannels
to get the number of
enumerated channels in our system.
This code snippet reads the number of enumerated channels found in the PC:
>>> from canlib import canlib
>>> canlib.getNumberOfChannels()
8
Channel Information¶
Use ChannelData
to obtain data for a specific channel, for
example, the hardware type of the CAN interface.
We can use ChannelData
for the CANlib channel numbers 0, 1,
2,…, n-1 (where n is the number returned by
getNumberOfChannels
) to get information about that specific
channel.
To uniquely identify a device, we need to look at both the
ChannelData.card_upc_no
and ChannelData.card_serial_no
.
The following code snippet loops through all known channels and prints the type of the CAN card they’re on.
>>> from canlib import canlib
...
... num_channels = canlib.getNumberOfChannels()
... print("Found %d channels" % num_channels)
... for channel in range(0, num_channels):
... chdata = canlib.ChannelData(channel)
... print("%d. %s (%s / %s)" % (
... channel,
... chdata.channel_name,
... chdata.card_upc_no,
... chdata.card_serial_no)
... )
Found 8 channels
0. Kvaser Leaf Light HS (channel 0) (73-30130-00241-8 / 1346)
1. Kvaser Memorator Pro 2xHS v2 (channel 0) (73-30130-00819-9 / 11573)
2. Kvaser Memorator Pro 2xHS v2 (channel 1) (73-30130-00819-9 / 11573)
3. Kvaser Leaf Pro HS v2 (channel 0) (73-30130-00843-4 / 10012)
4. Kvaser Hybrid 2xCAN/LIN (channel 0) (73-30130-00965-3 / 1100)
5. Kvaser Hybrid 2xCAN/LIN (channel 1) (73-30130-00965-3 / 1100)
6. Kvaser Virtual CAN Driver (channel 0) (00-00000-00000-0 / 0)
7. Kvaser Virtual CAN Driver (channel 1) (00-00000-00000-0 / 0)
Customized Channel Name¶
It is possible to set the customized name returned by ChannelData.card_serial_no
on the device using Kvaser Device Guide by right clicking on the device channel and selecting “Edit Channel Name”

Setting the device’s Channel Name from inside Kvaser Device Guide¶
Now we can read the customized name:
>>> from canlib import canlib
>>> chdata = canlib.ChannelData(channel_number=0)
>>> chdata.custom_name
'Red Channel'
Virtual Channels¶
CANlib supports virtual channels that you can use for development, test or demonstration purposes when you don’t have any hardware installed.
To open a virtual channel, call openChannel
with the
appropriate channel number, and specify ACCEPT_VIRTUAL
in the
flags argument to canOpenChannel().