From ba047d4c7151109200330f22b0f13ba1c3c7a96f Mon Sep 17 00:00:00 2001 From: Maxim Date: Tue, 11 Feb 2025 22:30:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=80=D0=B4=D0=B6=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pictures/состояние-исправности-0.png | Bin 8125 -> 7263 bytes pictures/состояние-исправности-1.png | Bin 4935 -> 5579 bytes pictures/состояние-исправности-2.png | Bin 5164 -> 6030 bytes project.godot | 2 +- scripts/FS.gd | 34 +++++++++--------------- scripts/PRD.gd | 37 ++++++++++++++++++--------- scripts/constants.gd | 3 ++- scripts/network.gd | 16 +++++++++--- table/элемент-в.tscn | 12 ++++----- 9 files changed, 57 insertions(+), 47 deletions(-) diff --git a/pictures/состояние-исправности-0.png b/pictures/состояние-исправности-0.png index 79e6700100260efa1ad55e45a23aee00cd364c9f..be905b09e24ea34360e855ada972c78e328be62e 100644 GIT binary patch literal 7263 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 A_W%F@ literal 8125 zcmYjWdpwiv8-I4NnX?fy=ffB!hsdGSHfN$amUSAbMyY7LlIpR^p&Uj_y-q!bLa$OG z9rVs9DQbku=_gcFN<}*8?e}=gynk%_eD++=eP7r2{@&l~y6!uj?&~fuLzDpkK;F~C z#UK7HgFmIx82B4qQ}-4A!R_}5IRF5%`1uc_Yw*Y%0O;=XbfE^u7lzIK{JFN7ER=uQ zQSb&h6$pkAESXHElCb0hLbX{ag~6mK>J{?&iJ>+P(EtWBKP>R`C((z;bHRG=QSiV$ zDozPLl5Fh1QRD=Sn2<&HpH$Mr{boCX-j=H z2!!88$~Zg&iQ%0D4jw$H@g@GNa1YMYv%y|bQIW76^?s;v`YHEQ`SgnUZKmJ} zdBg>vd&+nfYC<^G>l&7G01Acrnr;X=ypG;%{NFOr*DLS-Y_L!2>;g{U%{Y zN9KwqKbfJwk1G0}vDkWx`Q_u+70vzE_Gt{=I_#WLsSbOj2I9wS))g)W5d3cdNHIFi zPWj5^%T^xVo?P$M`uh5q=;-Kgj;h%BuOCVFIkyje&wD;`^?b5dz{ZiymV5e&7l%;8 z;rmoDBvJh4ND2wM#X)il3$?fqq<2``!x%VKmaXFy7XM`!QG#dd+k|qeW=muV5^TEu zogZ@92wt#3lW0MPgnZDTPzcD&F(D;UdUb3jsR;=B%};$j7vyGj2U>R;R-7K<@%eIIgVW98h)NVrzqN|EFFb_8|0m2hHE#nx)3t{~uo4 zz)Upb;00^1*t5p(4v4~9VuLH>DMe>bn)os`t^43;Rl8{wlXKEUO>yMFDxuHFu z$dC>YG`j0iG4;}2YWWT!c+Gr~7;Cj{UNWxU>0MoLF1|gc6zgrySM8%q*ghp!bHK$d}7?lM=5vik1t~V>3R}t0M92++|)U_ zu;zk8oR;1bm>I~YqaDL0WBKD0`J;3ZisWeByBsgi^d6+()M~qhIWd5RnU^gfEVMDvS+SO}+0FPEFqJa)9H}8PCYB%cti$C;)>a`iu7lKFyn@_Z*K;)-F z$AkC{J-3u@T-o9AzKfehXPVnmy+2IP%tYirn|%Tm!6R*s33vkqT5%p z!&d%&qq@abw8do+GR2kVf)yV;DxTK4OZ4;hUYajo^1R}96@T96zTC=$N&HV^epo!cE2SFi`J;Bi=5-2>oN9I6sz)Ui79e zIoU*s{zxWpT>uJFz1SU6Wvaksxzg zS8LMeF_xl2V%<<)?Td?S=Jw*~+uvA_qrfg{yxzrt`wLshz>G?JVlR5LE0P^f(fMEF zA@wU_R~C?obVQWt>stcVDp0Tq);tsR@)Sue5~Dsj`TTzIw4SY_wO+R2i@Vv}3G~Gr zG<0?AF-r^XIYeb=8=_p9&Y&Wby*(v@XmCca#8h)lJF2glY6=`AME!G>$#&d74Agcg zIOZwJQC|H3>lFfI#9hZ%H~C9s(BNEhayH4Yl#M>9Iu>eF6J6`>LL;~&8n(YQwK_% zu{qbV*ipA1e!#m#VJe4WODqS>C%=pqHcHkKV;YcVAfXYBm<1? zO`|$C5!4CLfjkMB-x6;1l5B6$X}#w-4Ew1v3E)2#J6dNNK7aSBLfBzow69M@xzvkq1xg zdTPp9K%Q&|gL5+SvYgfEb$l0Z?+*mocnOU~!En&aSsKdaMH=EIH$0fNY%Lnl$VV5| zdE$U_Qf+xeMY+*}(unf(o}*67RJbl{1K9s4Fdikq<_W-7FV0<_X_3E+cR&SB!UxeN z+WodRzwoa`{nv7?%es5FmSCZBqr^d@@~d`cW@h&`cZX<7NJsPJi6gY*-{;TrUZcww|}&Q(R=q2m7z>)qkV2rDH`hqP9}%>`SRF7ic(&_og(w#A(=g>XZ{d z_zA0^-tE<2scS%WGnS84E`rgAtOhu8KPB}S$HZgohE})j`S2Zzd9M@L`TNsQtXG)Z zTXSZDRij%9g}OHjB=zO+_aH~9=5uJc>G<8?!M5=hskt9o zFKzqV;DF*tu!BsBJ!nx6MYg6az$e-`=?oVzyT`H=QWUoV+5LaKAIh2ZtSyp8!h7p? zJ2^k;*NB0Ef$&XWaALOcz2~ySK2~16?t+=x85q6a^9dqxU*An`3V+A?9{mLwKOnf{ z;0bKMq_)8EFu|CwGLp%*dN(CC)$rr%Cll9V7hnFTmmRjh5D25`e57is8)!iCUo(QA zHLDA~J-kwnxVX9~Yhf_+EfU-W3wmD^Fu|2$EAsVHO`&JOsuG~#YDi1UP=!9a%yYh* z{$&pL%%$LFKzEm$=22rD#NI<7sQ!8qMk_8aK|}I9|N4!4RWk^n^@@8!=+`saL^u6P z_D;53j4EAD5+JeqihI*ALW0Zu*vzTLJ_h!GY>t!g7Uv1{-x?zmq>K;}=fVUp{{1T% zxZiDvYR3Nd4jvJ49T?I$H$6wUXEGap|NYD9H7FUhIMV$iVgW%oLYD%v$wcv(pQX&= zLc`ud=2?0gkPjbToKP9wdWRBr!0`D;XO&>wFu%qOqYcf{GA~5r2wCe7%`eZDt5*ZY zJjYN`Cv$TZf7u8kPi3xr?EKYKXGunUa}e+YpRpn)=P^LRUjF^buCA#5F?QUnojEKG;b?YU~-S=*Uq@HDa80J!LO@?x{4!}`&j}G&6hW& zq3M;-CwFF+myws-jD-g9>tF@s@z%&KxCM*QmpP4~N7;7|hRl))F<|5@p`_f(BlMm` z0vI%ouOSq^RdZ7G$B)iaYn^o|1zV@K|807`TNhS7-&>$+iUccICt0PrW&vps>Vh~0 zU9+{)>MS8SDRIo@sgHfhPCZk^q~sw0aCaTG4m`g!ycALu-w(%Y0?~ggZu&LRkSfUz z^BMiQZhYNg_|W9I79tWblvjoq(OK3;xLMXr+w^*j5?Xv=cLsO;qDOV-F-OWR%NwJV z#63OEFSB5CfYP58xKx`u{IWyy-sX1iAB)zf^!)bzD62hCT3PAPm#3A$M7H1QCTqio zY$sNKpS6O|k3Q+dE_x3aGp-Xf!q113{i+U_z#XM^q&M#8Rj?Lk?Dj2Z?UWz7dd_Vk z4X%K;y?!L&&NX?pi#WFas`4UD`X>Bj*!sdOq7(`Xb(qFaNE81kt7W5OcZ$_UMIG*o z5;kAXon9t-Ut3yx0ELW;BY(gBw!|S?Rc<-(`X2ZSL$xia{8Qsj*3GyXGwWHshnkKO z&Kt1lz-khgSjI2jgSa2TGW;Ryw#uH1rKk_TY}P`*&hU49CtVe?Z|Fw)vgE65m@Ld+ zDl=c6%CDbVXHT~BFXh+PU#99}h}Ac+2vALKssX6(?Rs*4?#!bT>h!&Y#I!X*X^SFc z@RGbF{`l?0ulPIVMr5nL{?cUzv#GvA*_durvbCL!WWY_m} zjCCjm0BZFp8VAbUf_!`@;4Lfs6^+5`>8oXBW0|W1F;kd1GU<2dn z%II5-hsk~U017gffiCYhq71ZaE$pQEJ}JOHar4LSwv%HGOHd%Dy{D%;=h*10j)GN= zbsmR+z(xehWfwR7^?@!jF zf;fO7`?YxwkZI?C!yJKGzV%kx?NZ(s(Xj=UH-LMuwN`T72L4CwBd?g>|xgK`Zjq>9k$Q??kH200 z(cX~d#mk4+mx3B*HNHm2R7Eb9EdSmPxGHe!-w%7|ZQe3Sc1)Aj1msCj5Kd1lT|^~H zReV5fszd4aB6jSB&xNYwCxrm(sbcr$QbwT!Fo8YQnu2_e{EGn`)Ug>^-yy4^0i~*e ztFu?Ovz77SpX4wQzm< z&76-tKP4$k;Du`g?-hLyO{9wub%;tUyW6xL&^LXo}!;zd-z@=5Vu&b@)vn9$= z*!esZ^o?FAcP$y`lLq0HceHAmd%F^z{=HB4n_01_tStPs4`b1Z1Wq{Ath&SzsEeR9 zE6!d%dj;WjMm8lONTK>Lg)n-5jd(;_EMPEfvYCL*!;JdjxKQ{2F!p?`BtgK3h~Wg# zr46XQYf-p1`_0GmC&Z^ZHOU$#r6!=xIlw!O(Avupsj^q=m{;uzr(9}T6d=J4PO?u( z=bk)3U5{tEmX_+alDDeS)f||-Ay`!a#PX@f2zZ(NV z1Ps4ZK5FaX$1xr-N9(MpS7om49c<}c>W)z?!KvCLM<=OG`m*AMc)g65t>rqZ!F`U7 z!_gZPjy<7}++ZpCtwn-^oMgoGN)j2O9y(g-#PXH~cM>SCR5@81Mm+n_VSRQIlALn{ z3=3-=V6IS?q3;1LJ~RQWI9Dn)hwAFOgCfG(jAyRAOg;TyXg0w?=8{8GG4w<43N`{V zbMDzXR=48+DID3f-&6{EO<=E5BQG2GBW*`P4D^HLK$YU;FnTe*-SGR?@ehG5$7q?2 zLOzmSpu%4J=;pP3O+8C;NaQvkaFw*IEca538XhnB!nTS8w61Oo)Sfn8R6F>5KU{cO z8n9^w@_R})tV-Vqn7L9(n70O%7Dk&-Bh4n_p;UeF;>Yr7Ob`R$ZTmbqcw%U4*=x35 zr-YqE9=Z)AZ0`pLP`cx0iDd|_ARE>#H9lctZSaEyy&~4YMy1$?K-Bt@qTH1-71GS5 zbC=uqB*ozr28!b)SQEu)97@dfR);Qa)G#-%RNT)$4w(^aFS3~?^IgTS>_Ak-NHUoSI4H@U{S@1?D;_%zLc{Mq)2Y!`+1$oo&@2;k1f%OBaqpW=ZgWu_f44n<}_`e zGYyEOWc!8D71fA}tH>L1sMh1gbQ;?Bu(4daEhJfMqBT6KG-;i(AkH3A_9r~IE*Fb1}Ua4Qh`mR7+5D=65fFUDR>++d#w2Kds{LyvWx64Q2Hz(@;y zwKT0SjQB}T`iWO?cnu1+S7m>7%}y|D7YA>`@;z7)_y#7UO{xMTGucF$15`Yb>$9_| zeZ-R7@etwbObpcQiumH?gJJEG=2NH-8ZiOLVSHg849vbL+UQv_Dumt*@(&Sgecj(|J_pnNL c8;RE_AgY{m)ITL+aGn>QuD&i8X-v-l0digVZ2$lO diff --git a/pictures/состояние-исправности-1.png b/pictures/состояние-исправности-1.png index 6ad156fa5581074b4ca00a06c80a61f5c85278d5..f942b10bbb4fef1a8d55eb872bce100cb2223d20 100644 GIT binary patch literal 5579 zcmZWteN+=y7N5!FgFplX)MNw+A62xJ9VtSz6~l)RyTt_J+)fknj>X{xMJ+Pag8 zBDQL!$9fbB3qwoUp6a%hx>~z?5CyYA*XoG zZ+ZH??%_C!a=MWvA(H)5S=&t8%Jfj;cH9)?8sl5sOXj*0Tngle8iAjDv}%xHObX#( zZ!lWO@_}2VDz3SQRM&2jNNUY}S;Z^Uk)^eOgRNdUv!cpYlSxQpWhSE*Cx)o`D_S+WGScrPJ=;D*&oGHTA{dup`;nrocFE2p;J-Q07l7p)!h)|9lDPO^$fhQBgC!CFCoYG|!8i zNT~9~ONXPXcFtdi4FgvOxeU*!vZ-U+RGcb+o17WvMwOJ*q9V@ygA5#Wv?7IZOcR&! zqYNx^w4RcIgKX<*8EA6E49LJDw)I;X*z0T^lz}ET<~tc^akie7fxTSoe`H{SGe+*a zg=>}j-s>2W`<}qX$bGjshUC8YvO{v;6C5RS-!1Hr+;@+2NbY+ATO#*8-#H}r-NOyZ zeP^5{a^Lg0A-V4!N4?y4hAWZ#p6{ra`|e@u<-RkHiE`ib*?PI}F1H0$nl#TDcB0&M zv)i(IJkjN{RF21t?m8LI?6SNvj>q1xc3#n{P>=U(MMhVhjJFT*wkRb9%2ooVmSW9- z>7-Z^U@A#LvX=m(q}VjTCP=Y%z%){91;Q2)QfwFSLZsMq;3?7DgMDMK0v0dDCIhCE zVjlyhkYYB#Vx?FEV1ZI>7GP>AR?3_mjSrXFM*}Zd%8Nz3561ac0a&PXZx~=oDV7M> zIGf7=3zMD^3D`LM;sG1yTRC9K(!CLYO_yQ`fRQ3r8dH|od1i<>qAowBL79-6c*j zmUT6dZD@E&UPc+N-*+M@viq~W>4jwHl|viYuR_p6b}hOYjZDIGn|X}&6u+XNsH~?| z>FPO#$ehLxv!cxd-A(!B~ z-wIxg#3KVl4P=mc6fyfVl<4-T0I{}9xugYcX?nCn0XwXC2i@|`EVRK*!UnClf$q@t zf{{f)SBiIp4#*7B^v*>)NCH`up%8a)+qmH8*M^>sXkt1t%gWgP_RCi61`0HqmZEjm zCw8OhbD$)D)7K1mnt}UNX0s+y&(759i-^^ew<%~2DHvgb7Fq(g(p3ttL*_Q}-HNTL z^ELRsyUr*#IgqvoE-;1=!xg(C>ju)ULu;2qNl`m?H;80~A(73vJ;Vy ze(63-ok=uI%)@R0_SO-~{5A3hWDzDFL{m_~il~4=MpT zgZS4#pl|9-ncj>lKshLWpSlU;odVhKdy6hFU#}nY=1GDX z$CXYo*f)C9s*NDUDxp(=y-#4f@a@pg0=~|N-KB^^v@{uT5cEj_w*l63(UvS=wtJVsQN17GqbN)htN-SgGpnNsyG8y>|-s&m+P7O zua9!m&*fgen?p*zBa{=xO9~zje<`x5B3fm_#nHzW5h>y7!oeBJ<>{OIkBt?uehsXT zH4&pX{;WwJ;eRwW{F*~%VBeZ*jSBS3qOvc1via}rM>Xa-E4qO}d@A=>h@?(Xg&1T;A*l+{<*pNLo#OgRZ@7wOdt0`=>^HyGs5kO$6xPC_{48WetxqmTMMKhDtE zafvr%-(k3PNpt)9pz9Z&cXMAd;uJsaKk~5^*z4_P#;jccO?vFCWBG#Rsfl?MNrBH; z*Hus3w{(OU9VaM-i&AE@JR=LH)7M>d7VKdxD9LjH)iW*M6D*KdCL<+Rr99t22e!<+ z%Q{P2{{*$iD)&#BYoGzXK3`CC($Hn^d_Am8bRi%WF6;?lQ|Vs|~-5qzgWslnO*>ZPCBwaueru#=ywPi?l=Q=WFxsS{fuwCMNcO zYL|rhpPHSHAg?FXTY}mL>f{E4!NlNwU;yb4ZvVB-HOZm--rUeFKq)5cvDgmm)S$nu zj_mpaq;=mpFT*^70^8#8Qt{diQs_bl#4t}lEFGyfjQfkdbDjFq?wO~)21@6mU!U(s zj!WvQ+45wrHnZuzdE3}a)4AEY-{@L4??*mFGfNJd2NsbUw)XdCN86Gf@-oVkCUeW5 z6vWIiL?i<_(rCnKL9WO$8O2?0T1;p*lKKud1BrbHqrsP|A;c_AhynM#gNeFNyN&U( zCU`f@a)PD~5Ay9Z0|J=l+rz_m`Ousz%=DcO9P{AJ;X8c$oLEw6xh1m}~W4mSkp^}EH#(O5L@$*4AC`D$q-93 zOokwh4?~M9HL=b0yVA{$;1anHbuuGjv`-Rgr_T28qxQ5ZRzigI+biV9In7Yvc!Ris z#c;$%)l2aUkN;g|<}Apjt8P?7Fy1EZ3agA0m2~iT06LVCS}sMVV_OTel#C8f7Fx9nx zrsoe5GzW&Wj^~s+x`P1pDj8)yK4L=N>x)7?q^qv{G6IOlqrjbkyQ^H+=(~K{Uv#DC zB5A^ICZKkifl~|l!Vfy!IJ2!bXmUv zqi2F>Vj^05a~YO?7*Lqj3NH@mEN}$9G!T0h6;HaoHGUJY^@h#_OZ`j2E2(^w#BvLnAO#$xQWuyd;ARF zGHt~jr)D>ZiKp*4s}1D$8EaTZnZpPiOJ2|mIklP@G^V;;l}qw9N|r3Lu|zRMMoU$qD3B3H6$}$xJ_LaPmq%Q9HDS3H_y+?ni$0W>5D!n? zCY9)_u_Qc`lI-C4msc{Ytm$eIu5{flEC3(?l5xb75th*X%Z=yaKomo$x5{$&wg64N zm?(y@o<4;^8!#r|fzuLp)BQ_iwBk(b{2R^G#l#52X4)irz5;xw>J1oUZCg{0SOxI) zt9yP896$Qg>znf~hwKGyW(l&M3pif(lBZ$ zEtEJ*WZ@Q4j#clHPM5mVZp)_oBTK>=3XICzZyH`48?K_y3mQC_7jvM|-J@ln4`Z(l zE^J{e$7bzKH2zBm738N3$v-D`VuLS%u^u}>|G5&iNd-GuMlqeE{nHZ0PEZwFmGM}I znpk9F8)Zc|?rntB`}cX>x@rq`TtwH||69N&|g23R$qymL4B(xxG zdP7^w2j)y-9twLoS@k~HaheETIO;sAO%-C6Y+}EsAOcf%6R>ng35{3*e=noI35Qw0 zUt#noZZ_e3%)i#ywsgWjhLfc=YAl#a)Hua?6g37_WACK5h2IMNhx?2g!(L=>(F2^a zf4ymY8gYy@&XQ}DOzq%QaHj+lZz*Bpn!z+b;^Su)P4MH`NgE+= z(L%16=slqg$L2rDP|B{lg=2e8gieW>5;d%)TQam4pSTZf7KIX3nd>a6P3~s@eDHuG zI7OOrV__TvY}+bzdQ?o^YNF?lH?6P+uStnC@D3w$v(2#Baov~a(F%(8!1Or{HsC)u z8{518c*ZtScowIOvQ)>QgeAYnbn*_)Zf6{>nUQ{BgWu$R>#d#;9dmL~Ch*}vBEK@= z1Birg`fI~MnrQ0tSFFBjs=}pcqpx~Dl^FTLuYuhb<|zH);-W3+{_X;$1#PH*h15g? zeH)nDWRz`?V*lcR NBEy!4)`iGb{|Chr=b!)p diff --git a/pictures/состояние-исправности-2.png b/pictures/состояние-исправности-2.png index 759ce223aec3b5135682a385a4341203fe8000d7..ed133367a472b7a594381283e017f2c15bda5350 100644 GIT binary patch literal 6030 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 literal 5164 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 diff --git a/project.godot b/project.godot index 7b62efb..67e4c4c 100644 --- a/project.godot +++ b/project.godot @@ -18,8 +18,8 @@ config/icon="res://icon.svg" [autoload] Constants="*res://scripts/constants.gd" -Fs="*res://scripts/FS.gd" Yau07="*res://scripts/yau07.gd" +Fs="*res://scripts/FS.gd" Network="*res://scripts/network.gd" [debug] diff --git a/scripts/FS.gd b/scripts/FS.gd index a8e32c6..e5ec062 100644 --- a/scripts/FS.gd +++ b/scripts/FS.gd @@ -15,9 +15,10 @@ class FGOS: SET_ATT = 0x1B, ## Команда установки аттенюации READ_GEN_STATUS = 0x05, ## Команда получения статуса генератора SET_GEN_STATUS = 0x06, ## Команда установки статуса генератора - BASE_GET_CURRENT_TEMP = 0x36, ## Команда получения температуры + STATUS_CAN_MACRO = 0x31, ## Команда для чтения/записи статуса CAN BASE_CAN_MACRO_WRITE = 0x30, ## Команда для записи последовательности CAN-команд BASE_CAN_MACRO_READ = 0x33, ## Команда для чтения последовательности CAN-команд + BASE_GET_CURRENT_TEMP = 0x36, ## Команда получения температуры } enum GROUP { @@ -122,24 +123,6 @@ class FGOS: if peer: peer.put_data(data_to_sand) - - #func _parse(rx_data: PackedByteArray): - #if not online: - #online = true - #emit_signal('line_changed', self) - # - #var status_len = rx_data.decode_u16(6) # Длина массива байтового "состояние прибора" -# - #var i: = 0 - #var len_rx_data: = rx_data.size() - #status.resize(status_len) - #while i < status_len: - #var byte_i = i + 8 - #if byte_i < len_rx_data: - #status[i] = rx_data[byte_i] # Массив байтовый "состояние прибора" - #i += 1 - #emit_signal('data_received', self) - func start_session(counter: int, client: StreamPeer): var packet = _form_packet(GROUP.BASE, CmdCode.START_SESSION, INDEX_SIZE, counter) @@ -153,7 +136,15 @@ class FGOS: packet.encode_u32(0xC, button_state) ## MODE GEN STATUS send_packet_to(packet, client) - + + func status_can_macro_exec(button_state: bool, counter: int, client: StreamPeer): + var index_size = 0x1C + var packet = _form_packet(GROUP.BASE, CmdCode.STATUS_CAN_MACRO, index_size, counter) + packet.encode_u16(0x8, 0x0010) + packet.encode_u32(0xC, button_state) ## mode can status + send_packet_to(packet, client) + + func set_carrier(installation_frequency: int, counter: int, client: StreamPeer): var index_size = 0x1C var packet = _form_packet(GROUP.BASE, CmdCode.SET_CARRIER, index_size, counter) @@ -166,7 +157,7 @@ class FGOS: var index_size = 0x1C var packet = _form_packet(GROUP.RF, CmdCode.SET_ATT, index_size, counter) packet.encode_u16(0x8, 0x10) - packet.encode_float(0x14, attenuation) + packet.encode_float(0x18, attenuation) send_packet_to(packet, client) @@ -206,4 +197,3 @@ class FGOS: func get_base_can_macro(counter: int, client: StreamPeer): var packet = _form_packet(GROUP.BASE, CmdCode.BASE_CAN_MACRO_READ, INDEX_SIZE, counter) send_packet_to(packet, client) - diff --git a/scripts/PRD.gd b/scripts/PRD.gd index 79c305d..b04c047 100644 --- a/scripts/PRD.gd +++ b/scripts/PRD.gd @@ -50,9 +50,9 @@ func _ready() -> void: node_select_yau_07b.set_node_text(0, 0, 'ПРД-Н') node_select_yau_07b.set_node_text(1, 0, 'Литера 2') node_select_yau_07b.set_node_text(0, 1, 'Запрет СИ 2') - node_select_yau_07b.set_node_text(0, 2, 'Модуляция УМ 2') + node_select_yau_07b.set_node_text(0, 2, 'Модуляция УМ') node_select_yau_07b.set_node_text(0, 3, 'Положение луча') - node_select_yau_07b.set_node_text(0, 4, 'Аттенюатор') + node_select_yau_07b.set_node_text(0, 4, 'Аттенюатор УМ') node_select_yau_07b.set_node_text(0, 6, 'СИ 2 в УФ') var node_select_yau_07b_2 = $TabContainer/PRD/body_grid/litera_3_5_7/yau07b_control @@ -61,16 +61,16 @@ func _ready() -> void: node_select_yau_07b_2.set_node_text(0, 0, 'ПРД-Н') node_select_yau_07b_2.set_node_text(1, 0, 'Литера 3') node_select_yau_07b_2.set_node_text(0, 1, 'Запрет СИ 3') - node_select_yau_07b_2.set_node_text(0, 2, 'Модуляция УМ 3') + node_select_yau_07b_2.set_node_text(0, 2, 'Модуляция УМ') node_select_yau_07b_2.set_node_text(0, 3, 'Положение луча') - node_select_yau_07b_2.set_node_text(0, 4, 'Аттенюатор') + node_select_yau_07b_2.set_node_text(0, 4, 'Аттенюатор УМ') node_select_yau_07b_2.set_node_text(0, 5, 'ФГОЗ 3') node_select_yau_07b_2.set_node_text(0, 6, 'СИ 3 в УФ') #Таблица ФС var node_select_fs_1 = $TabContainer/PRD/body_grid/litera_2_4_6/fs_control draw_tabl(node_select_fs_1, Constants.ROWS_FS, Constants.ROWS_FS.size()) - node_select_fs_1.set_columns_min_size([120, 120, 150]) + node_select_fs_1.set_columns_min_size([150, 120, 150]) node_select_fs_1.set_node_text(0, 0, 'Модуль ФС') node_select_fs_1.set_node_text(1, 0, 'Литера 2') node_select_fs_1.set_node_text(0, 1, 'Состояние') @@ -80,7 +80,7 @@ func _ready() -> void: node_select_fs_1.set_node_text(0, 3, 'Аттенюатор') node_select_fs_1.get_node2(1, 3).placeholder_text = 'в dB' node_select_fs_1.get_node2(1, 3).editable = true - node_select_fs_1.set_node_text(0, 4, 'Генератор') + node_select_fs_1.set_node_text(0, 4, 'Генератор ФС') node_select_fs_1.set_node_text(0, 5, 'fpga') node_select_fs_1.set_node_text(0, 6, 'СИ 2 от ФС') node_select_fs_1.set_node_text(0, 7, 'Фильтр CAN') @@ -89,17 +89,17 @@ func _ready() -> void: var node_select_fs_2 = $TabContainer/PRD/body_grid/litera_3_5_7/fs_control draw_tabl(node_select_fs_2, Constants.ROWS_FS, Constants.ROWS_FS.size()) - node_select_fs_2.set_columns_min_size([120, 120, 150]) + node_select_fs_2.set_columns_min_size([150, 120, 150]) node_select_fs_2.set_node_text(0, 0, 'Модуль ФС') node_select_fs_2.set_node_text(1, 0, 'Литера 3') node_select_fs_2.set_node_text(0, 1, 'Состояние') - node_select_fs_2.set_node_text(0, 2, 'Частота') + node_select_fs_2.set_node_text(0, 2, 'Частота ФС') node_select_fs_2.get_node2(1, 2).placeholder_text = 'в МГц' node_select_fs_2.get_node2(1, 2).editable = true - node_select_fs_2.set_node_text(0, 3, 'Аттенюатор') + node_select_fs_2.set_node_text(0, 3, 'Аттенюатор ФС') node_select_fs_2.get_node2(1, 3).placeholder_text = 'в dB' node_select_fs_2.get_node2(1, 3).editable = true - node_select_fs_2.set_node_text(0, 4, 'Генератор') + node_select_fs_2.set_node_text(0, 4, 'Генератор ФС') node_select_fs_2.set_node_text(0, 5, 'fpga') node_select_fs_2.set_node_text(0, 6, 'СИ 3 от ФС') node_select_fs_2.set_node_text(0, 7, 'Фильтр CAN') @@ -139,7 +139,7 @@ func _ready() -> void: for key in Constants.ATT_DICT: node_select_yau_07b.get_node2(1, 4).add_item(key) node_select_yau_07b_2.get_node2(1, 4).add_item(key) - + Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, 48) Network.read_port_isa([Constants.BASE_PORTS.EMS_G+8]) Network.write_port_isa(Constants.BASE_PORTS.EMS_G+2, 49) @@ -177,11 +177,16 @@ func _ready() -> void: node_select_fs_1.get_node2(1, 2).connect('text_submitted', Callable(self, '_on_set_ferq_1')) node_select_fs_1.get_node2(1, 3).connect('text_submitted', Callable(self, '_on_set_att_1')) node_select_fs_1.get_node2(1, 7).connect('text_submitted', Callable(self, '_on_set_base_can_macro')) + node_select_fs_1.get_node2(1, 8).get_child(1, false).connect('toggled', Callable(self, '_on_status_can_macro_1')) ## FS 2 node_select_fs_2.get_node2(1, 4).get_child(1, false).connect('toggled', Callable(self, '_on_get_status_2')) node_select_fs_2.get_node2(1, 2).connect('text_submitted', Callable(self, '_on_set_ferq_2')) node_select_fs_2.get_node2(1, 3).connect('text_submitted', Callable(self, '_on_set_att_2')) node_select_fs_2.get_node2(1, 7).connect('text_submitted', Callable(self, '_on_set_base_can_macro_2')) + node_select_fs_2.get_node2(1, 8).get_child(1, false).connect('toggled', Callable(self, '_on_status_can_macro_2')) + + Network.connect_fs_1() + Network.connect_fs_2() func on_device_selected(selected_index: int) -> void: @@ -267,7 +272,7 @@ func _on_data_fs_1(fs_1_data): node_select_fs_1.set_node_text(2, 2, str(fs_1_data.decode_u64(0xC) / 1_000_000) + ' МГц') Constants.CMD.READ_ATT: if GRP == Constants.GROUP.RF: - node_select_fs_1.set_node_text(2, 3, '-' + str(fs_1_data.decode_float(0x14)) + ' dB') + node_select_fs_1.set_node_text(2, 3, '-' + str(fs_1_data.decode_float(0x18)) + ' dB') Constants.CMD.READ_GEN_STATUS: if GRP == Constants.GROUP.GENERATOR: if fs_1_data.decode_u32(0xC) == 0: @@ -603,6 +608,10 @@ func _on_set_base_can_macro(can_freq: String): Network.set_can_macro(int(can_freq)) +func _on_status_can_macro_1(toggled_btn: bool): + Network.status_can_macro_1(toggled_btn) + + ## 2 ФС func _on_port_changed_fs_2(port_name: String, color: Color) -> void: $TabContainer/PRD/body_grid/litera_3_5_7/fs_control.set_node_text(1, 1, port_name) @@ -628,3 +637,7 @@ func _on_set_att_2(att: String): func _on_set_base_can_macro_2(can_freq: String): Network.set_can_macro_2(int(can_freq)) + + +func _on_status_can_macro_2(toggled_btn: bool): + Network.status_can_macro_2(toggled_btn) diff --git a/scripts/constants.gd b/scripts/constants.gd index 7665ba8..cc81c9b 100644 --- a/scripts/constants.gd +++ b/scripts/constants.gd @@ -46,7 +46,8 @@ const ROWS_FS: Array = [ [TableNode, Switch, TableNode], [TableNode, TableNode, TableNode], [TableNode, SocketStatus, TableNode], - [TableNode, TableNode, TableNode],] + [TableNode, TableNode, TableNode], + [TableNode, Switch, TableNode],] const ADDRESSES: Array = [ ['ПРД-Н1', '10.1.1.11', 50011, MODE.PRD_H, '10.1.2.18', '10.1.2.19', ''], ['ПРД-Н2', '10.1.1.21', 50021, MODE.PRD_H, '10.1.2.34', '10.1.2.35', ''], diff --git a/scripts/network.gd b/scripts/network.gd index 8f078ac..3480c34 100644 --- a/scripts/network.gd +++ b/scripts/network.gd @@ -113,8 +113,7 @@ func _ready() -> void: unit.connect('line_changed', Callable(self, 'on_line_changed')) unit.connect('command_fail', Callable(self, 'on_command_fail')) - connect_fs_1() - connect_fs_2() + read_port_isa([Constants.BASE_PORTS.UG+6, Constants.BASE_PORTS.UG+8, Constants.BASE_PORTS.EMS_G+8]) @@ -285,6 +284,13 @@ func set_can_macro(can_frequency: int): counter_fs_1 += 1 +func status_can_macro_1(state_can: bool): + unit_fs.status_can_macro_exec(state_can, counter_fs_1, client_fs_1) + counter_fs_1 += 1 + unit_fs.get_base_can_macro(counter_fs_1, client_fs_1) + counter_fs_1 += 1 + + ## 2 ФС коннект func connect_fs_2(): if client_fs_2: @@ -359,6 +365,8 @@ func set_can_macro_2(can_frequency: int): counter_fs_2 += 1 -func can_macro_exec_2(state_can: bool): - unit_fs.set_state_base_can_macro(state_can, counter_fs_2, client_fs_2) +func status_can_macro_2(state_can: bool): + unit_fs.status_can_macro_exec(state_can, counter_fs_2, client_fs_2) + counter_fs_2 += 1 + unit_fs.get_base_can_macro(counter_fs_2, client_fs_2) counter_fs_2 += 1 diff --git a/table/элемент-в.tscn b/table/элемент-в.tscn index 6e77dee..7182489 100644 --- a/table/элемент-в.tscn +++ b/table/элемент-в.tscn @@ -1,9 +1,8 @@ -[gd_scene load_steps=12 format=3 uid="uid://p2suppildvq0"] +[gd_scene load_steps=11 format=3 uid="uid://p2suppildvq0"] [ext_resource type="Texture2D" uid="uid://ce3qpf070wgd2" path="res://pictures/состояние-исправности-0.png" id="1_2n7he"] [ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://pictures/nine-patch-round.png" id="2_4b43i"] [ext_resource type="Texture2D" uid="uid://byweg7pgt8o4h" path="res://pictures/состояние-исправности-1.png" id="2_38t58"] -[ext_resource type="Shader" path="res://Shaders/opt_btn.gdshader" id="2_ecsml"] [ext_resource type="Texture2D" uid="uid://dkef6xwxwdxi8" path="res://pictures/эмс-бланк.png" id="3_4kmgr"] [ext_resource type="Texture2D" uid="uid://bvikuv0lbvou8" path="res://pictures/состояние-исправности-2.png" id="3_i2t3v"] [ext_resource type="Texture2D" uid="uid://b15flrfytxkop" path="res://pictures/эмс-бланк-пост.png" id="4_omove"] @@ -74,9 +73,6 @@ func _on_resized() -> void: " [sub_resource type="ShaderMaterial" id="ShaderMaterial_45ast"] -shader = ExtResource("2_ecsml") -shader_parameter/range = 0.4 -shader_parameter/color = Color(0.764706, 0.764706, 0.764706, 1) [sub_resource type="SpriteFrames" id="SpriteFrames_nofpw"] animations = [{ @@ -133,12 +129,13 @@ horizontal_alignment = 1 vertical_alignment = 1 [node name="txr_state" type="TextureRect" parent="."] +modulate = Color(1, 1, 1, 0.462) material = SubResource("ShaderMaterial_45ast") layout_mode = 0 offset_left = 14.0 -offset_top = 116.0 +offset_top = 114.0 offset_right = 238.0 -offset_bottom = 340.0 +offset_bottom = 338.0 scale = Vector2(0.1, 0.1) size_flags_vertical = 6 texture = ExtResource("1_2n7he") @@ -153,6 +150,7 @@ patch_margin_left = 16 patch_margin_top = 16 patch_margin_right = 16 patch_margin_bottom = 16 +metadata/_edit_lock_ = true [node name="SZI_x" type="AnimatedSprite2D" parent="."] visible = false