广告招募

当前位置:全球资源网 > 技术中心 > 所有分类

通过Python访问Kvaser设备面向对象程度更高的方法(3/3)

2025年11月12日 09:54:37      来源:广州智维电子科技有限公司 >> 进入该公司展台      阅读量:1

分享:

本文是通过Python使用Kvaser产品三篇系列文章的篇

1. 通过Python访问Kvaser CANlib

2. 通过Python连接到远程设备

3. 通过Python访问Kvaser设备的面向对象程度更高的方法

以前我们已经见识到如何在Python中使用canlib.pykvrlib.py包装器(目前为v2.7)。然而,这些主要只是“包装器”,并没有考虑到使用面向对象语言(Python)的灵活性(对于像C#这样的其它包装器也是如此)。

在测试期间,我们的注意力常常放在特定设备上,而不是以通道为中心的CANlib。当您处理远程设备时更是如此,如Kvaser BlackBird v2Ethercan,在远程连接时会启动新的CANlib通道。此时通过新的Python模块kvDevice来处理。

要打开特定设备,请提供EAN和序列号,如下所示。

import os

import sys

sys.path.append("C:/temp/Canlib_SDK_v5.9/Samples/Python")

import kvDevice

device =kvDevice.kvDevice(ean="73-30130-00778-9", serial=1023)

print "", device

View sourceCopy to clipboard

如果有匹配该EAN和序列号的设备,我们会得到以下输出:

Device: Kvaser Memorator Pro 5xHS (channel0)

EAN : 73-30130-00778-9

S/N : 1023

FW : v2.5.287

Card : 1

Drv : kcany1a

Canlib channel: 3

View sourceCopy to clipboard

如果我们不指定序列号,我们将获得与EAN匹配的个设备。也可以直接指定CANlib通道。

device =kvDevice.kvDevice(ean="73-30130-00778-9")

print "", device

device = kvDevice.kvDevice(ch=6)

print "", device

View sourceCopy to clipboard

Device: Kvaser Memorator Pro 5xHS (channel0)

EAN : 73-30130-00778-9

S/N : 1023

FW : v2.5.287

Card : 1

Drv : kcany1a

Canlib channel: 2


Device: Kvaser Memorator Pro 5xHS (channel4)

EAN : 73-30130-00778-9

S/N : 1023

FW : v2.5.287

Card : 1

Drv : kcany1e

Canlib channel: 6

View sourceCopy to clipboard

我们举个例子,如果没有找到指定的设备,我们仍然会收到一个返回的设备,但是不会有任何相关信息。

devices = kvDevice.kvDevice.allDevices()

print "List all %d devices" %(len(devices))

for dev in devices:

print "", dev


print "---Try and find anon-existing device."

device =kvDevice.kvDevice(ean="73-30130-00778-9", serial=100)

print "", device

View sourceCopy to clipboard

List all 2 devices


Device: Kvaser Eagle (channel 0)

EAN : 73-30130-00567-9

S/N : 71

FW : v2.5.261

Card : 0

Drv : kcany0a

Canlib channel: 0


Device: Kvaser Memorator Pro 5xHS (channel0)

EAN : 73-30130-00778-9

S/N : 1023

FW : v2.5.287

Card : 1

Drv : kcany1a

Canlib channel: 2

---

Try and find a non-existing device.

Device: None

EAN : 73-30130-00778-9

S/N : 100

FW : None

Card : None

Drv : None

Canlib channel: None

View sourceCopy to clipboard

如果您查看模块kvDevice.py,就会注意到,大多数属性存储在以下划线(_driver,_channel等)开头的名称中。这预示着这些值是已使用过的已知值。 (在Python中,开头用下划线通常是一个弱的“内部使用”指标)。也就是说,设备现在可以被删除或者重新插入,这样会重新编号,但是设备次是通过kvDevice.py打开,会发现那些值在被使用。 (该设备位于CANlib通道_channel上,驱动程序名_driver.

希望本概述——通过Python用来帮助管理Kvaser设备,将有助于您在开发人员角色中获得更高的效率。

版权与免责声明:
1.凡本网注明"来源:全球资源网"的所有作品,版权均属于全球资源网,转载请必须注明全球资源网。违反者本网将追究相关法律责任。
2.企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
3.本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。 4.如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系。