Source code for canlib.kvlclib.writerformat
import ctypes as ct
from .. import deprecation
from .enums import FileFormat
from .properties import _PROPERTY_TYPE
from .wrapper import dll
[docs]def writer_formats():
"""Return a generator of all writer formats.
You may list available Writers using::
>>> from canlib import kvlclib
>>> for format in kvlclib.writer_formats():
... print(format)
CSV (.csv): Writer, CAN frames in CSV format
CSV_SIGNAL (.csv): Writer, Selected signals in CSV format
XCP (.csv): Writer, CCP/XCP calibration in CSV format
MATLAB (.mat): Writer, Selected signals in Matlab format for ATI Vision
KME24 (.kme): Writer, Kvaser binary format (KME 2.4) - used for Vector CANalyzer
KME25 (.kme25): Writer, Kvaser binary format (KME 2.5)
KME40 (.kme40): Writer, Kvaser binary format (KME 4.0)
KME50 (.kme50): Writer, Kvaser binary format (KME 5.0)
PLAIN_ASC (.txt): Writer, CAN frames in plain text format
...
.. versionadded:: 1.7
"""
id_ = ct.c_int()
dll.kvlcGetFirstWriterFormat(ct.byref(id_))
while id_.value != FileFormat.INVALID:
yield WriterFormat(FileFormat(id_.value))
previous_id = id_.value
dll.kvlcGetNextWriterFormat(previous_id, ct.byref(id_))
[docs]class WriterFormat:
"""Helper class that encapsulates a Writer.
You may use `writer_formats()` to list available Writers.
.. versionchanged:: 1.19
Updated formating in `__str__`.
"""
[docs] @classmethod
@deprecation.deprecated.favour("kvlclib.writer_formats")
def getFirstWriterFormat(cls):
"""Get the first supported output format."""
id_ = ct.c_int()
dll.kvlcGetFirstWriterFormat(ct.byref(id_))
return FileFormat(id_.value)
[docs] @classmethod
@deprecation.deprecated.favour("kvlclib.writer_formats")
def getNextWriterFormat(cls, previous_id):
"""Get the next supported output format."""
id_ = ct.c_int()
dll.kvlcGetNextWriterFormat(previous_id, ct.byref(id_))
return FileFormat(id_.value)
def __init__(self, id_):
self.id_ = id_
self.name = "Unknown name"
self.extension = "Unknown extension"
self.description = "Unknown description"
text = ct.create_string_buffer(256)
text_len = ct.c_int(ct.sizeof(text))
dll.kvlcGetWriterName(self.id_, text, text_len)
self.name = text.value.decode('utf-8')
text_len = ct.c_int(ct.sizeof(text))
dll.kvlcGetWriterExtension(self.id_, text, text_len)
self.extension = text.value.decode('utf-8')
text_len = ct.c_int(ct.sizeof(text))
dll.kvlcGetWriterDescription(self.id_, text, text_len)
self.description = text.value.decode('utf-8')
def __repr__(self):
text = f"WriterFormat({self.id_!r})"
return text
def __str__(self):
text = f"{self.id_.name} (.{self.extension}): Writer, {self.description}"
return text
[docs] def isPropertySupported(self, wr_property):
"""Check if specified write property is supported.
Retuns True if the property is supported by output format.
Args:
wr_property (`Property`): Writer property
Returns:
`bool`
"""
supported = ct.c_int()
# Backward compatibility with deprecated kvlclib.PROPERTY_XXX
if isinstance(wr_property, dict):
wr_property = wr_property['value']
dll.kvlcIsPropertySupported(self.id_, wr_property, ct.byref(supported))
return bool(supported.value)
[docs] def getPropertyDefault(self, wr_property):
"""Get default value for property."""
if wr_property is None:
buf = ct.c_bool()
else:
# Backward compatibility with deprecated kvlclib.PROPERTY_XXX
if isinstance(wr_property, dict):
buf = wr_property['type']
wr_property = wr_property['value']
else:
buf = _PROPERTY_TYPE[wr_property]()
dll.kvlcGetWriterPropertyDefault(self.id_, wr_property, ct.byref(buf), ct.sizeof(buf))
return buf.value