
¼¼Êõ²©¿Í
Êý¾Ýµ¼³ö¸ñʽºÍÊôÐÔ

ÕâÊǹØÓÚCANlib SDK Èí¼þ¿ª·¢¹¤¾ß°üÀïµÄת»»Æ÷¿âConverter Library (kvlclib)ʹÓõIJ©¿ÍµÚÒ»²¿·Ö£¨×ܼÆÎª3²¿·Ö£©)
- Êý¾Ýµ¼³ö¸ñʽÓëÊôÐÔ
- ת»»µ½ ´¿ASCII (2 of 3)
- ÌØ±ðת»»Æ÷Ìõ¼þ(3 of 3)
°üÀ¨ÔÚÔÆº£ÓÎÏ· MemoratorÉèÖù¤¾ßÀïµÄת»»Æ÷£¬ÊÇ»ùÓÚÒ»¸öÔÚCANlib SDK v5.19.[1]Èí¼þ¿ª·¢°üÄÚ±»³ÆÎªkvlclibµÄת»»Æ÷¿âÌṩµÄ¡£?Èç¹ûÄãÒѾÓùýÔÆº£ÓÎÏ· MemoratorÉèÖù¤¾ßÀïµÄÌáÈ¡ºÍת»»ÎļþÖúÊÖ, Äã¾ÍÒѾÁ˽â´Ëת»»Æ÷¿âÄÜ×öʲô¡£

ͼ 1: ´Ó²Ëµ¥ÖпªÊ¼ÌáÈ¡ºÍת»»Îļþ ¡°Extract and convert files¡±ÖúÊÖ
Ôڴ˲©¿ÍÖУ¬ÎÒÃÇÀ´¿´Ò»ÏÂÔõÑùʹÓÃPythonÀïµÄת»»Æ÷¿â¡£¸ø×ª»»Æ÷¿â(kvlclib)µÄPython×°ÊÎÆ÷Êǰüº¬ÔÚCANlib SDKÈí¼þ¿ª·¢°üÀïµÄ£¬Í¬Ê±Ò²¿ÉÁíÍâÏÂÔØ[2]¡£?Èç¹ûÒª¿´Ò»¸ö¹ØÓÚÈçºÎ°²×°ºÍʹÓÃPythonÈí¼þ°üµÄ¼ò¶Ì½éÉÜ,?Çë¿´´ËÎÄ¡£
´Ëת»»Æ÷¿âÓÐÁ½¸öCº¯Êý£¬kvlcGetFirstWriterFormat()?ºÍ kvlcGetNextWriterFormat(), ËüÃÇ¿ÉÒÔ±»ÓÃÀ´ÁгöËùÓеÄÊÜÖ§³ÖµÄת»»Æ÷¸ñʽ[3]¡£ÕâÁ½¸öº¯ÊýµÄ?Python´úÂëΪ kvlc.getFirstWriterFormat() ºÍ?kvlc.getNextWriterFormat().[4]
ÎÒÃÇÔÚÁбí1ÖеijÌÐòʹÓÃÕâÁ½¸öº¯ÊýÀ´Ð´ËùÓÐÊÜÖ§³ÖµÄ¸ñʽ¡£
import canlib.kvlclib as kvlc
print("Supported formats:")
print(" Id Name (Extension), Description\n" + ’=’ * 50)
# ѯÎÊkvlclibµÚÒ»Êéд¸ñʽ
id = kvlc.WriterFormat.getFirstWriterFormat()
while True:
fmt = kvlc.WriterFormat(id)
print(str(fmt)) 11
#ѯÎÊkvlclibÏÂÒ»¸öÖ§³ÖµÄÊéд¸ñʽ
id = kvlc.WriterFormat.getNextWriterFormat(fmt.id_)
# Èç¹ûûÓÐÈκÎÊÜÖ§³ÖµÄÊéд¸ñʽ£¬ÎÒÃǵõ½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), ÔÆº£ÓÎÏ· binary format (KME 2.4) - used for Vector CANalyzer
2: KME 2.5 (.kme25), ÔÆº£ÓÎÏ· binary format (KME 2.5)
7: KME 4.0 (.kme40), ÔÆº£ÓÎÏ· binary format (KME 4.0)
9: KME 5.0 (.kme50), ÔÆº£ÓÎÏ· 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(), ÎÒÃǾͿÉÒÔ¿´³öÒ»¸ö¾ßÌåÊéд¸ñʽÊÇ·ñÖ§³Öij¸öÌØ¶¨ÐÔÄÜ¡£ÈçÐÔÄÜ?KVLC_PROPERTY_ATTACHMENTS±íÃ÷ÊÇ·ñÎÒÃÇ¿ÉÒÔ¸øÄ³¸öÊä³öÎļþ¸½¼ÓÆäËûÎļþ¡£
import canlib.kvlclib as kvlc
# ÉèÖÃÊä³ö¸ñʽ
fmt = kvlc.WriterFormat(kvlc.FILE_FORMAT_PLAIN_ASC)
# ²é¿´ÊÇ·ñ´Ë¸ñʽ֧³ÖKVLC_PROPERTY_ATTACHMENTS
if fmt.isPropertySupported(kvlc.PROPERTY_ATTACHMENTS):
print("PROPERTY_ATTACHMENTS is supported")
else:
print("PROPERTY_ATTACHMENTS is not supported")
Áбí 2: ²é¿´Êéд¸ñʽÐÔÄܵķ¶Àý´úÂë¡£
ʹÓÃÎÒÃÇÔÚÁбí2ÖеĴúÂëչʾÊéдÐÔÄÜ?KVLC_PROPERTY_ATTACHMENTS²»ÊÜÊéд¸ñʽ?KVLC_FILE_FORMAT_PLAIN_ASCÖ§³Ö
PROPERTY_ATTACHMENTS is not supported
µ±ÎÒÃÇÁгöÒ»¸öת»»Æ÷£¬´ó²¿·ÖÊéдÐÔÄÜ£¨µ«²»ÊÇÈ«²¿ÐÔÄÜ£©¿ÉÓÃkvlcSetProperty() ºÍ kvlcGetProperty()¶ÁÈ¡»òÊéд¡£[6] Ò»¸ö¾ßÌåÐÔÄܵÄȱʡÉèÖÃÒ²¿ÉÓà kvlcGetWriterPropertyDefault()À´²é¿´¡£ÈçÐÔÄÜ. KVLC_PROPERTY_CHANNEL_MASKÊÇÉèÖÃÑ¡ÔñͨµÀÊý¾ÝµÄÒ»¸öÑÚÂ룬ÔÚת»»ÖÐʹÓá£
import canlib.kvlclib as kvlc
# ÉèÖÃÊä³ö¸ñʽ
fmt = kvlc.WriterFormat(kvlc.FILE_FORMAT_PLAIN_ASC)
# ÀûÓøñʽ¶¨ÒåµÄÑÓÉìÉèÖÃÊä³ö½á¹ûÎļþÃû
# ²úÉúת»»
outfile = "myresult." + fmt.extension
# ²úÉúת»»
kc = kvlc.Kvlclib(outfile, fmt)
# ¼ì²éÊÇ·ñת»»Æ÷Ö§³ÖKVLC_PROPERTY_CHANNEL_MASK
if kc.isPropertySupported(kvlc.PROPERTY_CHANNEL_MASK):
# Êéдµ±Ç°£¨È±Ê¡£©Öµ(ÒÔ¶þ½øÖƸñʽ)
print("Original value for CHANNEL_MASK is %s" % bin(kc.getProperty(kvlc.PROPERTY_CHANNEL_MASK)))
# ÉèÖÃÐÂÖµ
kc.setProperty(kvlc.PROPERTY_CHANNEL_MASK, 1)
# Êéдµ±Ç°Öµ
print("New value for CHANNEL_MASK is %s" % bin(kc.getProperty(kvlc.PROPERTY_CHANNEL_MASK)))
#Êéдȱʡֵ(ÒÔ¶þ½øÖƸñʽ)
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.com/downloads¡£
[3] ÎÒ½«¾¡Á¿ÔÚ²©¿ÍÖмÌÐøÔÚÔËÐвÙ×÷ÎÄ×Ö²¿·ÖдC ¸ñʽº¯ÊýÃûºÍ¶¨Òå¡£
[4] ÔÚÎÒÃǵĴúÂëÖÐ, ÎÒÃÇÒÔkvlc µÄÃû³Æµ¼Èëcanlib.kvlclib ת»»Æ÷¿â£¬À´¼ò»¯Ãû³Æ¡£
[5] ÓÉÓÚʵʩµÄ¾ßÌåϸ½Ú£¬½á¹û±»Öص÷ΪÈÎÒâÃüÁî¡£
[6] ?³ýÁË?KVLC_PROPERTY_ATTACHMENTS, ÐÔÄÜ?KVLC_PROPERTY_SIGNAL_BASED
ºÍ KVLC_PROPERTY_SHOW_SIGNAL_SELECT?Ö»ÄÜÓú¯ÊýkvlcIsPropertySupported()²Ù×÷¡£
