CANLibrary/CANLibrary/example.py
Christian Sueltrop 950dbb787f * Enabled "Send" and "Receive" Message types.
* Updated the example to also employ Sym2Lib library
2014-02-21 16:26:41 +01:00

95 lines
2.9 KiB
Python

# -*- coding: UTF-8 -*-
'''
Example for creating and sending CAN messages via PCAN using the CanMessage, CanSignal and PCan classes.
@author: Christian Sültrop
'''
from CanMessage import CanMessage
from CanSignal import CanSignal
from PCan import PcanAdapter
#from Sym2Lib import addtoPCAN, printCode
from Sym2Lib import Add2Adapter
import time
print '\nCreate a PCAN adapter'
pcan = PcanAdapter(PcanAdapter.Baudrate['500k'])
pcan.initialize()
print '\ncreate some messages'
mMotor_1 = CanMessage(0x280, 8, 10, 'mMotor_1')
pcan.addMessage(mMotor_1)
print 'mMotor_1.Data', pcan.Messages['mMotor_1'].Data
mMotor_2 = CanMessage(0x288, 8, 20, 'mMotor_2')
pcan.addMessage(mMotor_2)
print 'mMotor_2.Data', pcan.Messages['mMotor_2'].Data
print '\ncreate some Signals'
# for mMotor_1
MO1_Leergas = CanSignal(0, 1, 0, 1, 1, 'MO1_Leergas')
MO1_Sta_Pedal = CanSignal(1, 1, 0, 1, 1, 'MO1_Sta_Pedal')
MO1_Mo_m_ex = CanSignal(8, 8, 0, 1, 0, 'MO1_Mo_m_ex')
value = 3000
MO1_Drehzahl = CanSignal(16, 16, 0, 0.25, value, 'MO1_Drehzahl') # split into two bytes
print '\nadd Signals to the Messages'
pcan.Messages['mMotor_1'].addSignal(MO1_Leergas)
pcan.Messages['mMotor_1'].addSignal(MO1_Sta_Pedal)
pcan.Messages['mMotor_1'].addSignal(MO1_Mo_m_ex)
pcan.Messages['mMotor_1'].addSignal(MO1_Drehzahl)
print "pcan.Messages['mMotor_1'].Signals['MO1_Drehzahl'].Data", pcan.Messages['mMotor_1'].Signals['MO1_Drehzahl'].Data
# for mMotor_2
MO2_Kuehlm_T = CanSignal(8, 8, -48, 0.75, 60, 'MO2_Kuehlm_T')
pcan.Messages['mMotor_2'].addSignal( MO2_Kuehlm_T )
pcan.Messages['mMotor_2'].addSignal( CanSignal(24, 8, 0, 1, 0, 'MO2_GRA_Soll') )
pcan.Messages['mMotor_2'].addSignal( CanSignal(0, 6, 0, 1, 44, 'MO2_CAN_Vers') )
print '\nManipulate Signals'
pcan.Messages['mMotor_1'].Signals['MO1_Leergas'].SetData( 0 )
print '\nSend the messages'
pcan.Messages['mMotor_1'].composeData()
print 'mMotor_1.Data', pcan.Messages['mMotor_1'].Data
pcan.sendMessage(pcan.Messages['mMotor_1'])
pcan.Messages['mMotor_2'].composeData()
print 'mMotor_2.Data', pcan.Messages['mMotor_2'].Data
pcan.sendMessage(pcan.Messages['mMotor_2'])
# Test Sym2Lib
Add2Adapter(pcan, "Test.sym")
pcan.Messages['Test'].Signals['Var1'].SetData( 30 )
pcan.Messages['Test'].composeData()
pcan.sendMessage(pcan.Messages['Test'])
# receive messages, if the signal MO1_Drehzahl has changed, print the new value
while True:
#print 'send'
pcan.sendMessage(pcan.Messages['mMotor_2'])
dataOld = pcan.Messages['mMotor_1'].Signals['MO1_Drehzahl'].GetData()
#print 'receive'
pcan.receiveMessage()
if pcan.Messages['mMotor_1'].Signals['MO1_Drehzahl'].GetData() != dataOld:
print 'mMotor_1.Data', pcan.Messages['mMotor_1'].Data
print 'GetData()', pcan.Messages['mMotor_1'].Signals['MO1_Drehzahl'].GetData()
time.sleep(0.01)
# wait a while to make sure messages can be sent and end
time.sleep(1)
print 'end of program'