Devices and Channels ==================== Identifying Devices and Channels -------------------------------- Once we have imported `canlib.canlib`, which enumerates the connected Kvaser CAN devices, we can call `~canlib.canlib.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 `~canlib.canlib.ChannelData` to obtain data for a specific channel, for example, the hardware type of the CAN interface. We can use `~canlib.canlib.ChannelData` for the CANlib channel numbers 0, 1, 2,..., n-1 (where n is the number returned by `~canlib.canlib.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" .. figure:: editchannelname.png :align: center 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 `~canlib.canlib.openChannel` with the appropriate channel number, and specify `~canlib.canlib.Open.ACCEPT_VIRTUAL` in the flags argument to canOpenChannel().