空燃比分析仪,horiba尾气分析仪,CAN总线分析仪,CAN数据记录仪

b体育(福州)有限公司官网

Guangzhou Triv Electronic Technologies Co.LTD

技术服务
SUPPORT

目前位置: 首页 > 技术服务 > 技术资讯

2017-08-14

编辑器格式和属性

作者:admin    点击:2254

这是关于CANlib SDK中使用转换库(kvlclib3篇系列文章第1

1.  编辑器格式和属性(1/3

2.  转换为纯SCII码(2/3

3.  特殊转换情况(3/3

包含在Kvaser Memorator配置工具中的转换器已发布,它是CANlib SDK v5.19中的一个名为kvlclib的单独转换器库。.[1] 如果您使用Kvaser Memorator 配置工具中的“提取和转换文件”(Extract and convert files)向导,则您已经访问了转换器库,可查看具体功能。


图1:从菜单中打开“提取和转换文件”向导

在这篇博文中,b体育(福州)有限公司官网来看看如何使用Python的转换器程序库。转换器程序库(kvlclib)的Python包装器包含在CANlib SDK中,可单独下载使用。[2] 有关如何安装和使用Python包的简短介绍,查看此博文

转换器程序库有两个C函数,kvlcGetFirstWriterFormat()  kvlcGetNextWriterFormat(),可用于列出所有支持的转换器格式。[3] 这两个函数被包装在Python代码中,为kvlc.getFirstWriterFormat() 和kvlc.getNextWriterFormat().[4]

列表1中的第一个程序使用这两个函数来输出所有支持的格式。

import canlib.kvlclib as kvlc

print("Supported formats:")

print(" Id Name (Extension), Description " +=* 50)

# Ask kvlclib for the first supported writer format

id = kvlc.WriterFormat.getFirstWriterFormat()

while True:

    fmt = kvlc.WriterFormat(id)

    print(str(fmt)) 11

    # Ask kvlclib for the next supported writer format

    id = kvlc.WriterFormat.getNextWriterFormat(fmt.id_)

    # If no more writer formats were supported, we get id 0.

    if id == 0:

   break

列表1:使用转换器程序库输出支持的格式

运行列表1中的代码生成所有支持的编辑器(即输出)格式列表:[5]

Supported formats:

  Id   Name  (Extension),  Description

==================================================

   4: CSV Frame (.csv), CAN frames in CSV format

 100: CSV Signal (.csv), Selected signals in CSV format

 200: CSV CCP/XCP (.csv), CCP/XCP calibration in CSV format

 102: Matlab (.mat), Selected signals in Matlab format for ATI Vision

   1: KME 2.4 (.kme), Kvaser binary format (KME 2.4) - used for Vector CANalyzer

   2: KME 2.5 (.kme25), Kvaser binary format (KME 2.5)

   7: KME 4.0 (.kme40), Kvaser binary format (KME 4.0)

   9: KME 5.0 (.kme50), Kvaser binary format (KME 5.0)

   5: Plain text (.txt), CAN frames in plain text format

 105: FAMOS (.dat), Selected signals in FAMOS format

 201: FAMOS CCP/XCP (.dat), CCP/XCP calibration in FAMOS format

   3: Vector ASCII (.asc), CAN frames in Vector ASCII format

   8: Vector BLF (.blf), CAN frames in Vector BLF format

1000: Debug output (.dbg), RAW Debug output

 101: MDF (.log), CAN frames in Vector Mdf

 107: MDF v4.1 (.mf4), CAN frames in MDF v4.1 for Vector CANalyzer

 106: MDF Signal (.mdf), Selected signals in MDF format for Vector CANalyzer

 108: MDF v4.1 Signal (.mf4), Selected signals in MDF v4.1 for Vector CANalyzer

 103: ASCII J1587 (.asc), Vector ASCII J1587

每个编辑器格式都有多个属性,并使用函数kvlcIsPropertySupported(),b体育(福州)有限公司官网可以找出特定编辑器格式是否支持单个属性。例如:属性KVLC_PROPERTY_ATTACHMENTS表示是否可以将文件附加到输出文件。

import canlib.kvlclib as kvlc

# Set output format

fmt = kvlc.WriterFormat(kvlc.FILE_FORMAT_PLAIN_ASC)

# check if format supports KVLC_PROPERTY_ATTACHMENTS

if fmt.isPropertySupported(kvlc.PROPERTY_ATTACHMENTS):    print("PROPERTY_ATTACHMENTS is supported")

else:

    print("PROPERTY_ATTACHMENTS is not supported")

列表2:检查编辑器格式属性存在的示例代码

运行列表2中的代码显示编辑器格式KVLC_FILE_FORMAT_PLAIN_ASC不支持编辑器属性KVLC_PROPERTY_ATTACHMENTS.

PROPERTY_ATTACHMENTS is not supported

一旦b体育(福州)有限公司官网实例化了转换器,大多数(但不是全部)编辑器属性可以使用 kvlcSetProperty()  kvlcGetProperty()进行读写。[6] 也可以使用kvlcGetWriterPropertyDefault()检查单个属性的默认值。例如:属性KVLC_PROPERTY_CHANNEL_MASK 设置为在转换时应该使用的通道的位掩码。

import canlib.kvlclib as kvlc

# set output format

fmt = kvlc.WriterFormat(kvlc.FILE_FORMAT_PLAIN_ASC)

# set resulting output filename taking advantage of the extension defined in

# the format.

outfile = "myresult." + fmt.extension

# create converter

kc = kvlc.Kvlclib(outfile, fmt)

# check if converter supports KVLC_PROPERTY_CHANNEL_MASK

if kc.isPropertySupported(kvlc.PROPERTY_CHANNEL_MASK):

    # print the current (default) value (in binary format)

    print("Original value for CHANNEL_MASK is %s" % bin(kc.getProperty(kvlc.PROPERTY_CHANNEL_MASK)))

    # set a new value

    kc.setProperty(kvlc.PROPERTY_CHANNEL_MASK, 1)

    # print the current value

    print("New value for CHANNEL_MASK is %s" % bin(kc.getProperty(kvlc.PROPERTY_CHANNEL_MASK)))

    # print default value (in binary format)

    print("Default value for CHANNEL_MASK is %s" % bin(kc.getPropertyDefault(kvlc.PROPERTY_CHANNEL_MASK)))

列表3:读取和写入转换器属性的示例代码

运行列表3的代码输出以下结果:

Original value for CHANNEL_MASK is 0b11

New value for CHANNEL_MASK is 0b1

Default value for CHANNEL_MASK is 0b11

脚注

1.  转换器程序库kvlclib,目前仅在Windows操作系统上可用。

2.  CANlib SDK和Python软件包独立下载见www.kvaser.cn/downloads

3.  我会尝试一直在该博文中的运行文本中编写函数名和定义的C格式。

4.  在b体育(福州)有限公司官网的代码中,b体育(福州)有限公司官网通过导入canlib.kvlclib作为kvlc导入转换器包装库,这就使得这个简单的命名方案成功实施。

5.  基于执行细节,结果可以任意顺序返回。

6.  除KVLC_PROPERTY_ATTACHMENTS之外,属性KVLC_PROPERTY_SIGNAL_BASED 和KVLC_PROPERTY_SHOW_SIGNAL_SELECT 仅可用于函数 kvlcIsPropertySupported().


返回列表