¼¼Êõ²©¿Í

10/02/2017 ×÷Õß ÔÆº£ÓÎÏ·

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

ÕâÊǹØÓÚCANlib SDK Èí¼þ¿ª·¢¹¤¾ß°üÀïµÄת»»Æ÷¿âConverter Library (kvlclib)ʹÓõIJ©¿ÍµÚÒ»²¿·Ö£¨×ܼÆÎª3²¿·Ö£©)

  1. Êý¾Ýµ¼³ö¸ñʽÓëÊôÐÔ
  2. ת»»µ½ ´¿ASCII (2 of 3)
  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()²Ù×÷¡£

Author Image

Mikkel Gerdes

¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿