95 lines
2.9 KiB
Python
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'
|
|
|
|
|
|
|
|
|
|
|
|
|