From 2aa6eb3da7c16bd5a7c89382ee741d709d012b9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20S=FCltrop?= Date: Mon, 9 Jul 2012 09:46:21 +0200 Subject: [PATCH] CanSignal data arrays are now constructed automatically, based on the signal length. --- CANLibrary/CanMessage.py | 4 +++- CANLibrary/CanMessage.pyc | Bin 2752 -> 2776 bytes CANLibrary/CanSignal.py | 5 ++++- CANLibrary/CanSignal.pyc | Bin 1656 -> 1768 bytes CANLibrary/PCan.pyc | Bin 2768 -> 2712 bytes CANLibrary/example.py | 40 +++++++++++++++++++------------------- 6 files changed, 27 insertions(+), 22 deletions(-) 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 ec4132bf7376d3cb591a380e6dfeefd93baf1f54..9b7baa06b9451b293e468b9fb144c9fad9e299e4 100644 GIT binary patch delta 203 zcmX>gdP9_*`7s9|N0tYKrYPhnwjsO4g)0U{0tI}i(K z3Q(GzA(;uNf{VeQ*#@W%sLZ?;C=6sVF=Vqc6g}U3hV3FFBlqNa90eRD%s^+9SimF delta 164 zcmca1dO(z&`7Oc%Lk&AaG82O&ND|0l1+v%}>{D169BMci z>?R*z6KA}=`3BoXMnpF 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 e559fcb1b95fc7642bf849352f228ab850339a70..b05993c16e3d29e97788e55156d4bce734030394 100644 GIT binary patch delta 283 zcmW-bu}T9$5QhKR&F&^4Iin&elr#!CAHhN*8U#U8oP{KxwfB4~I* zsGwBv3Tsn>*Jw`_`WGGC8)#Wrkk*)HVdHx4SdNXVQ delta 170 zcmaFC`-6v_`7(Ude|8YCQoKB5MW>k)?i{_VDQTX5)2yrlkGWXO@7Q#BE$#c lGjcKUFhZaV)8uTpDv;D12uv2{n8j7X3KaE8OiIm}yq2RxL;%QR kVB})rVT3>#CNajz#+;dqdXo*gJSRWnRAV%p%*)jc01wF?bpQYW 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'])