��CANlib���ʻ���������2/3��

Magnus Carlsson
Thu, 10 Sep 2015 20:38:04 +0000

���ǹ���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...

��ͬ���Ⲣû�зǳ��ؼ������ģ������ڱ�ϵ�е����һƪ�����У����ǽ�һ�𿴿����ʹ���ƺ���Ϸ TRX����Щ�����������н������ƺ���Ϸ TRX�����ƺ���Ϸ�豸�Ͽ���t������������ɿ���������IDE����