广告招募

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

编辑器格式和属性

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

分享:

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

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

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

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

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


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

在这篇博文中,我们来看看如何使用Python的转换器程序库。转换器程序库(kvlclib)的Python包装器包含在CANlibSDK中,可单独下载使用。[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(),我们可以找出特定编辑器格式是否支持单个属性。例如:属性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

一旦我们实例化了转换器,大多数(但不是全部)编辑器属性可以使用 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软件包独立下载见/downloads

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

4. 在我们的代码中,我们通过导入canlib.kvlclib作为kvlc导入转换器包装库,这就使得这个简单的命名方案成功实施。

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

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


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