¼¼Êõ²©¿Í

10/09/2015 ×÷Õß ÔÆº£ÓÎÏ·

´ÓCANlib·ÃÎÊ»·¾³±äÁ¿£¨2/3£©

ÕâÊǹØÓÚt³ÌÐò»·¾³±äÁ¿3ƪϵÁÐÎÄÕµĵÚ2ƪ£º

  1. »·¾³±äÁ¿¼ò½é
  2. ´ÓCANlib·ÃÎÊ»·¾³±äÁ¿
  3. ÔÆº£ÓÎÏ· TRXºÍ»·¾³±äÁ¿

±¾ÏµÁеĵÚһƪÎÄÕ½éÉÜÁË»·¾³±äÁ¿£¬ÒÔ¼°ÈçºÎÔÚt³ÌÐòÖÐÓ¦Óû·¾³±äÁ¿¡£µÚ¶þƪ½«½éÉÜÈçºÎʹÓÃCANlib·ÃÎÊ»·¾³±äÁ¿¡£È«²¿³ÌÐòÁбí¼ûhttp://github.com/ÔÆº£ÓÎÏ·/developer-blog¡£

»·¾³±äÁ¿ÓÃÓÚÔÚ²»Í¬µÄt³ÌÐòÖ®¼äͨÐÅ£¬»òÕßʹÓÃCANlibÓëPCͨÐÅ¡£ »·¾³±äÁ¿±ØÐëÔÚt³ÌÐòµÄenvvar²¿·ÖÖж¨Òå¡£

ΪÁË´ÓCANlib·ÃÎÊ»·¾³±äÁ¿£¬ÄãÐèҪΪ»·¾³±äÁ¿ÉèÖþä±ú£º

  • kvScriptEnvvarOpen (const int hnd, char *envvarName, int *envvarType, int *envvarSize)´ò¿ªÏÖÓеĻ·¾³±äÁ¿£¬²¢·µ»Ø¾ä±úÒÔ¼°»·¾³±äÁ¿µÄÀàÐͺʹóС¡£ÎªÁËʹ»·¾³±äÁ¿´æÔÚ£¬»·¾³±äÁ¿±ØÐëÔÚCANͨµÀ¾ä±úhndÖ¸ÏòµÄÉ豸¼ÓÔØµÄt³ÌÐòÖж¨Òå¡£
  • kvScriptEnvvarClose :: (kvEnvHandle eHnd)¹Ø±Õ»·¾³±äÁ¿ (ÒÑʹÓÃkvScriptEnvvarOpen()´ò¿ª)¡£

ÄãÐèÒª¼Çס»·¾³±äÁ¿µÄÊý¾ÝÀàÐÍ¡£Èç¹û³¢ÊÔʹÓôíÎóÀàÐÍ·ÃÎÊ»·¾³±äÁ¿£¬Ôò·ÃÎʽ«Ê§°Ü¡£¸ù¾Ý²»Í¬µÄÊý¾ÝÀàÐÍ£¬¿ÉÒÔʹÓò»Í¬µÄº¯Êý·ÃÎÊ»·¾³±äÁ¿£º

  • kvScriptEnvvarSetInt :: (kvEnvHandle eHnd, int val)ÉèÖÃÓÉeHndÖ¸ÏòµÄ»·¾³±äÁ¿µÄÖµ£¬ÆäÒѶ¨ÒåΪint¡£
  • kvScriptEnvvarGetInt :: (kvEnvHandle eHnd, int *val)¼ìË÷¶¨ÒåΪintµÄ»·¾³±äÁ¿µÄÖµ¡£
  • kvScriptEnvvarSetFloat :: (kvEnvHandle eHnd, float val)ÉèÖö¨ÒåΪfloatµÄ»·¾³±äÁ¿µÄÖµ¡£
  • kvScriptEnvvarGetFloat :: (kvEnvHandle eHnd, float *val)¼ìË÷¶¨ÒåΪfloatµÄ»·¾³±äÁ¿µÄÖµ¡£

»·¾³±äÁ¿Ò²¿ÉÒÔ¶¨ÒåΪ³¤¶È¸ß´ïENVVAR_MAX_SIZEµÄcharÊý×顣ΪÁ˼õÉÙ´«ÊäµÄÊý¾ÝµÄ´óС£¬Ê¹ÓÃstart_indexºÍdata_lenÀ´½»»»¶¨ÒåΪcharÊý×éµÄ»·¾³±äÁ¿¡£ Èç¹ûÄãÒÑ»®·ÖÊý¾Ý²¢ÖªµÀÄã¸ÐÐËȤµÄÊý¾Ý²¿·Ö£¬Õâ¿ÉÄܺÜÓаïÖú¡£

  • kvScriptEnvvarSetData :: (kvEnvHandle eHnd, void *buf, int start_index, int data_len)ÉèÖö¨ÒåΪcharÊý×éµÄ»·¾³±äÁ¿ÖеÄÊý¾Ý×Ö½Ú·¶Î§¡£
  • kvScriptEnvvarGetData :: (kvEnvHandle eHnd, void *buf, int start_index, int data_len) ´Ó¶¨ÒåΪcharÊý×éµÄ»·¾³±äÁ¿ÖмìË÷Êý¾Ý×Ö½Ú·¶Î§¡£

ÏÖÔÚ£¬ÎÒÃÇ´ÓPythonµÄ½Ç¶È³¢ÊÔ̸ÂÛÒ»ÏÂt³ÌÐò¡£

ʹÓÃPythonºÍ»·¾³±äÁ¿

ÏÖÔÚÎÒÃÇ¿ÉÒÔÀ´²âÊÔÔÚ±¾ÏµÁеÚһƪÎÄÕÂÖиÅÊö¹ýµÄÓëһ̨ÔËÐÐt³ÌÐòµÄÉ豸½øÐн»»¥¡£ÎªÁËÔËÐвâÊÔ£¬ÎÒÃÇÐèÒªÔËÐаüº¬ÔÚCANlib SDK v5.12ÖеĻ·¾³±äÁ¿µÄ°ü×°Æ÷¡£Ô¤·¢²¼°æ±¾¼ûhttps://github.com/ÔÆº£ÓÎÏ·/canlib-samples¡£

import time
import kvDevice

# Define some values and messages to send to our device
# In order to hide these secret messages, we write them encoded ;-)
messages = [(1, "-Jung unccraf gb n sebt'f pne jura vg oernxf qbja?"),
            (2, "-Vg trgf gbnq njnl."),
            (3, "-Jul jnf fvk fpnerq bs frira?"),
            (4, "-Orpnhfr frira 'ngr' avar."),
            (5, "-Jung vf gur qvssrerapr orgjrra fabjzra naq fabjjbzra?"),
            (6, "-Fabjonyyf."),
            (7, "-Jurer qvq lbh svaq gurfr?"),
            (8, "-uggc://jjj.ynhtusnpgbel.pbz/wbxrf/jbeq-cynl-wbxrf")]


# We will be using the first Eagle device found connected to the PC
# For an introduction to the kvDevice object, see
# http://www.kvaser.com/developer-blog/object-oriented-approach-accessing-kvaser-device-python-3-3/
eagle_ean = "73-30130-00567-9"
dev = kvDevice.kvDevice(ean=eagle_ean)

# Open a handle to the device
dev.open()

# Load the t program into slot 0
dev.channel.scriptLoadFile(0, "envvar.txe")

# Start the program in slot 0
dev.channel.scriptStart(0)

# Our protocol states that we should wait until HostIdConnected is zero before trying to connect
print "Waiting for device to be free..."
# All calls to the kvScriptEnvarOpen() and kvScriptEnvvarGetXXX() functions are hidden in the
# envvar class inside canlib.py. Here we can access it directly with dev.channel.envvar.YYY
while dev.channel.envvar.HostIdConnected != 0:
    time.sleep(0.2)

# Now we try to connect by writing our unique id into the environment variable HostIdRequest.
# We wait until our connection was accepted, i.e. HostIdConnected contains our id.
print "Requesting connection..."
myHostId = 42
print "Waiting for device to connect..."
while dev.channel.envvar.HostIdConnected != myHostId:
    if dev.channel.envvar.HostIdConnected == 0:
        print "Requesting connection..."
        if dev.channel.envvar.HostIdRequest != myHostId:
            dev.channel.envvar.HostIdRequest = myHostId
        time.sleep(0.2)
print "Connected!"

# Start sending our messages to the device
for (severity, message) in messages:
    print "Sending message %d" % severity
    dev.channel.envvar.Severity = severity
    dev.channel.envvar.Message = message.encode('rot13')
    time.sleep(4)

print "Disconnect..."
dev.channel.envvar.HostIdRequest = 0

# Stop the script in slot 0
dev.channel.scriptStop(0)

Ö´ÐÐÉÏÃæµÄPython´úÂë»á²úÉúÈçϵıê×¼Êä³ö£º

Waiting for device to be free...
Requesting connection...
Waiting for device to connect...
Connected!
Sending message 1
Sending message 2
Sending message 3
Sending message 4
Sending message 5
Sending message 6
Sending message 7
Sending message 8
Disconnect...

ÎÒͬÒâÕⲢûÓзdz£µØ¼¤¶¯ÈËÐÄ£¬ËùÒÔÔÚ±¾ÏµÁеÄ×îºóһƪÎÄÕÂÖУ¬ÎÒÃǽ«Ò»Æð¿´¿´ÈçºÎʹÓÃÔÆº£ÓÎÏ· TRXÓëÕâЩ»·¾³±äÁ¿½øÐн»»¥£¬Ôƺ£ÓÎÏ· TRXÊÇÔÚÔÆº£ÓÎÏ·É豸ÉÏ¿ª·¢t³ÌÐòµÄÇáÁ¿¼¯³É¿ª·¢»·¾³£¨IDE£©¡£

Author Image

Magnus Carlsson

Margus CarlssonÊÇÔÆº£ÓÎÏ· AB¹«Ë¾µÄÈí¼þ¿ª·¢ÈËÔ±£¬´Ó2007ÄêÒÔÀ´Éî¶È²ÎÓëÁËÔÆº£ÓÎÏ·¹Ì¼þºÍÈí¼þµÄ¿ª·¢¡£Ëû»¹ÎªÔƺ£ÓÎÏ·µÄ¼¼Êõ²©¿Í׫дÁËÐí¶àÓÃÁ÷ÐеÄPythonÓïÑÔ±àдӦÓóÌÐòµÄÎÄÕ¡£

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