diff --git a/CANLibrary/CanMessage.py b/CANLibrary/CanMessage.py index 97dc56f..a5f30b7 100644 --- a/CANLibrary/CanMessage.py +++ b/CANLibrary/CanMessage.py @@ -82,7 +82,9 @@ class CanMessage(object): if tgtByteNo >= self.Length: sys.exit('Signal does not fit into message!') - self.Data[tgtByteNo] |= ((sym.Data[srcByteNo] >> srcBitNo) & 0x01) << tgtBitNo + tmp = (sym.Data[srcByteNo] >> srcBitNo) & 0x01 + tmp = tmp << tgtBitNo + self.Data[tgtByteNo] |= tmp # increment the counters srcBitNo += 1 diff --git a/CANLibrary/CanMessage.pyc b/CANLibrary/CanMessage.pyc index ec4132b..9b7baa0 100644 Binary files a/CANLibrary/CanMessage.pyc and b/CANLibrary/CanMessage.pyc differ diff --git a/CANLibrary/CanSignal.py b/CANLibrary/CanSignal.py index 1ef1fbb..0107a1e 100644 --- a/CANLibrary/CanSignal.py +++ b/CANLibrary/CanSignal.py @@ -30,7 +30,10 @@ class CanSignal(object): self.Length = SignalLength self.Label = SignalLabel - self.Data = SignalData + for i in range(0, int(SignalLength/8)+1): + self.Data.append ( (SignalData >> 8) & 0xff ) + + #self.Data = SignalData def SetData(self, Data): diff --git a/CANLibrary/CanSignal.pyc b/CANLibrary/CanSignal.pyc index e559fcb..b05993c 100644 Binary files a/CANLibrary/CanSignal.pyc and b/CANLibrary/CanSignal.pyc differ diff --git a/CANLibrary/PCan.pyc b/CANLibrary/PCan.pyc index 0e6c088..4dbe897 100644 Binary files a/CANLibrary/PCan.pyc and b/CANLibrary/PCan.pyc differ diff --git a/CANLibrary/example.py b/CANLibrary/example.py index 25cff04..98128a9 100644 --- a/CANLibrary/example.py +++ b/CANLibrary/example.py @@ -1,48 +1,48 @@ # -*- coding: UTF-8 -*- ''' -Example for creating and sending CAN messages via PCAN using the CanMessage, CanSymbol and PCan classes. +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 CanSymbol import CanSymbol +from CanSignal import CanSignal from PCan import PcanAdapter print '\ncreate some messages' -mMotor_1 = CanMessage(0x280, 8, 10) +mMotor_1 = CanMessage(0x280, 8, 10, 'mMotor_1') print 'mMotor_1.Data', mMotor_1.Data -mMotor_2 = CanMessage(0x288, 8, 20) +mMotor_2 = CanMessage(0x288, 8, 20, 'mMotor_2') print 'mMotor_2.Data', mMotor_2.Data -print '\ncreate some symbols' +print '\ncreate some Signals' # for mMotor_1 -MO1_Leergas = CanSymbol(0, 1, [0x01], 'MO1_Leergas') -MO1_Sta_Pedal = CanSymbol(1, 1, [0x01], 'MO1_Sta_Pedal') -MO1_Mo_m_ex = CanSymbol(8, 8, [0x00], 'MO1_Mo_m_ex') +MO1_Leergas = CanSignal(0, 1, [0x01], 'MO1_Leergas') +MO1_Sta_Pedal = CanSignal(1, 1, [0x01], 'MO1_Sta_Pedal') +MO1_Mo_m_ex = CanSignal(8, 8, [0x00], 'MO1_Mo_m_ex') value = int(3000*0.25) -MO1_Drehzahl = CanSymbol(16, 16, [value>>8, value&0x00ff], 'MO1_Drehzahl') # split into two bytes +MO1_Drehzahl = CanSignal(16, 16, [value>>8, value&0x00ff], 'MO1_Drehzahl') # split into two bytes -mMotor_1.addSymbol(MO1_Leergas) -mMotor_1.addSymbol(MO1_Sta_Pedal) -mMotor_1.addSymbol(MO1_Mo_m_ex) -mMotor_1.addSymbol(MO1_Drehzahl) +mMotor_1.addSignal(MO1_Leergas) +mMotor_1.addSignal(MO1_Sta_Pedal) +mMotor_1.addSignal(MO1_Mo_m_ex) +mMotor_1.addSignal(MO1_Drehzahl) print MO1_Drehzahl.Data # for mMotor_2 -MO2_Kuehlm_T = CanSymbol(8, 8, [int(60*0.75)-48], 'MO2_Kuehlm_T') -mMotor_2.addSymbol( MO2_Kuehlm_T ) -mMotor_2.addSymbol( CanSymbol(24, 8, [0], 'MO2_GRA_Soll') ) -mMotor_2.addSymbol( CanSymbol(0, 6, [44], 'MO2_CAN_Vers') ) +MO2_Kuehlm_T = CanSignal(8, 8, [int(60*0.75)-48], 'MO2_Kuehlm_T') +mMotor_2.addSignal( MO2_Kuehlm_T ) +mMotor_2.addSignal( CanSignal(24, 8, [0], 'MO2_GRA_Soll') ) +mMotor_2.addSignal( CanSignal(0, 6, [44], 'MO2_CAN_Vers') ) -print '\nManipulate Symbols' -# does not work yet! need a way to replace a symbol -> dictionary +print '\nManipulate Signals' +# does not work yet! need a way to replace a Signal -> dictionary MO1_Leergas.SetData( [0x00] ) -mMotor_1.addSymbol( MO1_Leergas ) +mMotor_1.addSignal( MO1_Leergas ) print '\nCreate a PCAN adapter' pcan = PcanAdapter(PcanAdapter.Baudrate['500k'])