From 7910d98bb302f58a0c499589c17b30d04bd4d9f1 Mon Sep 17 00:00:00 2001 From: fangxiang Date: Mon, 28 Mar 2022 19:38:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BC=80=E5=85=B3=E6=9C=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD,=E5=88=A0=E9=99=A4=E6=97=A0=E6=95=88?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/new_icon/center_control.png | Bin 0 -> 966 bytes public/new_icon/power_off.png | Bin 0 -> 3003 bytes public/new_icon/power_on.png | Bin 0 -> 2117 bytes public/toolbar_icon/grid_setting.png | Bin 481 -> 0 bytes public/toolbar_icon/mode_setting.png | Bin 1347 -> 0 bytes .../network_interface_setting.png | Bin 1026 -> 0 bytes public/toolbar_icon/source_setting.png | Bin 842 -> 0 bytes public/toolbar_icon/wifi_ap.png | Bin 1009 -> 0 bytes public/toolbar_icon/wifi_setting.png | Bin 1021 -> 0 bytes public/toolbar_icon/window_setting.png | Bin 1289 -> 0 bytes src/common/ClientConnection.ts | 16 ++ src/entities/ExternalControlTableEntity.ts | 8 + src/entities/SerialPortConfigEntity.ts | 106 +++++++++ src/entities/WSProtocol.ts | 224 ++++++++++++++++++ src/i18n/zh-CN/index.ts | 3 + src/pages/TopToolBar.vue | 52 ++++ 16 files changed, 409 insertions(+) create mode 100644 public/new_icon/center_control.png create mode 100644 public/new_icon/power_off.png create mode 100644 public/new_icon/power_on.png delete mode 100644 public/toolbar_icon/grid_setting.png delete mode 100644 public/toolbar_icon/mode_setting.png delete mode 100644 public/toolbar_icon/network_interface_setting.png delete mode 100644 public/toolbar_icon/source_setting.png delete mode 100644 public/toolbar_icon/wifi_ap.png delete mode 100644 public/toolbar_icon/wifi_setting.png delete mode 100644 public/toolbar_icon/window_setting.png create mode 100644 src/entities/ExternalControlTableEntity.ts create mode 100644 src/entities/SerialPortConfigEntity.ts diff --git a/public/new_icon/center_control.png b/public/new_icon/center_control.png new file mode 100644 index 0000000000000000000000000000000000000000..5e70814b0d3e438636371a9b9307abaa216a114c GIT binary patch literal 966 zcmV;%13CPOP)z z?@wD*7{@>7wxum?DfL#1aDi6YKx76nW`cE@Qr_)ubeZ}M2*NWae@dW zlU3r(z?OkPFBIqxN_&4Cb9-TQxD{sN3!mgk?z#8m`#Im|Jog;__aTlANGbo}C70Wh zhlhvs^z@2Vw0S^AW8@<-{(5$pd*vPG3R%AU;x;KyLH74N&!r~L zngZ$&z_!3=IW+~NO=Yu9C8Lh8c(6@8ze?i9ZTh^$$HLA8*nrir|H6V68x#eMNSp_e zIQL^CEL65pbE|ZI_9HI`4`hF`yFUGFfOPY?$po$wAwjVrC_yMt2*z3S$61Ju@Y8OV zYl}C}>EH;!DTqh7&WeVc&U35t(FaDWilN)*033=>u5<40p4II5~5i4YwP{ zO#z`$NQ{rajgys1Mb6Ajb8F!n?i@te?05}N*I?a-v+72e)lio+yXZKA!QeyKwyw)t zQ&Y^`nP54PA{TjqmYz!lq6*Rivvg9UCj!dlveb2*L?Tfaciv4*PRgn&iNsX2zCk`r z_0eKh_-g7~_Vw>sw%gh39VHk~xwSeCa75GTG&{R{1VRx)p)i@XP0EEm8IM21uXlf= zr8Pp*<0qL+;Scz+YE|BOSH)u)Y^-L;=`&>06ZntX?xC0KpWl#bhsH~TgP64%nQVqy zwTjp4CE6ZC5rVCab@bd8#Zr+%v4rsW=zZ}5on0EM*$nspxX1X|>x_<$x}7V;31EGF zUEWQnd9b!YARMNDV33YPf>No-Za(j9vQsKT;V`CQu(O>bzpb-hC}LSAZ@oFj(9qB$ zC+Z`B#v83vD#^LIc~-KkMAbMKFAfk1hsbT^oHAnD7U6IhRgGg92Kr8(&9y8aynpq4 zfX1l9=I2>n$=03qCR0SC?X(7i&Xvm2(h`+Y5v{X>t5@E8dcf%>n4SHFQ|BCKii5_OfvR|7`$&1L}Q;1gwpJPyhe`07*qoM6N<$g4k%*4FCWD literal 0 HcmV?d00001 diff --git a/public/new_icon/power_off.png b/public/new_icon/power_off.png new file mode 100644 index 0000000000000000000000000000000000000000..255c1c8ad5273fb79441e62f5802bb9030932067 GIT binary patch literal 3003 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 xhO57HFZ!J8Igg6bdZ_a{p|r_K;AgV{_%AQS* z!>)C(d+|KR7*vG};E(uupSu@loTqSo_8JDf*Wn3z5Q@zs#$!;Z6fjp9q)#PNLZi^a zqOxLzzLu}h*Pzwhh6ZC3^h(2B6S}JvxE1#DlOxA*_~tw4b6-L*8pzl$nLs8KDRdHn zE%xpBg6&HvR+;i5LMxCLf%#~Ve>C2Kx2_(<#i{d%#3MQT--$p1DyBwraSI-GJb^ab z7g3}r5+afpfswf({+HhU_|MS02**Mq;|mi=K&#N=VcVDS)be&z=qm3>LYTlgR~O%V z_C@s1ToDo^fqV%hP^WLe)73x3T61eo5<&#tA3Vzccz!RO{)xPVKmh~@r5XozRqe(m z`_`-^?r4SH8$81IcD;z1kSA{e3dLmDg;xh(1_$Sx?c1`F$T~IMt}}e!`9J($gipX5 zoyCFSKcmOnomE9L5*VHv;xBiz?S!B;RA9LY!`jR2X-H+uJ@-*dU3 z2giB*_9j!18Wc3vjX*yRjvhcLKA$#F8i5bTPU6_`y9GUvjKWGw1AejL1w7yIE7a=i z3ntO&If2uj57XLH2#|+;yZ`S9MaArVHmH

}q)ikJUZFwmNpOoy*&yX6k~*48=n@ z?D_}hqPJ3JB89-okrU{dI#A&$a$U5}w)`t<9gULJqYc(iKIOXg0M- zzpWY@Yp?nq>J0UHsnc+908^n!E)$pxIHi-6FaZFM)I5sS%Ub01AN38x=^qEnF_Q|$ z;0%ppFmO|Dqp*3K{i~AG6U9u#gX!=jk_fmk9}5Z!&tcYD@NmUuxs5E?YZv!n%r}}v z6+YV=zkc|xtBK5vVJWGf^J((!U*x!gM#4e*hITjqoOxVq>nq^X>No~n%AEXe-_dbnMD}SfuB!QDb0=oPY zc;nMoVXiPjsaB@WE`vlU3Nf|K1xbZ0TC0?|5dm$qslcS%)1WpotJaowC(S0sKcw@E zRfD3{WttKgl}5QO5(^7wM`%p)CrA(|)j3e4)Csd5o*PQ}y{>e9-ul~YTmzkQVIPeI zhlH(=R#7B*bI1e?Ww7beXE75`4&z{n=7}V+FUDSMW~NMdmlEHY?a%{q+a#+ z2~UDmZA&HK(3i0qbDhx5w0sl3F?2ak%WYMrYWB>UXJOP7=On=qmsa|z<=??dW1}qX zrCS#;6u2oIPE_e?VAqy1B%9GXOTEy|gcy(F-vfu?4J|mMZPnY^?gxH^5}jQ#ne;~j z$GP+$aUO$7Wx=;9c43F(aanjeCVnvezT})lQLV3$d&*|Ct!yI>UHO|(L`s|UoU03O z_8q|Pb$jIYCmVON7W)JIy@4ZAbW6^rSgVJn$cnY5R%|NShNj~CQ}pDB^IteU(ZMz6rbD!N1YCQx>Ypwwg8BR!gfh7r6z6QUQa? z2(#Lfrr;gZ$N9mr0|@i5u>RK@S4j!sGy-G}chr83Uzq9^I+f7_gOLFC_q-xyG9Isg z5+=<;cG;}8Fp8NnVLld=)aG_fB&_>%RHaOIaymXGwMd8h=TAOINiCrPaoaDD523Tc zx0~Cs*4_%8N|$juBk?f5>bs18P8^cdCfPfSV2!C2zixa{q=p+DZM?y{3Iu{dYPA}sas!wO2*<+cF(t61i+l+z=`w3Fk_+9J-IowpDuwRFpjQnpyL<7;#3@|&=Jl!p v?!~JH1rt~d>1B_AQ%aP5UN3trZ2! z&nrYx6vsbrOq#*SP9jALH46(_+89d~NEVtuU?dF-iJ_3Cy{#xw7G~+kVwSV9v9Q6v zF!Ez2&CJo6c{9DZk4cYm>UMAM`~9BN{l3$^*P0Z`r=d>pHY{KW3Rb&_OhLLCqFz>b zgo9HUq(ekDL^=_{%b__nw@<4TA?UF~)tr74xDMeb*aZSXINX6f6K@4#IhX-*Az0jm zn@=R&Mna_5X-`}vg^1`F7b&<|H&(_Aax`8Xm{a2nqeTsH z9D(o~Sbgwt(m|(jqUzSYQ<W67yyQUrZAyZj5mQG%CI5DT@ z+Z}`;7PpV<030P<3WQ<4$8lU6Nq^EsKFGS+@YAT|^y_OP11AZOFZ~Sc>-@XV7AU*} Xwz!{LSn7%Z00000NkvXXu0mjfmgCo6 diff --git a/public/toolbar_icon/mode_setting.png b/public/toolbar_icon/mode_setting.png deleted file mode 100644 index 79b1580a6eda881e625026e79ef31cc47c349fa8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1347 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 diff --git a/public/toolbar_icon/wifi_setting.png b/public/toolbar_icon/wifi_setting.png deleted file mode 100644 index 787d81e1060507310346e854d9d76342c036d29d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1021 zcmV6vsbzm!16qOC#*kf)ov{l%kNTX)3IV4;2z)lWL;Yml|vI!52enn&69&_DK?B z^s$XT`43p*ORFR`D#i!2{va`}B5c(V2G(VN!OqTHbMFkx)LE4JP450U_ssd;^S$Su zJ3>k+xkE@K0tMdPK{_dO4%t> zu`6^LUArQx)GAc%DuNj#o4|%QBfY%TsCoaJfHDm4AK~-NHJY^H-*NuS3rt>llhB!a zULt8H;aA{K6)+A3;Ctw$m(hJ=@CWcCWN&3DRZF|dV7asmD-imi_kCVTzf8ErV5)zb zE14Ody!%-&VWMM#OAlUzD3FHNd(ILU@jx)MYH~e)o%zCi-Ih+I;4W{I*P3#4_jGbL z^D3izAK`T8GkPX(ty2_5NW#gZPcc3`ju9~e1hZ?i9Qou3Z{3*oZ?FE;1SMGp1CmCI zHtvn4^-RewlDG2ucSmb_M>$rlH7)B>WhpSH338h`vc+4hR#&yLW;^x$E?5O9!f%De zfW}uBu7U-f@qN$?DI?XGK$WL^aDs=&ax8G5=G1Pp&n(U`c5#g9ucnDL#UMh%!>8-* zjlKzvuRTt?(WZ@`*&jm~T8tzoQYV;tbc%t*{kJ{1X>aO6SXy6VSd0YMrb@r)5saos z^-%b5^%8IY@UABK=$FepJ#doAgOh=kC5={Sg;XL%NDBANI6j9xs5%d}irMeJ#roPk zWM6!9jpr_(3Iu0MOaVd#mu!zM+zT9UK=9h&IL8i;xU18nr_;Zvj;xE?_^p z?(2vNone6BP)8r{J@Jm7IWzPk=Z>AzE4{gXleyKoZAT?;tM{#rMwcgxe-BDN0)H1w zL=t+1mTlE-=YPJy>A4puS#GNk3E|4n?q%cG--kMZzr=LeIjT~sbz8PM%Y4gE6jW&_ z|2+bRfNtNW`1MfjrI}r{MGvW#6e-a`JQ8y=R>|ePj;qF+C)F165*Bv2aN6VT0ohc| z^ScDw`@byVQ;;_#R3t2dG=2UH5@vQF$Zh0c9n7-19lu~==2qCS+>4`7DL@uhOw;XG z%D=enzmhX`1`Q=rZQ;<-elp#ex-HX@A!bCey%Y|l577VEVFr61pex?RLwygENpJfP zbq{iIbfl2McN{5ghg1}%2t_JI7TQGV#C=$g^Gt=e@8m* rmHB_(D((bIJh?@$62;#=A3&EWzD7dJg zyGmUaZKBYJ7B|v@pcRv*ZDM2dZgO)UGk4~kBj-#STS03<4>OAyzVm(G`ThUjjH9*I z{EtiApZbe4XPBR#C!f#bIL;$gHGNjARd)CHbL7a8jrSV`z8)K+QmNRWD2{ow^k6VF z!jS6|6O>9NhK7bVD(lhFQT@rOQ~JMHSFT*qube!o&z?PNvx(7j=NKCsV{UGaVyQ$| zSC>5nk1CDhShQEKUS)D}(h`wU;=Fj`gzo9-p{J)4&ygmMzv^zDW2p#&m?)BDd_gXo z#&I9)!|3J-AEjMx-JIg~%nU+!9)}M<&C!u#|DsKWRuaceJv8#%S6_1a^yi3dE=zZJ zhkg0|Ppiz%uTU)bBqnl*V};V1wkDt9J#9Fy%W?phewZdB1Zm-s973~J4H?|`7~5L0 zIkVXeLTi(t!NPLHryqaA_~acncN7zwY6yY|DK*=-7I0r0=D=Vt7ry(2_dYsLTgE4! zNuf-r(#*}R@$ASTZ@uvpnh29ynCcQ}@lyRUwD+v z?Rn%Jmq;q4gnUDhS4n1_07wcru0y39a&vr+o7ZM&Zp)#iMoL9(H6#us9Xku$U98y6 zD|f40|8E798V_eU%n8iA3f@*{EY?+mrRS09$eFdVrBwKQb z!q{#OYYoct6@2B<5FU+4S&YkzWx`6tJt`KF5iqERbnGkg+B?TsU05Ys^sT{_(nNto zMv8PPMembIcLxvkvE{?#m;D7CgHE-%;EHL%mh)Yn3*i!h0Fl)%mJ@4#y`k;|nw zK6X+ig#?;nDR18u+Y4+N?jhr+a9zjpHmgvN*xZ&FM1|6tM7XX?K9}aVg@Cu;A7grE zk@mKNol-Lg=J=*SS6hmgpC4d&e;;F)C-~sA%QR=xWc?Is9m(QSg%?JKdG+{So73dB z8aTow>$vy}Axy2|1djch8dvHdwnq)i9`&U}@gF+@n6f0ybnGc~a zpG(jhbQ}KzH(?#rLTcqYe%iHIRII318rG%~hbTx~WZY$ArN#*&!bn;dl@}`1SL@uf zzQG`jnC79n8Zdorj)@;{)6$-|SZslEL=;MzdIZb!zmk~=q+ z*ww!y>De`y9fa!`A=0#TXE`)7$hI9@C^Th~NtT*MT_R&ezTKnu@x+3=pV-dP=Y}c7 znv5rim9jB+XDbXH+`A4Xm56MF3~R}7jJ!So3_SEx+}l^+&3B*q$C#iJp%sZuFJ1T+ zr4@e8vwCd&?+w0n3z}gIDh( + new Protocol.SetDevicePowerRequestEntity( + Protocol.SetDevicePowerRequestEntity.kPowerStatePowerOn + ) + ); + } + + public async deviceStandByMode() { + return await this.doRpc( + new Protocol.SetDevicePowerRequestEntity( + Protocol.SetDevicePowerRequestEntity.kPowerStateStandBy + ) + ); + } + public setEdgeBlendingPoint(point: EdgeBlendingPoint) { this.ws?.send( JSON.stringify(new Protocol.SetEdgeBlendingPointRequestEntity(point)) diff --git a/src/entities/ExternalControlTableEntity.ts b/src/entities/ExternalControlTableEntity.ts new file mode 100644 index 0000000..a31c149 --- /dev/null +++ b/src/entities/ExternalControlTableEntity.ts @@ -0,0 +1,8 @@ +import BaseEntity from "./BaseEntity"; + +export class ExternalControlTableEntity extends BaseEntity { + name = ""; + command = ""; + icon = ""; + number = 0; +} diff --git a/src/entities/SerialPortConfigEntity.ts b/src/entities/SerialPortConfigEntity.ts new file mode 100644 index 0000000..650170e --- /dev/null +++ b/src/entities/SerialPortConfigEntity.ts @@ -0,0 +1,106 @@ +export enum ESerialPortParity { + None = 0, + Odd, + Even, +} + +export const kSerialPortParityMap = new Map([ + [ESerialPortParity.None, "ESerialPortParity.None"], + [ESerialPortParity.Odd, "ESerialPortParity.Odd"], + [ESerialPortParity.Even, "ESerialPortParity.Even"], +]); + +export class ESerialPortParityHelper { + toString(e: ESerialPortParity) { + if (kSerialPortParityMap.has(e)) { + return kSerialPortParityMap.get(e); + } + return "ESerialPortParity.None"; + } + + fromString(str: string) { + let ret = ESerialPortParity.None; + for (const item of kSerialPortParityMap.entries()) { + if (item && item[1] == str) { + ret = item[0]; + break; + } + } + return ret; + } +} + +export enum ESerialPortStopBits { + One = 0, + OnePointFive, + Two, +} + +export const kSerialPortStopBitsMap = new Map([ + [ESerialPortStopBits.One, "ESerialPortStopBits.One"], + [ESerialPortStopBits.OnePointFive, "ESerialPortStopBits.OnePointFive"], + [ESerialPortStopBits.Two, "ESerialPortStopBits.Two"], +]); + +export class ESerialPortStopBitsHelper { + toString(e: ESerialPortStopBits) { + if (kSerialPortStopBitsMap.has(e)) { + return kSerialPortStopBitsMap.get(e); + } + return "ESerialPortStopBits.One"; + } + + fromString(str: string) { + let ret = ESerialPortStopBits.One; + for (const item of kSerialPortStopBitsMap.entries()) { + if (item && item[1] == str) { + ret = item[0]; + break; + } + } + return ret; + } +} + +export enum ESerialPortFlowControl { + None = 0, + Software, + Hardware, +} + +export const kSerialPortFlowControlMap = new Map< + ESerialPortFlowControl, + string +>([ + [ESerialPortFlowControl.None, "ESerialPortFlowControl.None"], + [ESerialPortFlowControl.Software, "ESerialPortFlowControl.Software"], + [ESerialPortFlowControl.Hardware, "ESerialPortFlowControl.Hardware"], +]); + +export class ESerialPortFlowControlHelper { + toString(e: ESerialPortFlowControl) { + if (kSerialPortFlowControlMap.has(e)) { + return kSerialPortFlowControlMap.get(e); + } + return "ESerialPortStopBits.One"; + } + + fromString(str: string) { + let ret = ESerialPortFlowControl.None; + for (const item of kSerialPortFlowControlMap.entries()) { + if (item && item[1] == str) { + ret = item[0]; + break; + } + } + return ret; + } +} + +export class SerialPortConfigEntity { + baud_rate = 9600; + character_size = 8; + parity: ESerialPortParity = ESerialPortParity.None; + stop_bits: ESerialPortStopBits = ESerialPortStopBits.One; + flow_control: ESerialPortFlowControl = ESerialPortFlowControl.None; +} diff --git a/src/entities/WSProtocol.ts b/src/entities/WSProtocol.ts index daf7df9..b939e75 100644 --- a/src/entities/WSProtocol.ts +++ b/src/entities/WSProtocol.ts @@ -6,6 +6,8 @@ import { PlanEntity } from "./PlanEntity"; import SubtitleEntity from "./SubtitleEntity"; import { PollingEntity, PollingGroupEntity } from "./PollingEntity"; import { EdgeBlendingPoint } from "./EdgeBlendingEntities"; +import { ExternalControlTableEntity } from "./ExternalControlTableEntity"; +import { SerialPortConfigEntity } from "./SerialPortConfigEntity"; export namespace Protocol { export class Commands { @@ -354,6 +356,29 @@ export namespace Protocol { return Commands.PROTOCOL_PREFIX + "RpcFileOperator"; } + public static get kRpcGetExternalControlDatas() { + return Commands.PROTOCOL_PREFIX + "RpcGetExternalControlDatas"; + } + + public static get kRpcDeleteExternalControlData() { + return Commands.PROTOCOL_PREFIX + "RpcDeleteExternalControlData"; + } + public static get kRpcEditExternalControlData() { + return Commands.PROTOCOL_PREFIX + "RpcEditExternalControlData"; + } + public static get kRpcAddExternalControlData() { + return Commands.PROTOCOL_PREFIX + "RpcAddExternalControlData"; + } + public static get kCallExternalControlData() { + return Commands.PROTOCOL_PREFIX + "CallExternalControlData"; + } + public static get kRpcGetExternalControlSerialPortConfig() { + return Commands.PROTOCOL_PREFIX + "RpcGetExternalControlSerialPortConfig"; + } + public static get kRpcSetExternalControlSerialPortConfig() { + return Commands.PROTOCOL_PREFIX + "RpcSetExternalControlSerialPortConfig"; + } + static _all_commands = new Set([ Commands.kUnKnowCommand, Commands.kSearchDevice, @@ -441,6 +466,13 @@ export namespace Protocol { Commands.kSetEdgeBlendingPoint, Commands.kRpcSetDevicePowerMode, Commands.kRpcFileOperator, + Commands.kRpcGetExternalControlDatas, + Commands.kRpcDeleteExternalControlData, + Commands.kRpcEditExternalControlData, + Commands.kRpcAddExternalControlData, + Commands.kCallExternalControlData, + Commands.kRpcGetExternalControlSerialPortConfig, + Commands.kRpcSetExternalControlSerialPortConfig, ]); public static get AllCommands() { @@ -2171,4 +2203,196 @@ export namespace Protocol { this.command = Commands.kRpcFileOperator; } } + + export class SetDevicePowerRequestEntity extends PacketEntity { + power_state: string; + + static kPowerStatePowerOn = "POWER_ON"; + static kPowerStatePowerOff = "POWER_OFF"; + static kPowerStateStandBy = "STAND_BY"; + constructor(power_state: string, rpcid?: number) { + super(); + this.rpc_id = rpcid ?? 0; + this.command = Commands.kRpcSetDevicePowerMode; + this.power_state = power_state; + } + } + + export class SetDevicePowerResponseEntity extends PacketEntity { + success = true; + + constructor() { + super(); + this.command = Commands.kRpcSetDevicePowerMode; + } + } + + export class RpcGetExternalControlDatasRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcGetExternalControlDatas; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + timestamp = 0; + } + + export class RpcGetExternalControlDatasResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + + datas: ExternalControlTableEntity[] = []; + } + + export class RpcDeleteExternalControlDataRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcDeleteExternalControlData; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + uuid = ""; + } + + export class RpcDeleteExternalControlDataResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + RpcDeleteExternalControlDataResponseEntity() {} + + success = false; + } + + export class ExternalControlDataDeleteNotifyEntity extends PacketEntity { + constructor() { + super(); + super.command = Commands.kRpcDeleteExternalControlData; + super.flag = PacketEntity.FLAG_NOTIFY; + super.rpc_id = 0; + } + + uuid = ""; + } + + export class RpcEditExternalControlDataRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcEditExternalControlData; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + entity: ExternalControlTableEntity = new ExternalControlTableEntity(); + } + + export class RpcEditExternalControlDataResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + RpcEditExternalControlDataResponseEntity() {} + + success = false; + } + + export class ExternalControlDataEditNotifyEntity extends PacketEntity { + constructor() { + super(); + super.command = Commands.kRpcDeleteExternalControlData; + super.flag = PacketEntity.FLAG_NOTIFY; + super.rpc_id = 0; + } + + entity = new ExternalControlTableEntity(); + } + + export class RpcAddExternalControlDataRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcAddExternalControlData; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + entity = new ExternalControlTableEntity(); + } + + export class RpcAddExternalControlDataResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + RpcAddExternalControlDataResponseEntity() {} + + success = false; + } + + export class ExternalControlDataAddNotifyEntity extends PacketEntity { + constructor() { + super(); + super.command = Commands.kRpcDeleteExternalControlData; + super.flag = PacketEntity.FLAG_NOTIFY; + super.rpc_id = 0; + } + + entity = new ExternalControlTableEntity(); + } + + export class CallExternalControlDataRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kCallExternalControlData; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + uuid = ""; + } + + export class RpcGetExternalControlSerialPortConfigRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcGetExternalControlSerialPortConfig; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + timestamp = 0; + } + + export class RpcGetExternalControlSerialPortConfigResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + RpcGetExternalControlSerialPortConfigResponseEntity() {} + + config = new SerialPortConfigEntity(); + } + + export class RpcSetExternalControlSerialPortConfigRequestEntity extends PacketEntity { + constructor(rpc_id = 0) { + super(); + super.command = Commands.kRpcSetExternalControlSerialPortConfig; + super.flag = PacketEntity.FLAG_REQUEST; + super.rpc_id = rpc_id; + } + + config = new SerialPortConfigEntity(); + } + + export class RpcSetExternalControlSerialPortConfigResponseEntity extends PacketEntity { + constructor() { + super(); + super.flag = PacketEntity.FLAG_RESPONSE; + } + RpcSetExternalControlSerialPortConfigResponseEntity() {} + + success = false; + } } diff --git a/src/i18n/zh-CN/index.ts b/src/i18n/zh-CN/index.ts index 43de30b..d9a8052 100644 --- a/src/i18n/zh-CN/index.ts +++ b/src/i18n/zh-CN/index.ts @@ -437,4 +437,7 @@ export default { "file count": "文件数量", "directoriy count": "文件夹数量", "free space": "剩余空间", + "center contorl": "中控", + "power on": "开机", + "power off": "关机", }; diff --git a/src/pages/TopToolBar.vue b/src/pages/TopToolBar.vue index 9709794..0a16725 100644 --- a/src/pages/TopToolBar.vue +++ b/src/pages/TopToolBar.vue @@ -151,6 +151,36 @@ @click="stopPlan" /> + + + + + + `, }); }, + async powerOff() { + let success = false; + try { + const response = await GlobalData.getInstance() + .getCurrentClient() + ?.deviceStandByMode(); + if (response) { + success = response?.success ?? false; + } + } catch {} + }, + async powerOn() { + let success = false; + try { + const response = await GlobalData.getInstance() + .getCurrentClient() + ?.wakeUpDevice(); + if (response) { + success = response?.success ?? false; + } + } catch {} + }, }; }, });