2017-08-07
Python开发实例已添加到开发包中
作者:admin 点击:3210
随着CANlib SDK v5.17的发布,Python实例包也已经更新。并非只是发布单独的Python文件,而是现在将这些文件放置在Python Wheel中以及方便安装的.zip压缩包。
希望即使你现在需要更改当前的Python脚本,新版本打包的好处也将胜过麻烦。
b体育(福州)有限公司官网支持Python 2.7,但还没有完全支持Python 3.4+(存在一些已知的Unicode字符串的问题)。
b体育(福州)有限公司官网非常感谢您能通过电子邮件发送到support@kvaser.com提供错误报告、贡献、改进建议以及其他类似方面。
安装
b体育(福州)有限公司官网首先需要安装Python CANlib包装器所依赖的DLL或共享对象文件。
Windows
在Windows上,通过在Kvaser下载页面上找到、下载并安装“Kvaser Windows驱动程序”来安装`canlib32.dll’。这也将安装`kvrlib’使用的所有.dll文件。
如果要使用kvmlib包装器,Kvaser CANlib SDK也可以从同一位置下载并安装。
Linux
在Linux上,通过在Kvaser下载页面上找到、下载并安装“Kvaser LINUX驱动程序和开发包”来安装libcanlib.so。
目前,Linux上仅支持Kvaser CANlib。
Python包
下一步是安装Python canlib包,可以在Python目录中的实例文件夹下找到,它也是安装CANlib SDK的目录。使用如pip(其中x.y.z是版本号)安装Python包:
pip install canlib-x.y.z.zip |
如果你运行的是最新版本的Python(Python 3.4,Python 2.7.9或更高版本),你已经包含pip。如果你运行的是较早版本的Python,你可以按照此处的安装说明安装pip。
用法
Python包将尽力找出CANlib SDK安装的目录来找到.dll文件。如果失败,或者你想指向所需的.dll文件存放的模块位置,设置环境变量`KVDLLPATH’指向相关的目录。
由于Python代码现在放在一个模块中,b体育(福州)有限公司官网还必须将模块名称’canlib’添加到导入和使用语句中,例如类似这样:
import canlib.canlib as canlib cl = canlib.canlib() print("canlib version: %s" % cl.getVersion()) |
卸载
由于b体育(福州)有限公司官网使用pip,b体育(福州)有限公司官网可以显示有关已安装的Python包的详细信息:
pip show canlib |
b体育(福州)有限公司官网还可以使用以下方法卸载包:
pip uninstall canlib |
在Linux上运行Python开发包
今天b体育(福州)有限公司官网来看看如何使用Kvaser的新版Python开发包canlib来设置和发送CAN报文。本例子中b体育(福州)有限公司官网使用Kvaser USBcan Pro 2xHS v2,但可以使用任何Kvaser分析仪b体育(福州)有限公司官网。
第一步是下载并安装Kvaser Linux驱动程序和开发包(CANlib当前版本v5.18):
$ cd ~ $ wget http://www.kvaser.com/software/7330130980754/V5_18_0/linuxcan.tar.gz $ tar xf linuxcan.tar.gz $ cd linuxcan $ make $ sudo make install |
现在b体育(福州)有限公司官网将Kvaser分析仪插入USB端口并运行`listChannels’实例程序,以验证驱动程序是否正确加载以及设备是否被识别:
$ cd canlib/examples $ ./listChannels Found 2 channel(s). channel 0 = Kvaser USBcan Pro 2xHS v2, 73-30130-00752-9, 1012, 3.4.0.822 channel 1 = Kvaser USBcan Pro 2xHS v2, 73-30130-00752-9, 1012, 3.4.0.822 |
下一步是下载并安装Python canlib开发包(当前版本是v1.1.23):
$ cd ~ $ wget http://www.kvaser.com/software/7330130981911/V1_1_23/canlib-1.1.23.zip $ pip install canlib-1.1.23.zip |
如果你使用Python v3,为了Python开发包安装在正确的地方,你可能会使用 pip3而不是pip。
现在b体育(福州)有限公司官网可以编写一个小的Python程序,sendReceiveSingleCanMsg.py,用于在通道1上发送CAN报文,并在通道0上接收相同的CAN报文:
import canlib.canlib as canlib def setUpChannel(channel=0, openFlags=canlib.canOPEN_ACCEPT_VIRTUAL, bitrate=canlib.canBITRATE_500K, bitrateFlags=canlib.canDRIVER_NORMAL): cl = canlib.canlib() ch = cl.openChannel(channel, openFlags) print("Using channel: %s, EAN: %s" % (ch.getChannelData_Name(), ch.getChannelData_EAN())) ch.setBusOutputControl(bitrateFlags) ch.setBusParams(bitrate) ch.busOn() return ch def tearDownChannel(ch): ch.busOff() ch.close() |
运行上面的Python程序会产生以下结果:
$ python sendReceiveSingleCanMsg.py canlib version: 5.18 Using channel: Kvaser USBcan Pro 2xHS v2 (channel 0), EAN: 73-30130-00752-9 Using channel: Kvaser USBcan Pro 2xHS v2 (channel 1), EAN: 73-30130-00752-9 time: 2819710 id: 100 flag:0x04 dlc:4 data:01020304 |
如果你使用Python v3,你很可能会使用python3而不是python。
因此,b体育(福州)有限公司官网已经使用Python canlib开发包成功地发送和接收了一条CAN报文。