¼¼Êõ²©¿Í

29/03/2016 ×÷Õß ÔÆº£ÓÎÏ·

kvmlibÈëÃÅÖ¸ÄÏ ¡ª ÈçºÎʹÓÃkvmlibÅäÖÃÔÆº£ÓÎÏ· Memorator Pro 5xHS

ÕâÊÇʹÓÃÔÆº£ÓÎÏ· MemoratorµÚ¶þ´úÉ豸ͨ¹ýkvmlib½øÐÐÅäÖúͶÁÈ¡¼Ç¼Êý¾Ý4ƪϵÁÐÎÄÕµĵÚһƪ£º

  1. kvmlibÈëÃÅÖ¸ÄÏ
  2. ÔÚÅäÖÃÖÐÌí¼Ó½Å±¾ºÍ´¥·¢Æ÷
  3. ÉîÈëÁ˽âkvmlib
  4. ʹÓÃkvmlibÅäÖÃSD¿¨

µÚһƪÎÄÕ½«¸ÅÊöÈçºÎʹÓÃPythonÅäÖÃÔÆº£ÓÎÏ·É豸¡£µÚ¶þƪÎÄÕÂÔÚÅäÖÃÉÏÔö¼ÓÁËһЩ¸´ÔÓÐÔ£¬¶øµÚÈýƪÎÄÕ½«¸üÉîÈëµØ½²ÊöÈçºÎÔÚC API¼¶±ðʹÓÃkvmlib¡£×îºóһƪÎÄÕ½²ÊöÔÚÖ»¿É·ÃÎÊ¿ÉÒÆ¶¯SD¿¨µÄÇé¿öÏÂÈçºÎÅäÖÃÉ豸¡£È«²¿³ÌÐòÁбí¿ÉÔÚGitHubÉÏ»ñµÃ¡£

1.1 ¼ò½é

ÔÆº£ÓÎÏ· MemoratorµÚ¶þ´úÉèµÄÅäÖñ¸Í¨³£Ê¹ÓÃÔÆº£ÓÎÏ· MemomoratorÅäÖù¤¾ßÍê³É£¬ËüÊÇÒ»ÖÖGUI¹¤¾ß¡£µ«ÊÇÄãÒ²¿ÉÒÔʹÓðüº¬ÔÚCANlib SDK1¿ª·¢°üÖеÄkvmlibÀ´±à³ÌÅäÖÃÕâЩÉ豸¡£ÕâÀïÎÒÃǽ«½²ÊöÈçºÎʹÓÃkvmlibÅäÖÃÔÆº£ÓÎÏ· Memorator Pro 5xHS2¡£

ÓйØÔƺ£ÓÎÏ· SDK¿âµÄ¸ÅÊö£¬ÇëÔĶÁÕâÆª¹ØÓÚÈçºÎʹÓÃÔÆº£ÓÎÏ· SDK¿â´ÓÓ²¼þÖлñµÃ¸ü¶àÐÅÏ¢µÄ²©ÎÄ¡£

ÎÒÃÇÊÇÔÚWindowsϵͳÉÏÔËÐУ¬ËùÒÔÊ×ÏÈÎÒÃÇÐèÒªÏÂÔØ²¢°²×°CANlib SDK¡£±¾ÎĽ«Ê¹ÓÃPython3À´·ÃÎÊkvmlib£¬Òò´ËÈç¹ûÄã֮ǰûÓп´¹ýͨ¹ýPython·ÃÎÊCANlibµÄ²©ÎÄ£¬ÄÇÄã¿ÉÄÜÐèÒªÊ×ÏÈÔĶÁÏ¡£

ΪÁ˼ò½à£¬±¾²©ÎÄÖеĴúÂëÆ¬¶ÎÊ¡ÂÔÁËÒÔÏÂimportÓï¾ä£º4

ÏÂÔØCANlib

ÏÂÔØCANlib

ÏÂÔØº¬APIºÍʾÀýµÄSDK¿ª·¢°ü

ÏÂÔØ
import datetime

import kvaMemoLibXml
import kvDevice
import kvmlib

Áбí1£ºÓ¦°üº¬ÔÚËùÓдúÂëÆ¬¶ÎÖеÄimportÓï¾ä

ÎÒÃǽ«Ê¹ÓÃÔËÐй̼þ°æ±¾3.0µÄÔÆº£ÓÎÏ· Memorator Pro 5xHS5£¬Èç¹ûÄúµÄ¹Ì¼þ°æ±¾½Ï¾É£¬ÇëÔÚ¼ÌÐøÇ°½øÐиüС£

1.2 ³õʼ»¯SD¿¨

½ö½öÔÚÎÒÃǵIJÙ×÷ϵͳÎļþ¹ÜÀíÆ÷Öиñʽ»¯SD¿¨ÊDz»¹»µÄ£¬ÎÒÃÇ»¹ÐèҪʹÓÃÎÒÃǵÄÔÆº£ÓÎÏ· MemoratorÉ豸³õʼ»¯SD¿¨¡£½«SD¿¨²åÈëÎÒÃǵÄÔÆº£ÓÎÏ· MemoratorÉ豸ºó£¬ÎÒÃǽ«Ôƺ£ÓÎÏ· MemoratorÉ豸Á¬½Óµ½ÎÒÃǼÆËã»úÉϵĿÕÏеÄUSB¶Ë¿Ú£¬²¢ÔËÐÐÎÒÃǵĴúÂëµÄµÚÒ»¸ö룬ÈÃÎÒÃÇ¿´µ½¸ÃÉ豸¿ªÊ¼ÔË×÷¡£

# Connect to our ÔÆº£ÓÎÏ· Memorator Pro 5xHS with EAN 00778-9
dev = kvDevice.kvDevice(ean="73-30130-00778-9")
print dev

Áбí2£ºÊ¹ÓÃkvDeviceÄ£¿éÁ¬½Óµ½Ôƺ£ÓÎÏ·É豸

Device: ÔÆº£ÓÎÏ· Memorator Pro 5xHS (channel 0)
EAN : 73-30130-00778-9
S/N : 1023
FW : v3.0.546
Card : 0
Drv : kcany0a
Card channel : 0
Canlib channel: 0

ÔÚÕâÀïÎÒÃÇ×¢Òâµ½£¬ÎÒÃÇÄܹ»Á¬½ÓÉ豸£¬ÎÒÃÇȷʵʹÓõÄÊǹ̼þ°æ±¾3.0¡£ÏÖÔÚÈÃÎÒÃÇ´ò¿ªÉ豸²¢ÇÒʹÓÃĬÈÏÖµ³õʼ»¯SD¿¨¡£

# Open the device
dev.memoOpen()

# Initialize the SD card with default values
dev.memo.deviceFormatDisk()

# Close the device
dev.memoClose()

Áбí3£ºÔÚÔÆº£ÓÎÏ·É豸Öгõʼ»¯SD¿¨

1.3 ´´½¨ÅäÖÃ

ÏÖÔÚÎÒÃDZØÐëͨ¹ý±àдһ¶ÎXML´úÂëÀ´´´½¨ÅäÖÃ6¡£ÓйØXML¸ñʽ×îа汾µÄ¸ü¶àÐÅÏ¢£¬¼ûÔÆº£ÓÎÏ· MemoratorÉ豸ÅäÖÃXML¸ñʽ¹æ·¶ÎĵµÖÐÏà¹ØÃèÊö¡£ÈÃÎÒÃǾÙÒ»¸ö¼òµ¥µÄÀý×Ó£¬¼ÙÈçÎÒÃÇֻʹÓÃͨµÀ1ºÍ2¡£ÎÒÃǽ«ÕâÁ½¸öͨµÀµÄ²¨ÌØÂÊÉèÖÃΪ1Mbps£¬²¢ÔÚ¾²Ä¬Ä£Ê½Ï¼Ç¼һÇÐÄÚÈÝ¡£

<?xml version="1.0" ?>
<!DOCTYPE KVASER>
<KVASER>
  <VERSION>2.0</VERSION>
  <BINARY_VERSION>6.0</BINARY_VERSION>
  <SETTINGS>
    <MODE fifo_mode="NO" log_all="YES"/>
  </SETTINGS>
  <CAN_BUS>
    <PARAMETERS bitrate="1000000" channel="0" silent="YES" sjw="1" tseg1="5" tseg2="2"/>
    <PARAMETERS bitrate="1000000" channel="1" silent="YES" sjw="1" tseg1="5" tseg2="2"/>
  </CAN_BUS>
  <TRIGGERBLOCK/>
  <SCRIPTS/>
</KVASER>

Áбí4£º¼òµ¥µÄXMLÅäÖÃʾÀý

XMLµÄµ±Ç°°æ±¾ÊÇv2.0£¬ÎÒÃǵÄÉ豸ÔËÐеÄÊÇv3.0°æ±¾¹Ì¼þ£¬¶øÎÒÃÇÆÚÍûÔËÐеĶþ½øÖư汾6.0¡£

ÔÚÏÂһƪÎÄÕÂÖУ¬ÎÒÃÇÔö¼ÓÁËÅäÖõĸ´ÔÓÐÔ£¬ÎÒÃǽ«Ñо¿ÈçºÎÔÚ³¢ÊÔÏÂÔØÅäÖÃ֮ǰ½«Æä½øÐÐÏÔʽÑéÖ¤¡£ÏÖÔÚÎÒÃÇÖ»ÄÜÈ·±£ÎÒÃÇÊäÈëµÄXMLûÓÐÈκδíÎó¡£

1.4 ÏÂÔØÅäÖÃ

ÎÒÃÇÏÖÔÚ½«Òª×¼±¸¿ªÊ¼¼Ç¼£¬ÎÒÃÇÖ»ÐèÒª½«ÅäÖ÷ÅÔÚÉ豸ÉÏ¡£È»ºó½«Í¨¹ý¶ÁÈëÎÒÃǸոմ´½¨µÄXMLÎļþ£¬½«´ËXMLÅäÖÃת»»Îª¶þ½øÖÆÅäÖò¢½«¶þ½øÖÆÅäÖÃÏÂÔØµ½É豸¡£

xl = kvaMemoLibXml.kvaMemoLibXml()

# Read in the XML configuration file
with open("logall.xml", ’r’) as myfile:
config_xml = myfile.read()

# Convert the XML configuration to a binary configuration
config_lif = xl.kvaXmlToBuffer(config_xml)

# Open the device and write the configuration
dev.memoOpen()
dev.memo.kmfWriteConfig(config_lif)

# Close the device
dev.memoClose()

Áбí5£º½«ÅäÖÃÏÂÔØµ½Ôƺ£ÓÎÏ·É豸

ÏÖÔÚÎÒÃǽ«ÎÒÃÇÅäÖõÄÉ豸Óë¼ÆËã»ú¶Ï¿ª£¬²¢ÇÒ½«ÎÒÃǵÄÉ豸Á¬½Óµ½ÏÖÓеÄCAN×ÜÏߣ¬Í¨¹ý¸øÉ豸µÄCAN 1×ÜÏßÁ¬½ÓÆ÷ͨµçÀ´¿ªÊ¼¼Ç¼¡£

1.5 ¶ÁÈ¡Ëù¼Ç¼µÄ±¨ÎÄ

ÔÚÎÒÃǼǼÁËһЩ±¨Îĺó£¬ÎÒÃÇÔٴν«ÎÒÃǵÄÔÆº£ÓÎÏ· MemoratorÉ豸Á¬½Óµ½ÎÒÃǼÆËã»úÉϵÄÒ»¸ö¿ÕÏеÄUSB¶Ë¿Ú£¬²¢¶Á³ö½á¹û¡£

# Connect to our ÔÆº£ÓÎÏ· Memorator Pro 5xHS with EAN 00778-9
dev = kvDevice.kvDevice(ean="73-30130-00778-9")
dev.open()
dev.memoOpen()
fileCount = dev.memo.logFileGetCount()
print "Found %d file%s on card:" % (fileCount,
"s" if fileCount > 1 else "")

# Loop through all logfiles and write their contents to stdout
for fileIndx in range(fileCount):
myEvents = dev.memoReadEvents(fileIndx)
for event in myEvents:
print event
print "\n"

# Delete all logfiles
dev.memo.logFileDeleteAll()

# Close device
dev.memoClose()
dev.close()

Áбí6£º¶ÁÈ¡¼Ç¼µÄ±¨ÎIJ¢´òÓ¡µ½±ê×¼Êä³ö£¨stdout£©

Found 1 file on card:
*t: ? ? ? ? ?- EAN:73-30130-00778-9 s/n:1023 FW:v3.0.546 LIO:v0.0
t: 0.249998387 DateTime: 2016-02-23 06:56:04
t: 0.249998387 Log Trigger Event (type: 0x1, trigno: 0x00, pre-trigger: 0, post-trigger: -1)

t: 9.479176975 DateTime: 2016-02-23 06:56:13
t: 13.29719495 ch:0 f: 2 id: 490 dlc: 2 d:5d d6
t: 13.29719495 ch:1 f: 2 id: 490 dlc: 2 d:5d d6
t: 13.298196175 ch:0 f: 2 id: 284 dlc: 2 d:a8 b1
t: 13.298196175 ch:1 f: 2 id: 284 dlc: 2 d:a8 b1
t: 13.299137412 ch:0 f: 2 id: 739 dlc: 2 d:7a 4b
t: 13.299137412 ch:1 f: 2 id: 739 dlc: 2 d:7a 4b
t: 13.300282637 ch:0 f: 2 id: 622 dlc: 6 d:8d b9 69 8a 98 e1
t: 13.300282637 ch:1 f: 2 id: 622 dlc: 6 d:8d b9 69 8a 98 e1
t: 13.301156875 ch:0 f: 2 id: 559 dlc: 1 d:78
t: 13.301156875 ch:1 f: 2 id: 559 dlc: 1 d:78
t: ??13.3022261 ch:0 f: 2 id: 33a dlc: 1 d:0d
t: ??13.3022261 ch:1 f: 2 id: 33a dlc: 1 d:0d
t: 13.303279325 ch:0 f: 2 id: 463 dlc: 6 d:14 eb d6 ae ed 46
t: 13.303279325 ch:1 f: 2 id: 463 dlc: 6 d:14 eb d6 ae ed 46
t: 13.304230562 ch:0 f: 2 id: 59b dlc: 6 d:7f a9 28 3a f2 5d
t: 13.304230562 ch:1 f: 2 id: 59b dlc: 6 d:7f a9 28 3a f2 5d
t: 13.305248787 ch:0 f: 2 id: 103 dlc: 8 d:4e 0d 1a dd 8d b2 19 ab

Õâ¾ÍÊÇ´ËÎÄËùÓÐÄÚÈÝ¡£ÎÒÃÇÏÖÔÚÒѾ­ÖªµÀÈçºÎʹÓÃkvmlib½øÐÐÅäÖúͶÁ»Ø¼Ç¼µÄÊý¾Ý¡£ÔÚÏÂһƪÎÄÕ£¬ÎÒÃǽ«·ÖÖ§³öÀ´£¬ÔÙÌí¼ÓһЩ¸´ÔÓµÄÅäÖýøÐн²Êö¡£

½Å×¢

1 CANlib SDK¿ÉÒÔ´Ówww.jytpm.com/developer/canlib-sdkÏÂÔØ¡£

2 ±àÂë73-30130-00778-9

3 Ŀǰ£¬Python°ü×°Æ÷½öÔÚPython v2.7ϲâÊÔ¡£

4 ÍêÕûµÄ³ÌÐòÁбí¼ûgithub.com/ÔÆº£ÓÎÏ·/developer-blog¡£

5 ÔÆº£ÓÎÏ· Memorator Pro 5xHS¹Ì¼þÀ¦°óÔÚÔÆº£ÓÎÏ·¹Ì¼þ¸üй¤¾ßÖУ¬¿ÉÔÚÕâÀïÏÂÔØwww.kvaser.com/downloads

6 XML¸ñʽµÄ×îа汾¼ûÎĵµÔƺ£ÓÎÏ· MemoratorÉ豸ÅäÖõÄXML¸ñʽ¹æ·¶Ïà¹ØÃèÊö¡£

Author Image

Logan Via

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