From 88c6b06061a8319212f3733de852381216f139c2 Mon Sep 17 00:00:00 2001 From: maakshishov Date: Fri, 2 Jul 2021 16:13:59 +0300 Subject: [PATCH] Can msg send --- .idea/vcs.xml | 6 +++ .idea/workspace.xml | 50 +++++++++++++++++------- __pycache__/kx.cpython-37.pyc | Bin 1452 -> 2178 bytes __pycache__/kx.cpython-38.pyc | Bin 0 -> 2377 bytes __pycache__/main.cpython-38.pyc | Bin 0 -> 919 bytes __pycache__/protocol_kx.cpython-38.pyc | Bin 0 -> 2863 bytes kx.py | 52 +++++++++++++++++++++---- main.py | 7 +++- 8 files changed, 90 insertions(+), 25 deletions(-) create mode 100644 .idea/vcs.xml create mode 100644 __pycache__/kx.cpython-38.pyc create mode 100644 __pycache__/main.cpython-38.pyc create mode 100644 __pycache__/protocol_kx.cpython-38.pyc diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 0618d4b..1757f4d 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -1,7 +1,12 @@ - + + + + + + + + + + + @@ -87,29 +98,38 @@ - + - - - + + - - - + + + - - - + + + - - - + + + + + + + + + + + + + - + \ No newline at end of file diff --git a/__pycache__/kx.cpython-37.pyc b/__pycache__/kx.cpython-37.pyc index 4ed85f91fc65f278a0366d55cbcfd04cd537b08f..7ec21d33915ba3fcdc60415b3f22f7ed549fdc24 100644 GIT binary patch literal 2178 zcma)7O>Y}T7@nE^@cJWeT1rc}5D*{QOH~eVKox46CRJtXiZ)QQDlBWyG_m9Cy0c@5 zE$7r;x%CD}j)ai-4g3Rs!d^Ha4*m;V;CaU%fd(XYwa?7F^SRIS%*@TTwF<-Yd-c~Z ze~f;y?qJrJkk5%&#>ZvMH;;BWMetA!_1?mle*rM8$BFU@>xn&xCf#qGV?KHV zWoPP6_zCCCc+#VC&;OQvFP=C=QgcS@oOJ*@ z;JTjZcGu{{bhFeFE)$a!^==-kBcoEOB%Dd zsmjW!BACs+%#Qh!%EP%j)utw66#Q}bXE(fzC|U$@=lZQB-TR;+>Cf+>Re?H*Z-r^+js= zGQlMRQY7@|;_+@&Qhjv@j})Sv6v5%#HH|Z3k|P?gqiarsFz)gSU*~oH_Da3^FPuyc}yq=Fz3FKn?Kq}fw!L$squ@&qlaOX7dgxsu$M09@n?+@?a+1-xsZ+~owJmu?@o%`E2{>IMYWGI|N*!WEh{NnGg zeXYAj?PfduB;RjbMT^CubdlV=4mba!!Ri>LUthU;fWq>ukdF1UYj8e1zFIxTwVOVJ3%t%Gcuf$uQ~9Yc#2# z={C_D1aA?%L+~!a=|y03bQ@^e#MH~4UI7pMzzr(FxxlkEVbwa&k`x8F)l8Q4^Fm~K z)t2L-MKAkf`6O22(Hb4;zK%2a*_|zFJGtT`~?EZ B%QpZ3 literal 1452 zcmb7E&2Ah;5bnSE*&mxELy2KD2ifiZxjt#gkzM|D5x{pZp^G_XPoXa zY^>Q6x$+L{Bd@_@w77BdE968~kJl!K3q9(ux@&r>`un2hzPH7fDB8n;ghA93k%X*4FC5bqL zSY$j!TsH=ThtTbp0GeQIh)WfFLm)0!0<2Jh3c&^{QZd+2^;92hqy`Xm=vX?L;(oEA z#l8*Q4gp%$ke1$uy~A2MPN<`4!kw_X{L!&Ox!~u#Jl4Mx6T#}YgPpIQr<3Q0i@Qg! zT`Xl$6^)b_$l_KBJsG5vyKDddNNaFc2{!_a2@paAOxi&VBNwKV$B^+FjMw>kkgxMj zDY&uWPB4Tg`8f<4GNUM3OJ?i0kQV5kdx!WwP)Qd(}N-OXtf#cJ>a?ulQZGNC#XkV6oHF&>3AuE+I&nt_Kwz_#@ z53ceG{EM5A*P;M~-l8Wl5cBQ}UdRar@w{HZpdl+{0R;gJc_S3PLr%pKxGve^K_hm^ z5BHY5##%K*ccDR!GISrg4-{HCSnY6ytaTlHIkYP|aN*;)~UqMjj)fW-z_vk8z4 z+~CO6O+BqkdAM-V_SP79rRF-k%!cVij=tG?B%kh%cl^mZdgy`zBwLvGFb1BWxqe1dS9-jDDa8oXcw=oUYS zX)NFg;(_-k=UU(~XEEG?rmjotSZ%YQI-VcB&RBJn1t;2orw=lva{Jrw$NQZ=82P_a Uy7+##@dsFn{?7$@yN3_?-^%zR*#H0l diff --git a/__pycache__/kx.cpython-38.pyc b/__pycache__/kx.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..538e4e6165cb17b746e8ee03ba9986d8857e08f8 GIT binary patch literal 2377 zcmZ`)TW=dh6rP#A`q~sqOACllZZek!@xn`0TGFJdOkL5WZCDAGjc1bBvDfbG8WQ8Y z(7y5uxX6)ssf73g{F8k_hzI0%9#CJ(cV_Ke2+V4~nK@@}d%o|?-mO%M4CT_?Z(qDz zVC)a-94!_)SMetI0Fp`GVL@K=fSbMugsH8-GPNBzrgj6@)L!5zXY4E1F6{H5c!NnH ztw&5+4@FRte1+BQ3D#zfCgIT{(7B2?xeQQ@_QPIWibo84S<*&rOGmn>9qCCQwJQs< zh}x4SSw`*43U;VwqQ2I2u*|Gbo4#!kZ}L1~BvLlwm)Xb~v5=2!AiisbJ?4#?mGOG! zChMKBB{RDj#qZUe%uZBiBNMPVUq+pQ(zIk|!TXr$653DZ7rIKeqJ?B59IOxGbPy(6 zkydh{zP7NvbE&_Z`C-_KTWJ_p=@>46ai6<NU>j!8n(^pR!o2 zL0MqSYfMO#lO|yKu@zJ!z1~W7l(u@YVL(P{6jWPDsCH5nOC@1_a_W{!l4w)SCn`?o zd-0RGnW1re)fj8OrgbxK>M)FHiaL=QgUG&a#c5VI{WO$ zJ(2QMj4ec2>?3}AR%*8$33ayJ5u%@ZZGU7*ejbXIwn4|Bd!B9jlnvm-9=?O|g>i9Y z8%|2&vP2dl>J?cePrG`8okIH**!h0SPDPdu*}=Z{Ikv|i_=cx)Lz7H0zA^a~8ktaM zLSmVa4wv<5;GbWg`Q^s%!$%+LXVKH7w%VK#XjWL?O;x0Iw2RzI^`Mz%c0X!v8O zoHyReJk?QM$RiNzQRa7Z!PHOiNMfj8#MI;s0OK~2a*kKI&D{KXD!6#+3Szft_^sv) zn~BF5rbry*&Nt|!Y|IgP++)ZhaJp}Uai{I(*@Ubz_Dy@5Rl+dnjeV$qcmtQx$+?s+ z*74fq6AXIo3K$$s87xWfkU_(npYx_)!f|qz^ebo%E6bfI*_!3gu$p%dvZtzF$Ed(t zyw-sD>xP`*^o)=DcW$mOg?E-dG2|ZMkn+oLq$!yCO@eeKON{G>H6r*t}|(wgtJpzVGsGfkVq(F zabZCU9x9LgSt$LGg!mO93F#Vi#_q__W(X)X^eOB+Ss{1|$oTp+l|Gtmk?|)$ zPEE}_63bU%*00e73m4U){A=!1;yW4N4eXtJsuS3|Kz)H`{41R2NTy+`k~B$NIlpW?wX%_>2~^zByi$Ex4#>RxUWs{NP~ehR2se_v|A4sZ{KaK=Axxt{%iZpznp)`6}sY* MIRMUZ_*iA@AMn+a literal 0 HcmV?d00001 diff --git a/__pycache__/main.cpython-38.pyc b/__pycache__/main.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f533435fddd287efbec747b3fb3658cdd31923c6 GIT binary patch literal 919 zcmZ{hO>Wab6vxM3vGd_l0tpmYRIC~y5y~0?4GAc6NDxku`y@2Do+)wa*pX)p^bi~X zR>_hJAhG2D9KahEta1f5FgB=an)HqQf1cm_u;fRrD{ZkVb{urWAB<`mID>5O_>+_Q|?D0)Ga*h*h6d&_Fq2f z;QQF_KI^^erP@0;NGNEQ(;GNYu$*q_b1*Dyw|cnShOOngUHoETV+TLqbJm9rE)I#R zZvVn65vr~G*1>x0oIla-{}Y|#HtzKITD?viG)6;Wf%!i6IUPn%1DB1gRAT|9(^QKo zqx=hsO)9Gs8`Avp+3A+G$Ol5yqP+!Dq~-55wE=t+Cn zC10kWp^Gm1Ep)o;O5dQTtIpU0j4jrckAA-Qf9H-yb4OR&NhaeG9e?iq@%>*hN&1^R z-A9Bv8+1B95>P_9CGE=~%MyklgkcCbLXGgW1QCot6r(VJ5)9%1#BdOXFa~kbhj9oJ z7>6VdLkbfxvL#^>Q(q-aeF;IDdLx*oUb-QF3BxFkno?%Wqw7f-*^Oui$NSy}b-Wi0 z4ygHih*~mtsUdk`MwBtY7-Z1RNPBc%IM{lFPG^G9kU*wrLnveDs{~;T({&^6U|uPg zoDcdQJ3KwO&6D$VI@bs%@`)s*lMqop2@^vn5n>o6aw3<>Ptd4P@2ZsdJy z_k$~c%tYOY(`dc7Q{==RVWb(Ogx@54oc{jJWcM4`+|4@g#qqo2gQH{N{IF{`FsobH zPxj%_;of0OeEhup=@&O9MDw6|B*Y|5boibnd7%CKHSOQW@~H_2MfL}~`wb!7xDfk? zc--Q4LWrM^cUzqin_aa7=>q4=P7=7`a3*4MyWf{$UX=|t`iF3yVoGm_iX==$5}_iA z_7uqw6-k_mWSEL1K}C{;5llfEN2naqFovTrj$<%^<1mR6FolzF1*c#dufPmW!z|9g zRh)%ucopXG8eGRYn8)j|fb(zz7vLt|fLnMIZsRRj#M`ihi*N^*;4a>Q4Bmx%n1TCv z4<6usc!&>R86QFxm*Ej+VFe#S4p-nY=HLlFhE;q5PjMBV;Zt~y&)@|7pKj|Y4bwaTvPTCgC9YAn2{iOta+??ta)vX zbMJA@cw93c*Nn$C2Xj~CCIVq9TNGiDgGjH?VTUvG|aoiWc?VBBEbWZYuh zW-Kz670rn;&U!jZn_KwmEj2 zW4AeWi0Q)IEQ*2(bGoQ%W>w@XrEOtYBL7w?l!aO_mCd52x>NqJS=ll2nklq$TZf4r zJzv==SKY}As#p=*6;oKjavcJ#pIxUgwdPVXcY`5Q&yx;OB>-b%7 literal 0 HcmV?d00001 diff --git a/kx.py b/kx.py index a05b40c..f38f70d 100644 --- a/kx.py +++ b/kx.py @@ -3,6 +3,8 @@ import can import cantools import os import numpy as np +import struct +import time K = np.zeros(protocol_kx.KX_K_COUNT) @@ -21,21 +23,55 @@ class KX: def reset(self): resetMsg = can.Message(arbitration_id=0xA, data=[99, self.sbl_id], is_extended_id=False) - self.can0.send(resetMsg) + try: + self.can0.send(resetMsg) + print(f"Message sent on{self.can0.channel_info}") + except self.can0.CanError: + print("Message NOT sent") + def sendK(self): - msg = protocol_kx.CANMsgK(self.sbl_id, 0, protocol_kx.KX_FLAG_SEND, K[0]) i = 0 for element in K: - msg.k = element - msg.index = i + ba = bytearray(struct.pack("f", element)) + messageK = can.Message(arbitration_id=0x2BB, data=[self.sbl_id, i, 0, + protocol_kx.KX_FLAG_SEND, ba[0], ba[1], ba[2], ba[3]], is_extended_id=False) + try: + self.can0.send(messageK) + time.sleep(0.01) + print(f"Message sent on{self.can0.channel_info}") + except self.can0.CanError: + print("Message NOT sent") i = i + 1 - messageK = can.Message(protocol_kx.KX_FLAG_SEND, data=msg, is_extended_id=False) - self.can0.send(messageK) + def writeToFlashK(self): msg = protocol_kx.CANMsgK(self.sbl_id, 0, protocol_kx.KX_FLAG_WRITE_REQ, K) - messageK = can.Message(protocol_kx.KX_FLAG_READ, data=msg, is_extended_id=False) - self.can0.send(messageK) \ No newline at end of file + messageK = can.Message(arbitration_id=0x2BB, data=[self.sbl_id, 0, 0, + protocol_kx.KX_FLAG_WRITE_REQ], is_extended_id=False) + try: + self.can0.send(messageK) + time.sleep(0.01) + print(f"Flash sent on{self.can0.channel_info}") + except self.can0.CanError: + print("Flash NOT sent") + + + def send_test_source_enable(self, x, y, xVel, yVel): + resetMsg = can.Message( + arbitration_id=0xA, + data=[ + 0x53, + 0xFF, + struct.pack('b', int(x))[0], + struct.pack('B', int(y))[0], + struct.pack('b', int(xVel))[0], + struct.pack('b', int(yVel))[0], + 0x68, + 0xA4 + ], + is_extended_id=False + ) + self.can0.send(resetMsg) \ No newline at end of file diff --git a/main.py b/main.py index 7babafe..cbf17c1 100644 --- a/main.py +++ b/main.py @@ -1,13 +1,15 @@ import kx import can import protocol_kx +import struct import os +import time can0 = can.interface.Bus(bustype='socketcan', channel='can0', bitrate=500000) - KXLOX = kx.KX(protocol_kx.KDescription.K_TEST_SOURCE_2_SIGLVL.value, 950, 255, can0) +KXLOX.KXInit(protocol_kx.KDescription.K_SBL_ID.value, 43) KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCE_1_POS_X_MAX.value, 21) KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCE_1_POS_Y_MAX.value, 21) KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCE_1_POS_X_MIN.value, 1) @@ -18,5 +20,6 @@ KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCE_1_SIGLVL.value, 450) KXLOX.KXInit(protocol_kx.KDescription.K_TEST_SOURCES_ENABLED.value, 1) KXLOX.sendK() KXLOX.writeToFlashK() -os.wait(100) +time.sleep(0.1) KXLOX.reset() +