From cfda1c461bfb49bbfcb81ac2e9ba4e460af0d2ab Mon Sep 17 00:00:00 2001 From: ranchuan Date: Sun, 25 Jun 2023 18:04:09 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E6=9C=BA=E4=B8=8B=E5=8E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- checker_gen1.uvoptx | 2 +- python/checker_test.py | 125 ++++++++ ...三码绑定测试2023-06-08 - 副本.json | 283 ++++++++++++++++++ python/file/Ym_Checker.bin | Bin 36348 -> 36356 bytes python/prottcp.py | 10 +- source/ReadMe.txt | 3 +- source/main/compiler_info.h | 2 +- source/soft/signal.c | 2 +- source/task/moter.c | 33 ++ source/task/moter.h | 3 + source/task/tran_for_checker.c | 48 ++- 11 files changed, 497 insertions(+), 14 deletions(-) create mode 100644 python/checker_test.py create mode 100644 python/file/EX三码绑定测试2023-06-08 - 副本.json diff --git a/checker_gen1.uvoptx b/checker_gen1.uvoptx index cb09555..c139aca 100644 --- a/checker_gen1.uvoptx +++ b/checker_gen1.uvoptx @@ -120,7 +120,7 @@ 0 DLGUARM - 5 + d 0 diff --git a/python/checker_test.py b/python/checker_test.py new file mode 100644 index 0000000..4d25709 --- /dev/null +++ b/python/checker_test.py @@ -0,0 +1,125 @@ +import serial +import serial.tools.list_ports +import threading +import time +import socket + +# 把tcp封装为串口 +class utcp: + is_open=False + def __init__(self,port:int)->None: + self.ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.ser.bind(("",port)) + self.ser.settimeout(10) + self.ser.listen(128) + print("wait for mcu connect.") + self.client,self.client_addr=self.ser.accept() + print("client:",self.client_addr) + self.is_open=True + def read(self,len:int): + return self.client.recv(len) + def write(self,data:bytearray): + return self.client.send(data) + def close(self): + self.client.close() + self.ser.close() + self.is_open=False + +class port: + def __init__(self) -> None: + pass + def open(self,name:str,bsp:int): + if(name!="utcp"): + self.ser = serial.Serial(port=name, baudrate=bsp,bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE, + stopbits=serial.STOPBITS_ONE,timeout=None) + else: + self.ser=utcp(9527) + def start_recv(self): + self.thread_ = threading.Thread(target=self.recv, args=()) + self.thread_.start() + def recv(self,num:int): + d=bytes() + try: + d=self.ser.read(num) + except Exception as a: + print("port closed") + return + # print("recv:",d.hex(" ")) + def send(self,data:bytearray): + self.ser.write(data) + # 测试上位机 + def ecode_test(self,times:int): + print("检测赋码系统耗时测试:") + tick=0 + while(tickgP zXul?EV{SBwiH~a=pvDj{wca*2Y16b)<83vXtT)#Z^E@QRvwO~--TTd9rQZJP?Gzq$DRZ2{pnuOuA#r+@8>38$SnNS}$a zvk#P)Y5K|zOdLr!9XMbf@y=4h*^qwkKV5cU;%Lpj6)14v%Y3>F9P~0ZcMs6>8vXP) z2)7D4b@lXXh}Y*jixe%d6&{r-A0u!9i$B9lg9u!ArB?95G=szWVn~By{fAV@ z8-%qHi+>D`buctW9m|5WO|aXrhF<6n8g5WJ75>UO=x^bBu8caMz?d1I7^Zxp?_%H? z>PF#MSZ$@)+ODX*g$g#PpCxc7+&kvAz^hegS=3QOU2Q>Jr6fI2%gT461Ib?D&}_~krW;laS5_haE3lhxE1=nasB zS?F^in1?N=e%L&0ym3#MI&-{4INRMbtV%;SfIQqvuRv1#I{F>#j?YWJ6*5dB7dY?! zKt4HI{n_ErLnq;uR&!oT9tFk{x^I&B0VcV%#EAuGZt`G zF708TL2zTg*w-1zO_)k5RCulE2*5-7f&GZ1l zFTpu}k>sGcU>uoMt_#Minu%VfIoxYOZ!e&R#%WU9Z=jt@r@^Zc{vM(DW&DqEUK*tI z!J3gtF>Bw9^OFn1VE4$>;kv0KIy6G1hKvnfTKs1BuSVKw=6ng~FoOtJ0@Q8ji@`Np zuMo6EgcO`zb0xt;Y7pjhi^-?8j{lZOdWwfT7K>tAWRgzPxML=4Z;&J6^W7J0=d`Xr zO4J$a4U12PsJ~(KjxLg;zoBvJkxuQQMS4bD4f(qBP*nw7o|S!pxrldu*4CPH6YlD;As7J2w0ZI>ey zAbb^`gQIvVCi*h)RFtcy;(1;#+<|A)Q|ZU>%k=K}Jps!1ekQcn-uY#-Uf2#T8OLcR zB)eY7z8)bwAGP36E!b5HI^lPb8GJ;1FEYbv^^&Hr_nU&lDI%22a7I_@~s9H&~T zz4LstPAEcN9@5wdnc&EDB#w?`;fcxcWt0w56JT1VEt^BRl&D-NO!#CUhkVK>sdAR6 zFU;b1a3C`s^U2xFmo$6B@Z+?Ru*&@aZGsovHd+hk+>WeiXkbFrp&~R|be}_$koQ1z zpkh$mj>HGT%%Sulhj_@&vSp7#IcrpI7`8`79kQr$=KCDdLQ7UU{Q{oL%4@x>5Z)CX zIZX|1nmRU{{@aQomWJ8UCA@7Y>~EvSD4!jdo3b$)MylFO{$-SRqPzy>6Oh_Q2dRV~ zrY23w8y#GOQPs7e{2qm~c&j!NJ}eeWdd$Un2~D`43t{fqn#6fZ+<-w#PZfB4cPlFu z@kuy4c9Qj@pw4fI>RbuxhIFn#Vz!n3CuC=DjoTj7s&slHEN+Lh*}nMGp_Lwbsw!&f zeTd7+qh(N@lT0bh&dH*qpfx9*4ue;63X;DHH1`T-oWR+Lm?UeXWBm_&k&{aQ0;b$a z^bM%ZwV6)fD1*Mg2kbk%;rsH zwv7ijlK~dx71Ph*U|vP(yI5v$8>w6Gci6Vv7qt=Usxa+dDFKJEC9o-B@@`PXKR|rG z)#MB4(IMWWh!deGKQ}HjG8hIH(o9&LKY4gKe2=1t;RyUDKZD+aTlwjxt0-Evu>@8B z1m=R8+%syQnR+=~(n|=7N6A^@A{peuD8B{I_dqZr{yoTAU&6kEThe z)*a|0d|Wh`4`HST39x|2m^F@ zd_6q};`nrWu-i7_6PkP`OoXq4dQauIU-Lvr46?kT#rl|7Vy1_{Rg#|7r^I+lJtl8R z{E5OAn)ignca=6zjF&c5V!ICcdS6JK3N0nGCqIe^Dob5zx4OuLKibB3gv6(nZ5|hD z%s`Cr{LMi3@P58e3(u!`KElEKO-XYcruJCR2sqWs3uo+o-}li zjsA(Oaq93pE7;uIlSjBMXcgX=GHUX9#2!V*CLrrgY>huwjIB;=O*mGHt$z==d5!aZ z4N3dpHc1%on{ZSs><$;>ns6S{G^&&R)e8F{&TBOv36Rbl!~vQ^M9`4@?vUt&Qg4Cv zb!oKE*WnxOm|C|Gp=)0P;+}bONF3I^-Mf=g+HIT~Pm3FI9q>$qangk4j%iY?muw_% z(~VdRlUb3)J0YD1F+<0WYI;NG)wStR-UGGM>X*C|Qp80;hNvRqH$jT@;fO2pnl-|Q zq1rp%<}~!z=~u*eu(qdSJ=``~bJ;jRjnrQ&5M$5en9GWIH^@Ky9;RxfnBq{D?a)W= zHt;*EwO17}AL6H{BGSs6ZbfA0n?9+vDb$3!XT22TiSMNRcl|G-t}Gsvw|Q(nS}@?WDTI`qUS+k9ldEIub~_gGP*RNAI` zqD4<+sm{ZAyO3u_-dX9MCye`Ll)DkR%#+uUJLn1H-iUHnNZSn_1F{c7=_9YlO~IXK zQPYJ+D1)yaaby*$S$eSOYXlee3_fEjt9q=8F|cujvZI#-MYYRm3A|9dh7vH%_=a|X zJfns-g0F5p9RnBYUZ+2X<&Qeb*9SFDip6dx9{8~MYKZW=G3Z;Ol~p4w3KD)}w6bnM zUpA;I3jqyogt>6>Q5&5EHy*Va%Yq~`#vc;%fX;N#G)SGf6>H6lGtVdO4Uh|$CP(fR z{Zc(gSV=U(W>`II4bzE zs{%sumC?u;p>DPzqjxJ(+83wGUcUffp6xv6p_|8aP$! zOL;1Akp}zky7W1hKl&B+Xr$0jbMyO12E$2%6_pACVxpv|KOR(Un49kJc9Bc{1d`r)PIGr3UOW&!cl}J ziysdmENp`~ufW+7NFaU30W+Fy2sX~4g`%p zdPov&Sc@caU#P81vwsj2Xi(-e`1G+VdJ$X;GARc&3!L-_tXa^B+t#_TI4LujphBoE zSVoAe#5uz&p~mWkHF0+X51}^t_*Eh!PLP&Ivy9)HdA2$o*O!=Z?0@Q_kriL5!TJ>~Tn4ol(=Wjo@H z-oP-Thz5A+2iDnZ0xb!#cz2dCx5s#T102~^O|QO%Gi$Q%>@xW!@om}Qd97M^O%l(_ zN2|#-t-opX&MuNWaGhLu4eJ1ofp>02TooRMQDpJ?0OA&x@lWr5Oqq3hkF*4wO$PACf!S1RCohHBLj-;Mi#FguHi#Ra_?C*3H<|f^cM8CArJ^Tin+%ZLip`0rXL#P%TAU$~5M(Xp5 zM*aR&p?(C77i94#aIv8^t~-2haU`)DY8q|km$0Y~LO!E%m{GBKl;uCD@T>hX{SfQKLSCxU>#4yKh+yZH0r&9CQ<$U6z%-G}PQ% z=%pLm?2_0o=lOgaJE{$rXhu#{Z&v8*{u1X{^eqL9k7t^`QXJlkKOT*bB_p8h@dc*0 zhepuCvBy*Cui@h3wZ?0b-s8sjrh#>NS=^V{8@xhD;w#X&JbTJMxw+RJ9W_B7Gc;;i zbkwaf8`X)UPQvlJvs*{mkeaHbpa-AA<>j;S5g@CnDBFb=^P?6|NDmBI z92>Qmq*}~E-H%{bQ>N(`Asf!aj#llN(JUl;B<4=TN;2rv>(S!P|dQg8dbWmT!TlA}eon4D^>Gj#U ziPs4KbW{saYX{1)XUKMSceblq&Asf=BZ9DKe<$HL`?!Tz_=&Iu#WzL8H>l$4RdJ60 zdw(qQ8`VuYTw?77$|`hsOd`wtMEF_IjkG#tInpu{S)M1tWkk|Mn4&C(i$65CHegt~ z$8Vk&x~q)h+3?6vxujuT7#IQ)xb|w zeYX$!ZjJh$a-Z)>Q8S%rhNTc@CP6jBo=1+*7~a-Dn>__I-+K@s!V4(NMP>D>tX`F! z&FlNm;4PIUyEd4=Dl7Rtslk4+i@kE3QGV!&#YcUqSrNCw;Z?4!+}Qgl61=q9k(4bB zcQOl!3O#ji^qbJP+L@d%tshsS4On9UFG+fcOTKzvbflK(vfgIpVr)$9&j zUXz9CNm*lc>;~~8K;l>Dwh2gbthQwBItS!R~JAdtx z%r@n%YI2E=d7$T%T{mE)25&%oDPrUs+8R5&_J+2{XEDnU!l!Fpc+EGin@Q(G{kmLR zb;SP^>7=efsb#9vb=lDq5mVv#x^jd=pRTK+Bcb3&FX=a(B;0Yh@}uSEZxp@f=$eF1 z-g9hC#}v0GAbt+D>o+C7BaP=J@ga%%T!9O*6|Sy7oZc)Idt&`19%qvzj*~JR6%Gbv znBF&mhlkYNUr@U{kSc zt4xH~Wqu{s$*(-x9}rvcg8CNzN~O8vU&*e~GcXz}q2?(EJ{+%ns*z^H2Tv6z#mjFE z(0JNMgb8?eI^LgfHXu^4Zg!gQAiO3`?oJ}uWb_WTzkr&}FB$hK_(s>vo>#u#{A|%Q z-1g|(#!9;u4?UCeNbJF2m5#lU1jMp?{L%OL6S~iBIjNmnA87OF28L0$BO-1NSEAy) z0Pp#nUNcM-)XE-(Exi2;18$QoAE1NI4T>Z}_?aJJk=^i71|kkPD1{3~si&=pKmKR&HJs zY3|KPCj4hO9X6^cE{3_=s_0}mysZ?kbeFf~RV75$;Oh#OUgX9`XfExGh=o`hzwcjn zR*$q$*x)&_m$(f#PVB85ePTP4yBl`<=^=LyYYQ-Gdl~&pckA|Ll+J)#JAn4Vrkz#z zgT?usHrva%r^y8~K9#js(@WGz{KRSPaib!x`_2N|2I)_iqDKAG3#n0M9VPlqkLT)2M@?#iNP;Nq@H@y~`LVh^TjL?x)v z0p^bRbS|v!*qf9T+R{t(_?&oKsM2|cdyp!Eh6QmjG*@N4hsW#2hf2d! zyg*6AT4w1l(7L;djj_9rdI9#hk_)18IsZ>?Ec|(om0G)R@0mgiZvTRCH}U_A6@96&?rna6e2>$gkXl({&LJ+q}Jkkm=C)OvRjiGcBBPu7&HZv2ZtMTezxDR$&xcc2_w$;KVZMAUa+tBJBJGZ*cVnq`_ zwr~X{7H-pCJLh{Q-L^l%!$i_U$(Aq%LKd&b)P}g}c&j<2t=5EBKVSrj%ut k6rVliiY}#emig8WO@yQ6h1C3vZY-}WY%A2jpZDebANZOB-2eap delta 8007 zcmZ8G3s@6Z*7xScK#TziB812U2qZ!ZhzOP<4>cw#qV-j(RD4yet%fSUkFEt&6l+~| z&)V8rSKY1k(Y0Hkw(`5IwU4iLyWQ$@?M+tKd-!6Q=pHG-I%LzmN>u1#}1{9yLZROon1^AE5h$R^6t`9&9-HT-~G=#x&UnSA~kpR(bF3J_%{i&7}|BU z^m{Pt-S&K0%WAo45@n+}onYz7@KP>Y&hXg<3sGQ3sMSA3XTm4?2_=gpVy{cka`UCc z9+P)-C3At=34YH(IE(KYlCg)0z(3Y%xycBxzDvrroChWwZ1#OY4eI(|aU^TtR)j4* znW$?|FjLiKL0BVfGpwZDodLsDO1*H2vC*^e6H`L1kRP38Hiak~=Q}GrPn}3?fThtj zbZ+O_=rNT338WZz>XE>r-qU@=jCOI4h?RF@8`>&0R|)$_Z@8Co)iBZMrrV*>=!)iK z>eOG+atq;zG0VPMp!PP6mhby~2nps@^fqiW=O*3=8pe?`jCYriM-Eng_l?_L z#A>*&;4^bBeG9^7H@yVzSUYWl>exa@gGktDoa3vMvIZZU&(s<4>lLaj&m&?#?{YX6 z`?`@zQCys`7+pkReq4GXCz1A1*9rSOALB2-;~GNjd%XtE9wv^xJxOWAz6ZaO!-;}^ zmj%Cedz11E+z@ytE{nbk*Wz6Cb%-8vnSKs8hNQc4Ld>WMzUX`=iAfvpGjJLBUF2&Q z+_95LnF=rP733SZVUQbNOPgRvyp=Yu96bsX6Kpm`1M!~_2pPui5VS;#zZ$a4GZx+RJ7`Hr zpnKuP1V?UZ!0jbA!!E)`?J^uwoEHetG>zSbqgw%z)@*m6OuInvO}J#Zm0+XU5IxjY zstK4?&N#2aIoNAKYrBy{V>hbfH&9Nw-Qd-5e+yH5EBJ44UK)ga1}ldq=uJK3j1jgE zO&z42G^9<#m21d|!1>NoLsMwh91-oGMz}8o>NH%4LVvB22}(g5aAy8;!ZCt@o7pKP zzOJ=>E|T?YZ74KmwhEnST-WtrgEjI zvUS{h;c0A`|2RC&p5!Ir5LR1A$DdDIfWAeN5eAR>wKOo@I+m3A^xAW%x42^g{<6FvL>FAWxgb&oIb)@2WEN-Bv(@6LBypa zPJ_5uT&HHL%;z9vk4Q>vlNoQtTEd3-QKBBBWNvId?zT}dcSKd(Y}wRj(9+}i9^cR9 zCq71 z3SHSg^ReJ^4?SKHk^U*f<>cb(SL7s8E!5<=XfkZdNyoi=Bqu-dw&3r+Cpkg7C;4x1 zJ0}&RrrA9%t3xR6zNejF^k)19Ri6RR*>Tj}Kg$EK&Rs^EI=kFil-`2t4=hUU3JU|G zKMGlJX~LKWVj>H!gGIST^gGy>TUPra!V@F#_i$`cQv_wBZA{$|bptBgr^Q(Bn}Rh~ znH&b)I+_1V@PrV9w!JAgcbpIyqNJnTSPd@3WI>OHu^yQ(hoU^U$rbKjB*h6XXvmu| znA`^;0(_8{L3`n5Ub^vXL{zLTM%MF?m|tc5gZizAdKFgYCmL@D!u&r17CcSg!|r@H zX2mo4iPYbDDL;yu{wd$nBlG`+TO+Gz5{xOZrjh{R;)2Z`WLN*<)uXr*Aw`iQ__wgC zz(se!{(^~g8T`Fq0`)-ls8X5*%SM$pF)}&xZLi`a|4E(4~=ndFkSW8cWRG3cpbf%8JMls8VixLtJ zh6r~fpz}<|_!AYVzWah-%e?@u;&j(VIm$D}WAq03U9z$PSWl2YCpUYdytKX?$1@PG z_XYVW&{#Zc!ZfUiTA zFWVEH5YllsB}})lpnMtq20kfw#b1(RyGaf$pQnV2lO#jS{RyHfmeQ9yS5~C!=vsgY zO6B*%gqP?8F}{g+@}`A(Rw})9YEdVZrlVIReh1>>5qDa=r&Gb+5&N;vB39A)d&KtZRIoQ9 z*p-MiAa*}u3ESCA$j4(bl2($8)joV+?$q7Ltb}4EA8WW$2u!uPMj-_Ay_%ynTo!&A ze9@^)U4N+7si##reTh(3y_AlHBh@RZ0TQR(roV)!=~Z+o%$nXvbKsNdN6MP9YT6bF zLtE4^)T;9Ldvi@dW2cxsx8W`e@kfJ5i@x|pBm-->1u15aVs@2tZMcj461>$(WN6$qOrVDQcSbZ;#XuvDx zEUQT?kW7+AGKQgLJhaZ*N;|a&FH!Xk<>FxaoFqp~xGv>`4t>tWuirun zZFpo4b?03m8A>(OpKvL62X@Y}7JZMkkSXF>%3Z~;==(g|pCA-1UxpNk+K9x@;QE|d zC9j5l+rdoE_c$?@euZ9DY6MM>1$WIaF~yO!O8W74yLS-g_n1(algi8$FHo#K8y>MX z)rUm>)_>Jll&eP@hDBC=DAErdnCUd6zxZEu7v-iQ{h<2_hiH{|Bx)%R_19t&|F?l! z4960K@u#`P4#panX-zO0i-*j(WV{GZgNmAX-_qa^gk;fST~Vyr*Mg(L%D3I@8|)SF zP7$Mg#Tk))eLy$vp)Mt{XW65Cs5%z$Jdc!HB57XN9`||- zFNyqf@+K@vx`jbR=40UX$C8YzgofA{yb+6dOZx1wMB}@X!Sh#X{hM43MhxpfJq(t(;z;!9zAoo)Va@KDHnx2(IhnNm)uLVtXWh zbvVhHe7Qd5!;X>egsUR|4{@z?@KqhsAC@&Z$r^DG)>$zE>B8$RLSL3O>iY$m_7Dd- zBk{k2PwSdYU7>r+Ch}cSv%ngE7*kt+y{5Q@MYk-4tqa!C`9K#YnU3KRF-8u+Yml`t zl|BR$@plU>UFd4sAn80BOm8yZh8tSuk6=}y;T9p!un12bjuYJ=cJn2Zj0|G%XsFwdp>JO(8~|ZQjYPZ{oUSg!mVwV(cCT_!79bsIj0o zG#HyKNwKsqnvh%P8_xbXQ5TK6ohU6!9+sx}(W3$W^T;Yvv@H#`E-o{*0xm|&eM#Xh`dLG|LQHakHDF*knnhx@kiO_J^So% zY+Ve6iI2}UzB`~f8csZ(NOwKRJoNd9hT zMC(u~b3kiaMC&F=(P~GnKGcUd9`;QkDKEv_oRT!micp7~j2865wWYH#ffd#lWM`wq zyokg%#0Lf>j)+LKsuEqudmW%Y%lKB%it|W8DZhjd>*p9Z1@EokUm$B)y2cWM^1@6l z;lj|kY(vw_7|&nEjpL-pozu^cv_HxQ`S~1xC?NYa-65$Wv z9r>ux+A-fvznSHZyMnnj!nFsvwjiC-6WpY3=S?b?zZ)}aU6_}|UG0S3;A5IFRS@o3 zB!4DCzE&k)qmnc1KYC*jzewH1gGFUrE3ZIvGvmmexLCsN4LA`tLtciktT-h+6Ydh0 z!-Vt6iw9sbzat#tEkdzLL}pQd zX3dJ2^{{Hz!>U;tc3-cODW@o6=)uZs-%L_R@7gB&2F=rPEZNmXSWiSsEJ_(4ky4>b zDOaWF*tNZ(Ccaah!H-z_ei$xR?RpUHnkFd=R2UI)8%v~uh=@E@M4l=_&(7&p%zpsQ z&lxb^8R7aIxiTYM=_*&6%4J|5Qq8xawx)jj)%-}`wOLjB50V(CvJOgSR^0O@3bI55 z#i@dnj>s!CiXGNFOS$y>?*%==y^OT~*$vjKw6jtFZz|v$^IuDrd{_z>fo~{ZS+O>;Yph{Bx{cA`WQNGrWbjY zw!k8p+7%fuf#WH6!eWt8zsBFkZ-J#x<(6gM2l+WP7W;8q-qd;UKO4KO*nMS)Db4ON zVK@u$ZgH?(k!+Ib@q1QXg)g46Ck`2~xG(r`i_d~-g#$ab1uN`P^F^H}z+Zs5E3)zS zw{?Xb>*Hf9mPglwf_$rtH4)fWCQ&mKt=w(S4~*;i7&}-@GmAHrJ8)^Gi>?9cPof*a z>bKI-P~r8)8hU;kveAdHwJt z$Ztp=9EA{K>xWPo7B-Zp_F#OB_m;O+rl3nv?N_104Rvkh!&^EOaXL8LU^QJ7sZ)1l zL7S2rs^Mlsw&@5)6D@9wr{50pE#P>%gl>WbPcO>aET5_*=V|5xUB^>&ebLn575LwU zquILV1#RAxy5`4cDpJS7t*0H>n2uXDgVw^5Rc@;%+_RpvQ%6755|ye)vUP=d8=P2G zibc(>RaHtWcJ%>$!!g3_hpVfX#{VemJqK6DwzHl?E88YIJpz_Sa~jvheIypLB0pAC z?5z+*z6q{3zLfs7SmcT6DfZawMSirHVJoxM4{z;ID6a*G`_4C5puztCS%z1as5K7j zjX*UQ&Lg{+J{?0c6{_a~Bl`-cl z?zH8F`Tq+&{dT-J4p%9NSH^{Jhxt9&;m(2|)|AmMaIZa03*qM4RQ)LYzt%%wT9;^g z2uJ1k#GVv*8S>Y~QywO)n@;}>FRoia_d{S^QCy2exFZs~oM~s5AM6$QMyOaHpSltu zzv^}00FDVmr2fx8kLk5%_tqYW)J53ty}+N{E+E^-(juK)BI(2|C=X=+cAz z8GF2dg)^ylwiC{Zoh24m^ES+S=0NmL89Q-)rCB0Bv$LQYH?$55{_+&`zh9x6Br2Eu zCv{54L%>UH1V8*9{=v>Ozc{9yvp{I}==ugxr!CAs6Dmi>c>?RX(W^APup|Anz)utO z3I)Obc1UsN6vT)5`Le(J-!x+fXj)a82jNWfvIK!ALW?TB7^NqNydIvHptPlmo`>x% zWvTCkixJWuRyyLkz7%Yur4XL~eVCk4;D_O6ivw@3=8dKCtHS>7j6}kIhtpBC^8Dj4 ze`5unv_l)mP$zu7F}K1JUWxq?Ovi{F9Hwr1APl9u+@cS_qna(%n%IoT^N?JGC?Dr2WuO)qM)&DJN7T>ws>lUgl$#k?{HTr%hW&l ztI)750spnJbz6lZW!nWh1@=AXP_#amV0{2-Z}+0aiT6LTCwbo1+4tN;nt%Nb!d%AZ zr82^Nf$yvMEXED4blL~$33run=1; sprintf(name,"sig_mq#%d",count); - run->mb=rt_mq_create(name,(sizeof(slot_msg_def)+sizeof(uint32_t)*8),50,RT_IPC_FLAG_FIFO); + run->mb=rt_mq_create(name,(sizeof(slot_msg_def)+sizeof(uint32_t)*8),100,RT_IPC_FLAG_FIFO); sprintf(name,"sig_t#%d",count); rt_thread_t rt_t=rt_thread_create(name,slot_run,run,2048,pro,20); rt_thread_startup(rt_t); diff --git a/source/task/moter.c b/source/task/moter.c index 4e9dae9..7f98d1a 100644 --- a/source/task/moter.c +++ b/source/task/moter.c @@ -24,6 +24,8 @@ typedef struct{ int count; int max_count; moter_stat stat; + void (*fun_in_end)(void *t); + void *t; }self_def; @@ -73,12 +75,42 @@ static void moter_run(void *t) s->stat=STOP; DBG_LOG("moter stoped."); emit moter_end_signal(s); + if(s->fun_in_end){ + s->fun_in_end(s->t); + s->fun_in_end=0; + s->t=0; + } } ev=0; } } + + +// ½ʱص +void moter_down(void (*fun)(void *t),void *t) +{ + self_def *s=&g_self; + if(fun){ + s->fun_in_end=fun; + s->t=t; + } + moter_start(0,MOTER_MAX_COUNT-s->count); +} + +// ʱص +void moter_up(void (*fun)(void *t),void *t) +{ + self_def *s=&g_self; + if(fun){ + s->fun_in_end=fun; + s->t=t; + } + moter_start(0,-s->count-100); +} + + void moter_start(int fre,int step_count) { self_def *s=&g_self; @@ -101,6 +133,7 @@ void moter_start_slot(void *t,int fre,int step_count) if(s->count+step_count>s->max_count) { DBG_WARN("steps count exceeded limit!,max=%d",s->max_count); + end_irq(s); return ; } else{ diff --git a/source/task/moter.h b/source/task/moter.h index ca2ae45..42c5613 100644 --- a/source/task/moter.h +++ b/source/task/moter.h @@ -16,6 +16,9 @@ void moter_start_slot(void *t,int fre,int step_count); void moter_start(int fre,int step_count); +void moter_down(void (*fun)(void *t),void *t); + +void moter_up(void (*fun)(void *t),void *t); diff --git a/source/task/tran_for_checker.c b/source/task/tran_for_checker.c index 1e98c1a..56313ae 100644 --- a/source/task/tran_for_checker.c +++ b/source/task/tran_for_checker.c @@ -9,6 +9,7 @@ #include "handle_for_checker.h" #include "compiler_info.h" #include "dev_backup.h" +#include "moter.h" @@ -81,10 +82,29 @@ static void check_end(ucport_def *u,port_mcu *src,void *data,int ack,char *err_s arr_append(a,0); arr_appends(a,w->ack,w->ack_size); emit tran_send_signal(w->u.p,0x31,arr_temp(a)); + // 把命令字改为0x31用于接收主机应答 + w->u.cmd=0x31; tran_set_busy(w->u.p,0); } } +// 电机上升之后解除忙状态 +static void check_when_moter_up(void *t) +{ + ucport_def *u=t; + tran_set_busy(u->p,0); +} + + +static int check_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str) +{ + if(cmd==0x31) + { + moter_up(check_when_moter_up,u); + } + return 0; +} + static void check_del(ucport_def *u) { @@ -92,6 +112,23 @@ static void check_del(ucport_def *u) } +// 电机下降之后开始检测 +static void check_when_moter_down(void *t) +{ + ucport_def *u=t; + for(int i=0;i<20;i++) + { + port_mcu *mcu=tran_get_portm(u->p,i); + // 这里打开检测 + if(mcu){ + port_start(mcu,check_creat(check_scheme())); + } + } +} + + + + static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data) { int return_size=(check_scheme()->range_num*2+8+(check_scheme()->range_num+7)/8); @@ -100,18 +137,11 @@ static ucport_def *check(tran_def *t, uint8_t cmd,array_def *data) u->ack_size=return_size*20; u->u.p=t; u->u.del=check_del; + u->u.dolater=check_dolater; u->u.doend=check_end; DBG_LOG("check: skip=%d",u->ret_skip); tran_set_busy(t,1); - for(int i=0;i<20;i++) - { - port_mcu *mcu=tran_get_portm(u->u.p,i); - // 这里打开检测 - if(mcu){ - port_start(mcu,check_creat(check_scheme())); - } - } - + moter_down(check_when_moter_down,u); array_def *a=arr_creat(); arr_append(a,0); emit tran_reply_signal(u->u.p,arr_temp(a));