From effafdbb562a0e6306709f951db7aaadee32ca60 Mon Sep 17 00:00:00 2001 From: Philipp Rauch Date: Fri, 13 Dec 2013 12:23:53 +0100 Subject: [PATCH] remove compiled files --- .gitignore | 46 +++++++++++++++ .settings/org.eclipse.core.resources.prefs | 1 + CANLibrary/PCan.py | 64 +++++++++++---------- CANLibrary/example.py | 1 + PCANBasic/PCANBasic.pyc | Bin 14926 -> 0 bytes pycrc/crc_algorithms.pyc | Bin 5916 -> 0 bytes pycrc/crc_lexer.pyc | Bin 6993 -> 0 bytes pycrc/crc_models.pyc | Bin 5067 -> 0 bytes pycrc/crc_opt.pyc | Bin 11777 -> 0 bytes pycrc/crc_parser.pyc | Bin 8786 -> 0 bytes pycrc/crc_symtable.pyc | Bin 37868 -> 0 bytes pycrc/pycrc.pyc | Bin 6939 -> 0 bytes 12 files changed, 82 insertions(+), 30 deletions(-) create mode 100644 .gitignore delete mode 100644 PCANBasic/PCANBasic.pyc delete mode 100644 pycrc/crc_algorithms.pyc delete mode 100644 pycrc/crc_lexer.pyc delete mode 100644 pycrc/crc_models.pyc delete mode 100644 pycrc/crc_opt.pyc delete mode 100644 pycrc/crc_parser.pyc delete mode 100644 pycrc/crc_symtable.pyc delete mode 100644 pycrc/pycrc.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a9435d6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# Ignore-Datei selbst ausschließen +#.gitignore +.gitmodules +Thumbs.db + +# Bestimmte Dateien ausschließen +cache.dat + +# Es können Wildcards (*,?) verwendet werden: +*.exe +*.dll +*.dsbackup +*.avrsln +*.avrsuo +*.avrgccproj +*.aps +*.atsln +*.atsuo +*.cproj +*.aws +*.xml +*.xslt +*.aux +*.dvi +*.lof +*.log +*.lot +*.out +*.synctex.gz +*.toc +*.pyc +*.patch +*.csv +.project +.pydevproject +tmp?.dat + +# Auch Verzeichnisse kann man ausschießen: +*default/ +*Debug/ +*bin/ +*ADC/ +*CAN/ +*UART/ +.*/ +CANLibrary/ diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 77d664b..24ecbd3 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -2,5 +2,6 @@ eclipse.preferences.version=1 encoding//CANLibrary/CanMessage.py=UTF-8 encoding//CANLibrary/CanSignal.py=UTF-8 encoding//CANLibrary/PCan.py=UTF-8 +encoding//CANLibrary/Sym2Lib.py=UTF-8 encoding//CANLibrary/example.py=UTF-8 encoding//pycrc/crc_algorithms.py=latin1 diff --git a/CANLibrary/PCan.py b/CANLibrary/PCan.py index 93bb842..ca81341 100644 --- a/CANLibrary/PCan.py +++ b/CANLibrary/PCan.py @@ -15,7 +15,7 @@ class PcanAdapter(object): ''' A class for controlling a PEAK PCan adapter. Based on the PCANBasic library. ''' - + # Class variables: Baudrate = { '100k' : PCANBasic.PCAN_BAUD_100K, '125k' : PCANBasic.PCAN_BAUD_125K, @@ -23,20 +23,21 @@ class PcanAdapter(object): '500k' : PCANBasic.PCAN_BAUD_500K, '1000k': PCANBasic.PCAN_BAUD_1M } - - - def __init__(self, Baudrate): + + + def __init__(self, Baudrate, debug = True): ''' Constructor. @param Baudrate: Baud rate from the PcanAdapter. Baud rate dictionary ''' - # Instance variables: - self.Messages = {} + # Instance variables: + self.debug = debug + self.Messages = {} self.Channel = PCANBasic.PCAN_USBBUS1 self.Pcan = PCANBasic.PCANBasic() self.Baudrate = Baudrate # Baud rate from PCANBasic self.isInitialised = False - + def __del__(self): ''' Destructor. @@ -44,26 +45,26 @@ class PcanAdapter(object): ''' print '\nDestructor:' self.uninitialize() - + def addMessage(self, CanMessage): ''' Add a Message of type CanMessage to the list of messages. - + @param CanMessage: The message to add to the list of messages. ''' - + self.Messages.update({CanMessage.Label: CanMessage}) - + def removeMessage(self, CanMessageLabel): try: self.Messages.pop(CanMessageLabel) except: pass - - + + def clearMessages(self): self.Messages = {} - + def initialize(self): ''' Initializes the PCAN adapter. @@ -71,15 +72,17 @@ class PcanAdapter(object): self.Pcan.Uninitialize(PCANBasic.PCAN_NONEBUS) status = self.Pcan.Initialize(self.Channel, self.Baudrate) if status != PCANBasic.PCAN_ERROR_OK: - print 'Error: ', self.Pcan.GetErrorText(status, 0)[1] + if self.debug: + print 'Error: ', self.Pcan.GetErrorText(status, 0)[1] sys.exit("PCAN initialisation error") - - print("PCAN initialised") + if self.debug: + print("PCAN initialised") self.isInitialised = True - + channel, hwId = self.Pcan.GetValue( self.Channel, PCANBasic.PCAN_DEVICE_NUMBER ) - print 'DeviceNumber: ', hwId - + if self.debug: + print 'DeviceNumber: ', hwId + def uninitialize(self): ''' Unitialize the PCAN adapter. @@ -87,19 +90,20 @@ class PcanAdapter(object): if self.isInitialised: status = self.Pcan.Uninitialize(self.Channel) if status != PCANBasic.PCAN_ERROR_OK: - print 'Error: ', self.Pcan.GetErrorText(status, 0)[1] + if self.debug: + print 'Error: ', self.Pcan.GetErrorText(status, 0)[1] sys.exit("PCAN deinitialisation error") - - print("PCAN deinitialised") - + if self.debug: + print("PCAN deinitialised") + def sendMessage(self, Message, rtr = False): ''' Sends the CanMessage object Message onto the CAN bus. - - @param Messge: The CanMessage object that is to be sent. + + @param Messge: The CanMessage object that is to be sent. ''' Message.composeData() # compose message data array from the signals in Message.Signals. - + msg = PCANBasic.TPCANMsg() # create a new PCAN message object msg.ID = Message.Id # copy the ID if rtr: @@ -108,10 +112,10 @@ class PcanAdapter(object): msg.MSGTYPE = PCANBasic.PCAN_MESSAGE_STANDARD # Message type is standard (not extended) msg.LEN = Message.Length # copy the length msg.DATA[0:Message.Length] = Message.Data # copy the message data into the PCAN message object - + self.Pcan.Write(self.Channel, msg) # write it onto the Bus #print ('Message ' + Message.Label + ' written.') - + def receiveMessage(self, block = False): ''' Tries to receive a CAN message and puts its data into the according CanMessage object's Data field. @@ -120,7 +124,7 @@ class PcanAdapter(object): while True: # do this while messages are read from the bus result, msg, timestamp = self.Pcan.Read(self.Channel) - + if result == PCANBasic.PCAN_ERROR_OK: # loop through the messages and look for one that matches the received message: for msgKey in self.Messages: diff --git a/CANLibrary/example.py b/CANLibrary/example.py index 3debfd4..ad98d90 100644 --- a/CANLibrary/example.py +++ b/CANLibrary/example.py @@ -9,6 +9,7 @@ Example for creating and sending CAN messages via PCAN using the CanMessage, Can from CanMessage import CanMessage from CanSignal import CanSignal from PCan import PcanAdapter +from Sym2Lib import addtoPCAN, printCode import time print '\nCreate a PCAN adapter' diff --git a/PCANBasic/PCANBasic.pyc b/PCANBasic/PCANBasic.pyc deleted file mode 100644 index 10571194bbcd525bd31ba99163a1d867f91b9f08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14926 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 QyYxG+>!tt5@R0-m2Uxm=RsaA1 diff --git a/pycrc/crc_algorithms.pyc b/pycrc/crc_algorithms.pyc deleted file mode 100644 index 0ef825c90d4b8019131c641093b1f8634ef91bdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5916 zcmb_g&u<&Y6`mz2%A_Slt{q#BjbJR-F^$Tsk~)c_+O&SyLEYH0yE3Z8aIjtO4ylz_ zyVUN`qKY^Tklc!%iXH+K=&?uNTA+s<(!ZcU@4dE{UJ9hg_Iq!Z%cWwsDJt4Knwgz> z^XAR>z4vCz|Cp|SviiP6EBPlgePH7pffxq_?#n$l(o)AV)qQ_o z>MfNG7)^6^5JxiZ@Jo`N#C;t^DqWzS2t|?T%;0YFR6E)IC`790V?ZkdRRMK-XB1~i1 zR}2uCS%ah zTx|Z1rW&=5vY06@%i>d`{WLeBL`ggrBKcb;2x`rdycrR}c4qzz*>|HcLHqv#1@Rh( zCcQXHb<+2AoPeK05YyY9o47kls|4f%k-^SR9ER~;x|9#2;Y^FM9wNtB$A}PP-G&rn zUBi(8{#ZW^E%pT#wh+*v26)7J<0X`uHn&ME)#Ov}Lk&%6u?-(@M?B#DI6c7|5 zx{4-VP<0wr_F}jFfe}W_+}&7p?z-t?mYi4C<4Cb6o?u3kkM`o^aoR&G6;FX_xD!h(KLt4}BDt2)c)KLlF(qPJ5sz`?9!) zuHBRLf74KZyCRl18l*tFi6X~cqI5r@D5)fl?Xo#H1Y$(Jz{J$7D-R%Y3nXbPL_QoC z06-yc$S6iE(~l1_aigxX3B@+8Y?I||0xJ)(XHny0W|)vsU~J8xXLn1^9-W79WG5iy zdD#33`qOWr5S6NR(yCikYnICsmPh)~VG+yL@T9j;;IQ~W%3^SZ4~!3Jj!$e}&^hsd zJ5SluVrVOyv5M2&J%iJrWQdPp72d(cQcqp1Wa;sjuvLDrYZUAQPo|t8bK03A zE^+A3b7oF{k(F_N*y%?eC&K~4nX4688jJ!A@>zxt(8O4B``tY2?ja-FQEBRS6)$9* zg29~UhF(8}IG>iz)qCQGeGEo&4$q;Yq7NXJo6to7Xpob(XHYPw0biS#WuK#hAUpC3 z#z`=iiFh_)r$I7|r=VsKISAzJf)mvZQtXtW?Xka!;f*wdoTG$}dxz&j2;Y#FC7~aq zW&D1%W=&gD@cl1a$5A^67cy5miP|yLPQd@qjmSW|Vlw;%6*_xEhTj@8{N{fogHt5K zkG>97PCo(v8_UVZS#k%Stb-?6(z!qSc7A|tI^yT*cWkPHoc$Q=V&VCGhN3oWX!ff0S z!#M8A`0MC~2wVl(l@e4reUXbKIn5Q@3%o6p{`GpmvJpt5gQ!RiTy?1PdAb!GGQFbI#Ed`2w}fE~fLAA(!+yE~0M(~jh!BGxvry(0M~GWY3Nw^1HyGJkh9Y!F`9l_6 z=z@Y9jgiw@ft=l+4PTiC;~r7zpW{k_Sw<7+md!R{DpS$iiD*S4QdwNvy~x?vMuR|* zR$!nUf#VLmtD?+<6W-{u$2U{+0fFv+)Lp!+j=AQXFdP{2FD65V;fnI?QhS-Ep6D)GVGzfAgIuON-NkSEMaXX^fx*Zyt5Op|E zY#$O?D2s&+9A5HwXr!;A5R=pJ{Kw(>i4uGO!!{26v2FHw$W&#D7ra#)~!h z<1oIwV8uyn$>@Tt>K%OjNz<`aFQ;e$kF!z(B060zMCLw6h8Mb%SOz} zCj|e(bd$qeM$KkV&PZf*GB6pj?A`eyevZbmC#SO>LDV?$@6g-albbxH9pa99NWdKN zztW1?=fy8O+lGVhm^gL>3tc%up&QaERkJ;Te!Y2{O;fuH9m=Bp~(l#B( zk8#VlDI2os)^F48-XwFh0s9gaY^m>}Hrf-{{-0~N4RPWMo|LYQ)pE5mb)j~wHeGwQ n_Db!{I{Q@n4ZLEL#_erfO?l2C>cHl?W(?9=BwYw$)ylsC?tm(o diff --git a/pycrc/crc_lexer.pyc b/pycrc/crc_lexer.pyc deleted file mode 100644 index b8d15f87c2cd282a474111ad54b5f5327a921e63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6993 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 diff --git a/pycrc/crc_models.pyc b/pycrc/crc_models.pyc deleted file mode 100644 index f373a0970ec40e3a3baf1769ff02caf6bf21da79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5067 zcmeI0O>7%Q6o6-K$4Q)|NzEDGp$lIEkBtrZjaM(l$+t9Y`BOEoXO~OtRi} zch~t-ODh$DdP8vHQi&rMDkP*HI3Xm2IKTx}LP8uk04F%W2_(XMGaK7OH&KLogG8Rp z%zN|An>TOQ?CjYh~cvN3luR-UHPDO#{J-EiV`a-KOjC>c6cEz`|0)1mIXUZq4AO>5bt zu0@Nhs;$N&kxA&<%yhY8F=yurx~tm`vU3#1E>lZJ&K8>tMIw~ayloXItj>y!DJv8$ z+odU6y~r)$N}g=EG9B&4#eB1+|Ah?XSIMGhnDAt?k*`|pq+L-J z$JJyAoJTy#FNd0zOY>IA)Z*ZKw;tlJe8J@y#;81vk@k*tNppBj?XYls$xQ7zHx#He13B4X44qeh}Nk>nkPC>7QY!D<$)7NQ|5 zELb}Q3r5I-Q5CDzhqX&$?G`N0E{_GHM_GG(SbGJlP1v>1&n{n9yANx>U>y*wC;V8x zXFTY`IwV+!1&eO`j2%9#&MjC^O7{q(D&HURVRdbrCEw#wAJ$V6D=PWRv&-|BY*)7r z>*;N?WV@d6VLdCcVv=26e0g@oC4U|BVLd0YyfbbiR(pI{i7i-L-D9s0tIv-Gr^07j zKBMffejiryF|v*e)_{onLCN<+Tf8Tp_p$4QU=0h_N$DASL5h1ARmJ@&AJ&M(I=yXH z%7=AEVtICXzW40%;>+_rjPSjB)`vB^ZI*n-7kyY`Td?GqkXh$^Sm*s%Ufg?Ugwdn# z=nFoqafx+NiV4{+IaVipSeFFrvWSV7qTmdbP~brZN4ThA-wvT>xbvx(k z8fB1eLJA7`sN>ot)wOJ~z^MTg=63xqW)UXjoeZa3Yp|K3D8v2G@}5Mjcdl4ujVNgb3cC->9NdzN`&lze-a8A;JvdfHl4LC?sksf!@FyU_ z6Y@35Sjm}X>+2x+;$sk?9i9Nvve}Zuj$eT39hGTtHN*K1K(dL48)sCR>#~o!K^Ko_ z#{`7k1v{7mGwgL}xO*0LyTDv_w*z$XDpq2NerCSC;bY7O3+yvEKG$C39JdIQVJEz=~)6*7~g=;oYNyKeq*mgN{ezdJ`%evA#RR zWp`SeMnSgW>E1-FP}JwxPd_dN9dx%?5Sv|N#ROlluf26OD6Y3?Ic$a9Ub?pA;*JZs z0{iy!hCUunD|y{!_hFVV8c^HT0u^JEee4v7*a4Jd82)8F*!{ziSbvC=H%<1%7NGcW zxcr0uce)>r-7_LW9nXfp&0_fF)$8>cEjh7+IG8=7$*_85jW2yS`Az1-+PB(5Lidls z#K~We{&K#asCYSOH(o^wKF%>{AfLXekd;ny0}e#Unb+FL%>cQfkOhU@fD%z5?U*EA zZy{4KnTbN7NSt%fY!peNILwz!Q90VWTe7|C(0~dI%RQ%5#5xY1*{Y(lygrR~aV`%7 zi~_^q-CVJ#n_3iY=00|GBk!WN!CMxEF5!*S3%#+SnX{_FijF?BY}t!WF{kP?sga3s zHf!hX)frxx&VaYP@-kjrCluyG=L@R2Boo-ir>*T;EHkphU^=V>n|#D4(2{)xMsC@>s7fm*?1$Zi?5Sc*$Xj z#vL~y+=D@7Sj)Pd-U&VKEi7fZFue<>P=ot6y$5=a!F3pVHW}D z%;vp+d+ljJkv{l1EpW%-P&g0{)GM|B_-*)qPWjLIAY9)l9;x&}h!6f6vSt_HTb{?v WV~RiiRGbjc!O1wrA--zD;lBZ}*R>G< diff --git a/pycrc/crc_opt.pyc b/pycrc/crc_opt.pyc deleted file mode 100644 index 20e375bafb0691b7de70b60c68e07a46dfdcd9a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11777 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 diff --git a/pycrc/crc_parser.pyc b/pycrc/crc_parser.pyc deleted file mode 100644 index fc1547bdbe74aad313988a831bc2d673e49805b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8786 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 EAFluI*Z=?k diff --git a/pycrc/crc_symtable.pyc b/pycrc/crc_symtable.pyc deleted file mode 100644 index 8c2c13dd2ea9ebd3cf387f9315cbb8316376ae5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37868 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 OQ42-}c5^**`2PVe3zob9 diff --git a/pycrc/pycrc.pyc b/pycrc/pycrc.pyc deleted file mode 100644 index 6706699d0e110aa90a1003b3ac361f18af9484a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6939 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 VC2Y@py}8nSrMZf~_2$`m=YJ#L