From 9cc3fe6cedae612a56ecbef341287d28ee616144 Mon Sep 17 00:00:00 2001 From: "DESKTOP-1PDT1EL\\10564" <1056470187@qq.com> Date: Sat, 19 Sep 2026 11:30:01 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90paint2.02=E3=80=91app=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E6=9C=89=E6=95=B0=E6=8D=AE=E8=87=AA=E5=8A=A8=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E3=80=8250=E6=9D=A1=E9=94=99=E8=AF=AF=E5=88=A025?= =?UTF-8?q?=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Paint_UDPV2_02/.gitignore | 1 + .../Core/FSM/Src/fsm_state_control.c | 5 +- .../Debug/Core/FSM/Src/fsm_state_control.o | Bin 2232748 -> 2232748 bytes .../Debug/Core/FSM/Src/fsm_state_control.su | 26 ++-- Paint_UDPV2_02/Debug/Paint_UDPV2_02.bin | Bin 187208 -> 187208 bytes Paint_UDPV2_02/Debug/Paint_UDPV2_02.elf | Bin 3470172 -> 3470172 bytes Paint_UDPV2_02/Debug/Paint_UDPV2_02.list | 10 +- Paint_UDPV2_02/Debug/Paint_UDPV2_02.map | 124 +++++++++--------- .../8.2/executionHistory/executionHistory.bin | Bin 7047240 -> 7047240 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .../.gradle/8.2/fileHashes/fileHashes.bin | Bin 1316725 -> 1316825 bytes .../.gradle/8.2/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.2/fileHashes/resourceHashesCache.bin | Bin 68003 -> 68241 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .../buildOutputCleanup/outputFiles.bin | Bin 597263 -> 597317 bytes PaintingappV2.02/.gradle/file-system.probe | Bin 8 -> 8 bytes PaintingappV2.02/.idea/vcs.xml | 1 + .../paintingappv2_02/MainActivity.java | 34 ++++- .../services/MyDataHelper.java | 4 +- .../services/ReceiivedIVHandler.java | 7 +- .../app/src/main/res/layout/activity_main.xml | 2 +- .../main/res/layout/dialog_custom_warning.xml | 2 +- 版本记录.docx | Bin 14702 -> 14934 bytes 23 files changed, 121 insertions(+), 95 deletions(-) create mode 100644 Paint_UDPV2_02/.gitignore diff --git a/Paint_UDPV2_02/.gitignore b/Paint_UDPV2_02/.gitignore new file mode 100644 index 0000000..3df573f --- /dev/null +++ b/Paint_UDPV2_02/.gitignore @@ -0,0 +1 @@ +/Debug/ diff --git a/Paint_UDPV2_02/Core/FSM/Src/fsm_state_control.c b/Paint_UDPV2_02/Core/FSM/Src/fsm_state_control.c index f32f395..1724c22 100644 --- a/Paint_UDPV2_02/Core/FSM/Src/fsm_state_control.c +++ b/Paint_UDPV2_02/Core/FSM/Src/fsm_state_control.c @@ -39,8 +39,11 @@ int CH13_S2_Value ; int32_t speed_selection=0; //旋钮速度0-30 int paintOffCount=0; //5° 计数 超过1s 关枪 uint8_t angle_protect_lock=0; //作业时角度偏差过5°,停车标记位 + + int32_t power_on_lock = 0; /*上电锁*/ uint8_t error = 99; + int32_t serial_udp_disconnect_count=0;//串口网口断联一段时间后(15s)变为手动固定速度 @@ -428,7 +431,7 @@ void IV_control() IV.Left_Motor_Err = GV.LeftMotor.Motor_Fault; IV.Right_Motor_Err = GV.RightMotor.Motor_Fault; IV.TimeStamp = SystemTimeMiliCount; - IV.STM_Version = 201; + IV.STM_Version = 202; } /* 测试喷枪控制* */ void PaintGunControl() diff --git a/Paint_UDPV2_02/Debug/Core/FSM/Src/fsm_state_control.o b/Paint_UDPV2_02/Debug/Core/FSM/Src/fsm_state_control.o index b5eacdeb85d3e2a167ac51b55f34c574f0c5fdce..991503312e0ea4f8892f82855e5cfc94e4bc9e5d 100644 GIT binary patch delta 2286 zcmYL}du&ui7{zCHdRt1nWdWD+*rna2wGb)bgMdh_6;wnU1Oh(7CW2H9u|W`GVpuC6 zLH?);vN;kh#s~<33Z~Q|x<-kO2-JuH0?HOz3KYt=<v2_M`&~)P9hv&MQpz&?r@Xr_D5djLKmMN_$m^x_=&EOi zYF&0nC$E+={*BZu{A|d8tzM<8b+VwP6j5SgveKI!bks(^{q>g8>m4-TMuR_G+F$AU z+WL3CpKR>+gtgL-I+auGM||N{YUr|?eU*NqOs7b>Yu!@i|9eh`(gU5s@pj>F{}l$D zHl=RJ+qDCf)=u4H_A|2fRI$NUyJd%DXPoY*^eKDQEKwt!x~k17O7FAlezD1*tX0dC z*oTdNa>;75_Ke^LJg{nB_L_OwnsU|5%QnXk>Id*}i}C5&n%OO8hSvMA{jzyUpF&dH zjMA-mFmA@UR=7|SH+lLKl*i52I*N&{v?jE)nuU5jX1AHg^=52rGjnt`I@`xNJ)>inb zp;Q)?U9+|#F#0k521LJij!u5e^ zdJXEtZoq%q9+lFp*uzSVf=&wN;N0mzo=$`N4AUnOqFJv^Q0fCTbOv&8>%+)DOFM!v&1#>iR37@C z2@J#avw`7k)!)Q)9ZJRSAS#v(_c_*XXmP0-IFiOzSD)jA=TS+l4HA+TUUsR6u(*lM zEIZHiO;nsGUQ0a5S)ca;@nIBPAXagg@}Q`Z)zyMMhzWj;c(GGGtC{#D!p(d{2kOMK z;J-+F8KpF<`zQpt|gv3svQfvegVg)E}p|znx>{GPi~Klk9l~P!P$#wt{#IIll!`r#s8|NvZM5YGiT#L5vGkf51inp1ZS8qM*Ezv{R1)iXNQh;jxPwJ+Z8d5D=61=U>0nVg;>4^i z=w#Z+^htbkPTor=)8U8_n-gCd6gCF##jG2I*Ac$K+N5np`EY+Sm(d|O8~&TbONfKA z_8dfR5^q3M@MdD3o~y)TyNEjx>f&<`p^|1@*ltvTv-aFuOmk3ti|GVZ(5$i@(zAW? zyxmMADCj2MK|BIqv`Djpk0K`c60rx!QSs>qwVWI))0?F$PgD3?{#+Nm|zPDV(mq764SFk$X43lo7yC%U5E=# zjT%*iBKgpiSj1CNZV@jb_Bh`VE17sD@{@@-I#_P+7Qx$5N32ufPhtA(exn9CXDE`w zv;VwYOzU8jC(eo#5YzbDb4FkxqOKrRn^U7g4b{;C9nKM~G$> z9yR=++h4__?%;5}013en;!8cZI)k_j6&b{B$BgQ74!pMyXKqG8AI_D7a+-Dggxo0m XzF8ioKID6teuuD(A~jn)!4&-u2{ZIG delta 2258 zcmYk6eN0tl9LJyMJ{(@XcvHa=E^raWQnEj^nF=!-%~s55GpospRNQJ*H0+P^>d=w3 zg<3-2*18od%hc;Cv}@Mg)M?tw-E^ht^s15DL_@6mcn5^`q=Erli zUUf(()=3-xCTTW)oR#@yhSJ~ZL{T*?s`$)ArJEe}r>(O0owk%-@2DlV8neD;q|z1I z`gguPw)T4bTIm^1=Nx;9Cbv>K%lq$AdiE-vB<-&EYLxfnqI9J*oW^N(<1cp_bDV8T zU+x~{ ziJ1pnLmHJaQ>YuUE@rmt-6-xPTF}vHUexQcu*=NWP57wGEYjcMdY74_53ZfnZCD8` zi6-n5PFqLNO$ry;TWYdZ(nhCyw}5YTnp1j zQP#rrF$4t7h!N)f5`|TleB-h799y=d{v1ahE>Y?RY7_GdV4bJ_4MpcU>A zHx~OZ`X=bN5u@g+#cfP)G4-JK5(n*U!u>bX6DSv)L{KmRaluTKwG*8P2tGnga1g~EL>KA>3lJ4} zP!uCJz%Td#5kUanPGSVA1alA;xZ&<1-bA?|jG$mG;)Jz+rQs>rH(%4uy`4p%o9TUs z5!O?+MlD0F=1DB=;a!GN-$VVvYNP6)2YK^WFLfJ=dO2t-{DKrj1SRlZA-EO65W<20 z+*gS#lneGED5yZ3uyVdM>S^bAmiKYi*AeKWewTVGn!34I#x?4_D85GBLj5SdZIyEo zU5F^P{tHFdnO^zI@YKFN%XHIqrUntwxtk4NjHVXq(the{RP|GDr1n6k^EO*We-8Hm z=juZ_Vg35GQQ2tfa1->tw2i~b)RU!8|R?ys1p2)Fky|~A&<#Eu_;45 zv6UzvVtNii!kV(vsAIRkx?7wg6=k=m7kzKk66YWfh~9&k=*o~$4d_Y8FKAqvU#JHg z>+|R8)s4~oxmNEkqgLAy7HDQQ@N4SvyN#NT>I-H#ZxPDZiC^s%tv@79rC zZeXXyv>H*-wbY|=7?vk*w3o=6>Z*3C$zK91s44w{X6frY5xWfY~c zcjaN3!hZWUrLlJ%BBCSIn+ QOn1RAR}G;}p8O>J50oPMNB{r; diff --git a/Paint_UDPV2_02/Debug/Core/FSM/Src/fsm_state_control.su b/Paint_UDPV2_02/Debug/Core/FSM/Src/fsm_state_control.su index b98247e..ec3a3b8 100644 --- a/Paint_UDPV2_02/Debug/Core/FSM/Src/fsm_state_control.su +++ b/Paint_UDPV2_02/Debug/Core/FSM/Src/fsm_state_control.su @@ -1,13 +1,13 @@ -../Core/FSM/Src/fsm_state_control.c:47:6:Fsm_Init 8 static -../Core/FSM/Src/fsm_state_control.c:66:6:GF_Dispatch 8 static -../Core/FSM/Src/fsm_state_control.c:183:6:MoveControl 8 static -../Core/FSM/Src/fsm_state_control.c:217:9:MotorErrorDetect 4 static -../Core/FSM/Src/fsm_state_control.c:235:6:paintrobot_forwards 8 static -../Core/FSM/Src/fsm_state_control.c:254:6:paintrobot_backwards 8 static -../Core/FSM/Src/fsm_state_control.c:277:6:paint_joysticker_manual_control 16 static -../Core/FSM/Src/fsm_state_control.c:315:6:serial_udp_disconnect_control 16 static -../Core/FSM/Src/fsm_state_control.c:353:5:Move_Halt_AngleError 8 static -../Core/FSM/Src/fsm_state_control.c:399:6:PV_Data_Reading 12 static -../Core/FSM/Src/fsm_state_control.c:417:6:IV_control 16 static -../Core/FSM/Src/fsm_state_control.c:434:6:PaintGunControl 8 static -../Core/FSM/Src/fsm_state_control.c:456:6:AbnormalDetect 8 static +../Core/FSM/Src/fsm_state_control.c:50:6:Fsm_Init 8 static +../Core/FSM/Src/fsm_state_control.c:69:6:GF_Dispatch 8 static +../Core/FSM/Src/fsm_state_control.c:186:6:MoveControl 8 static +../Core/FSM/Src/fsm_state_control.c:220:9:MotorErrorDetect 4 static +../Core/FSM/Src/fsm_state_control.c:238:6:paintrobot_forwards 8 static +../Core/FSM/Src/fsm_state_control.c:257:6:paintrobot_backwards 8 static +../Core/FSM/Src/fsm_state_control.c:280:6:paint_joysticker_manual_control 16 static +../Core/FSM/Src/fsm_state_control.c:318:6:serial_udp_disconnect_control 16 static +../Core/FSM/Src/fsm_state_control.c:356:5:Move_Halt_AngleError 8 static +../Core/FSM/Src/fsm_state_control.c:402:6:PV_Data_Reading 12 static +../Core/FSM/Src/fsm_state_control.c:420:6:IV_control 16 static +../Core/FSM/Src/fsm_state_control.c:437:6:PaintGunControl 8 static +../Core/FSM/Src/fsm_state_control.c:459:6:AbnormalDetect 8 static diff --git a/Paint_UDPV2_02/Debug/Paint_UDPV2_02.bin b/Paint_UDPV2_02/Debug/Paint_UDPV2_02.bin index e2104ad3120342dfcd15b7fb2af22e1472917fb8..2cfd435875d0d767ac0eb00cad72d1c91a708486 100644 GIT binary patch delta 24 icmV+z0O$Y6whPF%3$XT|0m_5-pNIFK0k`*`0#Q4y)(tfP delta 24 icmV+z0O$Y6whPF%3$XT|0m*~+pNIFK0k`*`0#Q4y$PF|A diff --git a/Paint_UDPV2_02/Debug/Paint_UDPV2_02.elf b/Paint_UDPV2_02/Debug/Paint_UDPV2_02.elf index 7fefeb5f11bbacc62cb38c04eaa3e60087a814cf..8645695d7bbad2a47240a9bdf4e91fdef2f3b3d0 100644 GIT binary patch delta 1129 zcmX|=e@L8l9LJycb9&dr2dP}>UZ4rU|zM;ehq10y2)Lo)iu zBI5q&kFgbfh8tat!ELS*hVreE+ZeOcbKzpcOS)3YJo_NYN)skG2o z^hv=yW6_ND(=_SyRR`!Dhx-w)PJUqr8emyCU7f$c>mj&xRNcIy`p{&Yh5JIn4%{xN zEr*Rd0e9hZJ8-n1sxFwsqi{^Udg`kMU32a{^?tZBr|m$j(BjLWWz~LaqFa06H{tg2 zZmZ_5DY+T$xl?vvUmZd zce@`qY~n7t`)IBgOl7FTs8;t~;lQ@pHgwaZHpgeLIm9J?640~Pie6dO2ftI#mEc>6 zkEjFameh!f0J1)!qC7=^P**T1{*-FMoJ3M8ghSGvVn|4inbVvMn7iL(+MIrt^%V2o zl;|ks4e1%Bd|S(?+61i1z?e!hqdiUglJuli7_Ukq&1xyhq*W*S<-j=Q4e1usX^p=YFnAJO}+OeWDlj@j_q;yVkmKhnC zV#)t>W{Q_MrJH`CMWgg&*`i0*vuX{y^xCg#+J}2OGfRsl-SNAM+Gv*KAMEtBMCUo= zA?cmx0*-`pEHNluIn{wmnaFXd4U*4s$tv+LQ1(mb0=vz~l?9c1y^WTn)511F@T%zGARXBaf3^q=7V&-K2@^ cA$v(Pc|ym^TVk__%kkxw9T?U_%PmR#4}&Cnx&QzG delta 1128 zcmX|YPcCQ;)rC{F8a0=m zD4IPQ%+y(!7MZ+e5cMa>Jc7{oKk1GZ(lk1`F@Fx>Q8F8#dJ%#;tSW}cd?%_qel4m^ z`;{6XbKytb@nKQbol}MHlcD-GLSHND`ZL4OZ;|=?N!<}Bju>)kn)@4--PKQam98J} z)#{(9mepjQ`9XJd6ceYOC%V_yRCylfdE`AaKSJ8>;t0>Ms(fTNJ~x{ORrgHs>ZgM^ zZ9VUb%9CaX%=L9sQ>9dw`6XjtT^;MWrAmE~2NMP`fgL#HgNf2ZE3)&l@RyV1$fW3` z&p19Q+DYTJN#V!Ke?wfQyKIjOAI))lTzF_7cgK<9<^lDZ;}I3R&sp_K^I9BrpRhjx znc}_#WLR=SY#{oFN2Wv!72QeLgWQ)CUJ7wEiEcMIofJJZ%$+I76!)Y=ge;j)2_||d zBR7Rtr=xOY8kMxn)3-#F5;A;Sq>1XK|Bh(4p{oC$=%!_vz9$BBI?X*9?2_e?3|jst z(-{P5Q2Ks@r55g+!H6$-ZAPq8lU%(ovNrlxre|R(FGF*}uTv|>{=lT2?4QSy`?!A| z2b8ckhZdJOoD(6c;prTfvT;6#BWu~d06EM(3z(MWs|zAWS7hu@l+#x-`%p-t4(7i^ zm_A_pW9+}k*~d7&!2U&ydYf~L*dWN^JW5;~%VX5%oL8S?+`fdml1OYxfHF`HoS*`@ zKqYuV#+F_jtaJOw&|8DSpivPtXqRqjLxV1e!q$cpYp5KCm6Mf*s%u X8K`Uv%+gUlUTE7w: -uint8_t error = 99; + int32_t serial_udp_disconnect_count=0;//串口网口断联一段时间后(15s)变为手动固定速度 @@ -24417,9 +24417,9 @@ void IV_control() 8029fec: 4615 mov r5, r2 8029fee: 4b0a ldr r3, [pc, #40] ; (802a018 ) 8029ff0: e9c3 4508 strd r4, r5, [r3, #32] - IV.STM_Version = 201; + IV.STM_Version = 202; 8029ff4: 4b08 ldr r3, [pc, #32] ; (802a018 ) - 8029ff6: 22c9 movs r2, #201 ; 0xc9 + 8029ff6: 22ca movs r2, #202 ; 0xca 8029ff8: 62da str r2, [r3, #44] ; 0x2c } 8029ffa: bf00 nop diff --git a/Paint_UDPV2_02/Debug/Paint_UDPV2_02.map b/Paint_UDPV2_02/Debug/Paint_UDPV2_02.map index 73ba9f8..f0db9d6 100644 --- a/Paint_UDPV2_02/Debug/Paint_UDPV2_02.map +++ b/Paint_UDPV2_02/Debug/Paint_UDPV2_02.map @@ -42654,7 +42654,7 @@ LOAD d:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext LOAD d:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m+dp/hard\libm.a LOAD d:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.10.3-2021.10.win32_1.0.0.202111181127/tools/bin/../lib/gcc/arm-none-eabi/10.3.1/thumb/v7e-m+dp/hard\libgcc.a -.debug_info 0x0000000000000000 0x5e586 +.debug_info 0x0000000000000000 0x5e587 .debug_info 0x0000000000000000 0x528 ./Core/BASE/Protobuf/PSource/bsp_CV.pb.o .debug_info 0x0000000000000528 0x3e5 ./Core/BASE/Protobuf/PSource/bsp_Cmd.pb.o .debug_info 0x000000000000090d 0x392 ./Core/BASE/Protobuf/PSource/bsp_Error.pb.o @@ -42696,67 +42696,67 @@ LOAD d:/st/stm32cubeide_1.10.1/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.ext .debug_info 0x0000000000018f69 0x169d ./Core/BASE/Src/MSP/msp_WH_LTE_7S0.o .debug_info 0x000000000001a606 0xae2 ./Core/FSM/Src/change_line_control.o .debug_info 0x000000000001b0e8 0x195 ./Core/FSM/Src/fsm_state.o - .debug_info 0x000000000001b27d 0xe3a ./Core/FSM/Src/fsm_state_control.o - .debug_info 0x000000000001c0b7 0x16bc ./Core/FSM/Src/motors.o - .debug_info 0x000000000001d773 0x28d ./Core/FSM/Src/motors_power_action.o - .debug_info 0x000000000001da00 0x273 ./Core/FSM/Src/paint_gun_action.o - .debug_info 0x000000000001dc73 0xe62 ./Core/FSM/Src/robot_move_actions.o - .debug_info 0x000000000001ead5 0x120e ./Core/Src/adc.o - .debug_info 0x000000000001fce3 0x867 ./Core/Src/dma.o - .debug_info 0x000000000002054a 0x15d4 ./Core/Src/fdcan.o - .debug_info 0x0000000000021b1e 0x6c5 ./Core/Src/gpio.o - .debug_info 0x00000000000221e3 0x13fa ./Core/Src/i2c.o - .debug_info 0x00000000000235dd 0x1fa ./Core/Src/iwdg.o - .debug_info 0x00000000000237d7 0x2f94 ./Core/Src/main.o - .debug_info 0x000000000002676b 0x1060 ./Core/Src/quadspi.o - .debug_info 0x00000000000277cb 0x4a4 ./Core/Src/stm32h7xx_hal_msp.o - .debug_info 0x0000000000027c6f 0x2886 ./Core/Src/stm32h7xx_it.o - .debug_info 0x000000000002a4f5 0x6ee ./Core/Src/syscalls.o - .debug_info 0x000000000002abe3 0x175 ./Core/Src/sysmem.o - .debug_info 0x000000000002ad58 0xd07 ./Core/Src/system_stm32h7xx.o - .debug_info 0x000000000002ba5f 0x1167 ./Core/Src/tim.o - .debug_info 0x000000000002cbc6 0x18e3 ./Core/Src/usart.o - .debug_info 0x000000000002e4a9 0x22 ./Core/Startup/startup_stm32h743vgtx.o - .debug_info 0x000000000002e4cb 0x648 ./Drivers/BSP/Components/lan8742/lan8742.o - .debug_info 0x000000000002eb13 0x15d7 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o - .debug_info 0x00000000000300ea 0x1f9c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o - .debug_info 0x0000000000032086 0x116d ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o - .debug_info 0x00000000000331f3 0xcd5 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o - .debug_info 0x0000000000033ec8 0x2b55 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o - .debug_info 0x0000000000036a1d 0x2dae ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o - .debug_info 0x00000000000397cb 0xd28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.o - .debug_info 0x000000000003a4f3 0x23b3 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o - .debug_info 0x000000000003c8a6 0xe39 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.o - .debug_info 0x000000000003d6df 0x21e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_iwdg.o - .debug_info 0x000000000003d8fd 0x109d ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.o - .debug_info 0x000000000003e99a 0x1392 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o - .debug_info 0x000000000003fd2c 0xf4a ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o - .debug_info 0x0000000000040c76 0x12b4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o - .debug_info 0x0000000000041f2a 0x2dd1 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o - .debug_info 0x0000000000044cfb 0x18f4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o - .debug_info 0x00000000000465ef 0x4c42 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o - .debug_info 0x000000000004b231 0x100b ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o - .debug_info 0x000000000004c23c 0x60e ./LWIP/App/lwip.o - .debug_info 0x000000000004c84a 0x2fba ./LWIP/Target/ethernetif.o - .debug_info 0x000000000004f804 0x3af ./Middlewares/Third_Party/LwIP/src/core/def.o - .debug_info 0x000000000004fbb3 0x665 ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o - .debug_info 0x0000000000050218 0xeb ./Middlewares/Third_Party/LwIP/src/core/init.o - .debug_info 0x0000000000050303 0x516 ./Middlewares/Third_Party/LwIP/src/core/ip.o - .debug_info 0x0000000000050819 0x590 ./Middlewares/Third_Party/LwIP/src/core/mem.o - .debug_info 0x0000000000050da9 0x636 ./Middlewares/Third_Party/LwIP/src/core/memp.o - .debug_info 0x00000000000513df 0xcde ./Middlewares/Third_Party/LwIP/src/core/netif.o - .debug_info 0x00000000000520bd 0x18bc ./Middlewares/Third_Party/LwIP/src/core/pbuf.o - .debug_info 0x0000000000053979 0x1ebf ./Middlewares/Third_Party/LwIP/src/core/tcp.o - .debug_info 0x0000000000055838 0x162a ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o - .debug_info 0x0000000000056e62 0x1a8c ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o - .debug_info 0x00000000000588ee 0xd03 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o - .debug_info 0x00000000000595f1 0xf53 ./Middlewares/Third_Party/LwIP/src/core/udp.o - .debug_info 0x000000000005a544 0xf08 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o - .debug_info 0x000000000005b44c 0x9c3 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o - .debug_info 0x000000000005be0f 0xa66 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o - .debug_info 0x000000000005c875 0x715 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o - .debug_info 0x000000000005cf8a 0xe7a ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o - .debug_info 0x000000000005de04 0x782 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o + .debug_info 0x000000000001b27d 0xe3b ./Core/FSM/Src/fsm_state_control.o + .debug_info 0x000000000001c0b8 0x16bc ./Core/FSM/Src/motors.o + .debug_info 0x000000000001d774 0x28d ./Core/FSM/Src/motors_power_action.o + .debug_info 0x000000000001da01 0x273 ./Core/FSM/Src/paint_gun_action.o + .debug_info 0x000000000001dc74 0xe62 ./Core/FSM/Src/robot_move_actions.o + .debug_info 0x000000000001ead6 0x120e ./Core/Src/adc.o + .debug_info 0x000000000001fce4 0x867 ./Core/Src/dma.o + .debug_info 0x000000000002054b 0x15d4 ./Core/Src/fdcan.o + .debug_info 0x0000000000021b1f 0x6c5 ./Core/Src/gpio.o + .debug_info 0x00000000000221e4 0x13fa ./Core/Src/i2c.o + .debug_info 0x00000000000235de 0x1fa ./Core/Src/iwdg.o + .debug_info 0x00000000000237d8 0x2f94 ./Core/Src/main.o + .debug_info 0x000000000002676c 0x1060 ./Core/Src/quadspi.o + .debug_info 0x00000000000277cc 0x4a4 ./Core/Src/stm32h7xx_hal_msp.o + .debug_info 0x0000000000027c70 0x2886 ./Core/Src/stm32h7xx_it.o + .debug_info 0x000000000002a4f6 0x6ee ./Core/Src/syscalls.o + .debug_info 0x000000000002abe4 0x175 ./Core/Src/sysmem.o + .debug_info 0x000000000002ad59 0xd07 ./Core/Src/system_stm32h7xx.o + .debug_info 0x000000000002ba60 0x1167 ./Core/Src/tim.o + .debug_info 0x000000000002cbc7 0x18e3 ./Core/Src/usart.o + .debug_info 0x000000000002e4aa 0x22 ./Core/Startup/startup_stm32h743vgtx.o + .debug_info 0x000000000002e4cc 0x648 ./Drivers/BSP/Components/lan8742/lan8742.o + .debug_info 0x000000000002eb14 0x15d7 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.o + .debug_info 0x00000000000300eb 0x1f9c ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.o + .debug_info 0x0000000000032087 0x116d ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.o + .debug_info 0x00000000000331f4 0xcd5 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.o + .debug_info 0x0000000000033ec9 0x2b55 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.o + .debug_info 0x0000000000036a1e 0x2dae ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.o + .debug_info 0x00000000000397cc 0xd28 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.o + .debug_info 0x000000000003a4f4 0x23b3 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.o + .debug_info 0x000000000003c8a7 0xe39 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.o + .debug_info 0x000000000003d6e0 0x21e ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_iwdg.o + .debug_info 0x000000000003d8fe 0x109d ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.o + .debug_info 0x000000000003e99b 0x1392 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.o + .debug_info 0x000000000003fd2d 0xf4a ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.o + .debug_info 0x0000000000040c77 0x12b4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.o + .debug_info 0x0000000000041f2b 0x2dd1 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.o + .debug_info 0x0000000000044cfc 0x18f4 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.o + .debug_info 0x00000000000465f0 0x4c42 ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.o + .debug_info 0x000000000004b232 0x100b ./Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.o + .debug_info 0x000000000004c23d 0x60e ./LWIP/App/lwip.o + .debug_info 0x000000000004c84b 0x2fba ./LWIP/Target/ethernetif.o + .debug_info 0x000000000004f805 0x3af ./Middlewares/Third_Party/LwIP/src/core/def.o + .debug_info 0x000000000004fbb4 0x665 ./Middlewares/Third_Party/LwIP/src/core/inet_chksum.o + .debug_info 0x0000000000050219 0xeb ./Middlewares/Third_Party/LwIP/src/core/init.o + .debug_info 0x0000000000050304 0x516 ./Middlewares/Third_Party/LwIP/src/core/ip.o + .debug_info 0x000000000005081a 0x590 ./Middlewares/Third_Party/LwIP/src/core/mem.o + .debug_info 0x0000000000050daa 0x636 ./Middlewares/Third_Party/LwIP/src/core/memp.o + .debug_info 0x00000000000513e0 0xcde ./Middlewares/Third_Party/LwIP/src/core/netif.o + .debug_info 0x00000000000520be 0x18bc ./Middlewares/Third_Party/LwIP/src/core/pbuf.o + .debug_info 0x000000000005397a 0x1ebf ./Middlewares/Third_Party/LwIP/src/core/tcp.o + .debug_info 0x0000000000055839 0x162a ./Middlewares/Third_Party/LwIP/src/core/tcp_in.o + .debug_info 0x0000000000056e63 0x1a8c ./Middlewares/Third_Party/LwIP/src/core/tcp_out.o + .debug_info 0x00000000000588ef 0xd03 ./Middlewares/Third_Party/LwIP/src/core/timeouts.o + .debug_info 0x00000000000595f2 0xf53 ./Middlewares/Third_Party/LwIP/src/core/udp.o + .debug_info 0x000000000005a545 0xf08 ./Middlewares/Third_Party/LwIP/src/core/ipv4/etharp.o + .debug_info 0x000000000005b44d 0x9c3 ./Middlewares/Third_Party/LwIP/src/core/ipv4/icmp.o + .debug_info 0x000000000005be10 0xa66 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4.o + .debug_info 0x000000000005c876 0x715 ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_addr.o + .debug_info 0x000000000005cf8b 0xe7a ./Middlewares/Third_Party/LwIP/src/core/ipv4/ip4_frag.o + .debug_info 0x000000000005de05 0x782 ./Middlewares/Third_Party/LwIP/src/netif/ethernet.o .debug_abbrev 0x0000000000000000 0xd17d .debug_abbrev 0x0000000000000000 0x126 ./Core/BASE/Protobuf/PSource/bsp_CV.pb.o diff --git a/PaintingappV2.02/.gradle/8.2/executionHistory/executionHistory.bin b/PaintingappV2.02/.gradle/8.2/executionHistory/executionHistory.bin index 9b3c327ddd501137e59301e99029d1d55357c074..c678a57aac4a7ca510288268bc1ad070fa86b0cd 100644 GIT binary patch delta 6115 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 delta 6846 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 diff --git a/PaintingappV2.02/.gradle/8.2/executionHistory/executionHistory.lock b/PaintingappV2.02/.gradle/8.2/executionHistory/executionHistory.lock index 6f260b0d6f6d174331e27087cc8ee51538bc0d52..8d7cea5805e93d3cb660c10ddbbc8a790d6a9756 100644 GIT binary patch literal 17 VcmZR+wqcp?&Fdj13}7I36aYSF1&{y$ literal 17 VcmZR+wqcp?&Fdj13}7JE1pq!Q1yuk5 diff --git a/PaintingappV2.02/.gradle/8.2/fileHashes/fileHashes.bin b/PaintingappV2.02/.gradle/8.2/fileHashes/fileHashes.bin index 8653b4f6e21fa65c458c4f36093ce2c8f73b1a46..575b96d5d88c62c571b22db64bf7ce4ab20d893d 100644 GIT binary patch delta 2904 zcmb_e2~ZPR8YbbABa-e85P}k51i4H&WKfZ7!ljZd2#N|b;-D)ij-cXz3aFqc%N2L! z7q6hASwQiK*o%~it0I>osDmiWAi8*svWkv~ILzxqt9EN=Yqx5t`bl@b?|uLAzSo_% z)#2SI!%r3Wa11rdo^%6~c9V zDD+V1qZmgPyfwITm@`1m-D9}K#zcJo+8Mizzhi|`$;w(oXJgXA$uNtXo77~8!U%;i z3Lc8_C``ztCjO=oq33ewyz?e?I6rwk_r;7_TP-b4nFfm-DY=Y^#0`mt<)^;?IJ&%d zL$lXXz0(v(hWPr^d9=oX+YyW){W|&9+K|+Uxr?Q9-o(c}I@FZ%z|?q=RgoFRKT;SR z$nZH}<7z;VHybg3j*bS)9)buXz6c~un81)!&YaJ%z^zA50C7!Nlkkglh3uz49O<%Z z%ZTy}-7-L@SI(RV{>_+3n7?vwz(p1BQO&$NH=SN=&SNUi?uS>+d{^+%#V3e!dMdY! zbUXKa)t!Iz`OlYEumTI2Orfx)(|{1>o$!A;M@uu#VONr$!3@gHI~keHW*E`{jTfQ7pq5? zuSYyO~Bc*wzM+y7Q-yJ`wo%kl9m}M<1lx&szV>n!A(lN0k;a3NyuYKFghz z=u_f>{yCzsp@RP#RtWgttk6VOl;Zw+!d)+le|*{BH&>d|to{&fF^kHt!E$g2;3NBz zgq@%&Zo=Xu{oEw-dXNuWT^4jWb3~-P40jP(xtW;7&NnWtuqjD&UnP6w%_wY}hln<_tVlL8Id@n=mCX}?uf&nZ>ckaULuXJ>bcXJ9SwY=$ z0~duSQ?aa+?s3+QXvlnx+Z&V0fO`5Hy)HvYd9O{tOLvT*WJC~?$)^Nmd!Qf_9qr>+ zGd>PAev})$?3&u{f8LcARL{0&h86(yTbdR8msaA}Rc2%J>ZWYr1Cdeq7LAC7@=!n^`$H2V-ekd3_fMU zPv6U;jtu%C!Z9T@W1aWP=htO5??+@T>I64OQAZBfR!mrXZ;isL-0?)@hINT7>P(~J zpWV`Idm>Wyz3#I5c6rO5_be)5c1j9v20Q}#4x{P0eZ>9rsF6+wl?)R>p*BI!dIoe* zw+-yAHz*6yz|U1MJ24Y(R4`lQTT+Q$kvZ=U_@5YE^6W1Q;!WGG@IQ4zF!`)ui?sm( zVU@@i2XqM97c!6rA$==dCY=^63BoMFw2E@6T7h1Y#VB2H6`f8#2H#XM>2#pD3X{SI zU0Ox%3STqngkz7mjO37TOWZR-?OJSU?#q*D!!9%e+BH>QrTuG+)y@pn4 zh38}GqGc?a0I#AE`b$>if|)hnG_^#j>dx-0O<>U#@T!s!3GWWgOD7MWZ=GlHpnkt$ z0%I>_7&@gYRMfLRpOO4G!#6^v?k5jxqCOQB449v;NO)^;m&@<>-HuIEHh$lK;(Q0I zoJgZ$x7gN*d+s?;hpzSA+mK5DsW8EpEy#Ho41 z`GBBHS)M0pzG^}R!?%JIXY_l?PeZ8Og*!@x(~|qw=auhwZuWS6Ya>f-ftXY1QPxsC zeaF}9?EYHV6(vqf-u;G6%)Ea&Ccv43To_k^35+yY!5l`OLw_sGR!?k+T-9#6`}ku2 zgpCD_?9w5~A3(FZ{UGvyTvlUsJf1JiE4QhpQKkG2)DIBUvlLzZ1M$Rq6@4Ciu6LTJ z&L7V6`=QZ`;-OT2R4VT7A0a@53J@RGCwS;3E`P^VpcO>MJ|-+&VT@}$9=;kN1jv%i nk65&xE^pG%FJs4BcS*uBNlPN$`q)~wyfI3FWBiIb*OFfWMY%V_ delta 1706 zcmY*Y3rrMO6y2Hq;O-*Kht*~Lp_ZsnaKTnFkqSWp8-ztoKcW?D)YjN4wW-BYthE6( zvbbsG)C%&8O#wj!>l95J2PnFBscTUdH0@s=Ds&q zk2;4MoQ?Z>7<03`C)eCO<<{H5ti4~BtireYoe}=R2tPx?Qs^lR6h;aYMF7PpIl^zA zR?hUvOTM(Mo-DVwSf&KZqo!KH7H;%dD6ABL6r(AED1zmU9xm^Jy#7Zn!pQm>kZI*4 zM0@xUOLdX&s7`$l(_;!jwukrFujbzH)`tZbu(y|fBHsAAU#DX#D6t+1=XnXMe&xon zzNzq?=NyPP3gajBUpw1v6q^z^_Pt<#6rTUhNd9q6I2AiCn?-E8pp;did=Zz1`Ioup z*gHtngF3P#h#I~KRmoEKdFDHdhLeKg|v~JX~^+%4)eh4n!89;Rxu*J_i|&* z1IsnefE`N$MR|D>AjBy&+1C#bUtx}JPdgm6tG&!}ENrA%7Op!5 z35$KCe!E*O4Xi>;E6rm&adJYYU`+{IyQ+6xUU_NXL3Ys(9rMz2M~V-s`Qvuif{!zb z*nEMrvEII?1N6u>2ZRI@W^g<@jQ6=$7Ri-)$NJ&&$gaVR6o6{m%FV@c8f6XIh@!{32T z>N^aT^tRkRtA4Ag+kzawUc~KK-p2ZWMpizj9J_xKit;&0PCvls8_+q2x1r^pu*OjB zVp0%xU%47CCJt@0*eGKKE#pzSlUg6TuQ+irFQID-E8)_8Az6V*xPFMAsdq68(Dq({ zgotw9MkpEiej!^)n1}y9qw+Jv%lrdjEQ5b5loVYG5+2fVPOMbXBCIT+G^d7MMzMlE zeS+NOdI`rhl!l9yN=IEf991-5dzC8SRFFbv;?g71&C}>58fwtcYlw=cl3qe`%wu7` zi5%)`QJzGkOD`%PsH;Pl0?&-VBXGOO%844aOFcSj)Gm!Bwdy+zv9v&$K~yI=4l@^0 z@kFDh#bWhBejIFdd$pd!5=ZRMo$orb;uKi??f zZ!L3GXHjB%!O8bT=qg&Z$y7Wc%W;grf%Aghto zqf1nUBdP)ugv3XJh-@PDE@K}Kjt!CQy%Wa=M0!rV_0_p8f23_axlB KUh$_G>i8c(R&-4O diff --git a/PaintingappV2.02/.gradle/8.2/fileHashes/fileHashes.lock b/PaintingappV2.02/.gradle/8.2/fileHashes/fileHashes.lock index edb6b6349ae20748e0e97fdf723b7bec75dccc31..1688d0ec8ae1ad783c5e6ee3158d5cccdc445056 100644 GIT binary patch literal 17 VcmZRsyYOVYT6n%V0~oAY4*)jA1xWw^ literal 17 VcmZRsyYOVYT6n%V0~oB#1pqdH1qJ{B diff --git a/PaintingappV2.02/.gradle/8.2/fileHashes/resourceHashesCache.bin b/PaintingappV2.02/.gradle/8.2/fileHashes/resourceHashesCache.bin index afa9ca77eac964ace89a6064cd985469f5915e03..aeb52fee720d77c4714a3fc8ae81f5581e0e025d 100644 GIT binary patch delta 408 zcmZ2HnPuWsmJKEnj1`+rB?4FkCO*ipdH!$qeg+U=IRUe@RsQf}{r#P{I7o ztg4xu{CxA4EN^`u0u|JroT~Rg;O-%TF-dDzMEg}`@kpQx!3vBv+u!ApgNy#zIe8PSD>`k$4x5tE&~G@8HOUHF-t^xZx+y;*gC)idq@70Vd|2}vLp1YrSY?X$j% z*fv{>a20KfZk)9QQw8tmz=Z-0W=;E|<@sOnZv2I*;x@O2TY2bjhwaucH)bEooPtnc z1+(VdPyQ)~f2jC~?oC~@dB$dOgc6vF#*>r3IbS*SW0$6&WungmqsbqegoRIAi?MC4 Q`d9uXa$SY>zgCbg02rHk{r~^~ delta 81 zcmV-X0IvU$l?0=c1h6z10d%u97*GVWog9e>vpywY36r)i*R!QB+6w|A@sridCFvw^&E0<#Lg=MJ+8&S(v@iQDo50wKAvAy^KxjqDa3N=G6z diff --git a/PaintingappV2.02/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/PaintingappV2.02/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 3c9bb0fbac96d6241f430e0096f35ac5b1622a0d..a342621a08168a0bc55dd9573f63ad411b1870db 100644 GIT binary patch literal 17 VcmZQJ44t_2YvtSd3}6s;4gfiz1>OJv literal 17 VcmZQJ44t_2YvtSd3}6rz3;;PL1!DjJ diff --git a/PaintingappV2.02/.gradle/buildOutputCleanup/outputFiles.bin b/PaintingappV2.02/.gradle/buildOutputCleanup/outputFiles.bin index 70cd80801bf67978975588eaa92f9dee3f5c6899..f0ec6bb284570e6baa13d7eb73290216e5f4e550 100644 GIT binary patch delta 159 zcmeC*rE+waO2Zb$IVy|>+vln<8cOr;s9}{qTKtaz1UO}lw;#1<^k!t7xLwnc@y7v1 zL~q+0C{RmH!Zi<9ZHDC5oPT$9;D+r8zPwtLGn3(RJe-5#@xc_Kgm x + \ No newline at end of file diff --git a/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/MainActivity.java b/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/MainActivity.java index 3ebeac9..8ba5a95 100644 --- a/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/MainActivity.java +++ b/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/MainActivity.java @@ -44,6 +44,8 @@ public class MainActivity extends AppCompatActivity { public static BspPV.PV_struct_define _toSendPV; + + private AlertDialog techWarningDialog; Timer timer = new Timer(); public MyDataHelper myDataHelper = new MyDataHelper(this); @@ -467,21 +469,41 @@ public class MainActivity extends AppCompatActivity { isAlarmDialogShowed = true; } } + else { + // 未超时 → 取消弹窗,恢复状态(只执行一次) + dismissTechWarningDialog(); // 关闭弹窗 + isAlarmDialogShowed = false; + + } } - // 科技蓝警告弹窗 + // 通讯失败开启弹窗 private void showTechWarningDialog() { + + // 防止重复弹 + if (techWarningDialog != null && techWarningDialog.isShowing()) { + return; + } View dialogView = getLayoutInflater().inflate(R.layout.dialog_custom_warning, null); - AlertDialog dialog = new AlertDialog.Builder(MainActivity.this) + techWarningDialog = new AlertDialog.Builder(MainActivity.this) .setView(dialogView) .setCancelable(false) .create(); - if (dialog.getWindow() != null) { - dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); + if (techWarningDialog.getWindow() != null) { + techWarningDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); + } + techWarningDialog.show(); + dialogView.findViewById(R.id.btn_confirm).setOnClickListener(v -> { + techWarningDialog.dismiss(); + } ); + } + //通讯恢复自动关闭弹窗 + private void dismissTechWarningDialog() { + if (techWarningDialog != null && techWarningDialog.isShowing()) { + techWarningDialog.dismiss(); } - dialog.show(); - dialogView.findViewById(R.id.btn_confirm).setOnClickListener(v -> dialog.dismiss()); + techWarningDialog = null; // 置空,避免内存泄漏/复用旧引用 } @Override protected void onStart() { diff --git a/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/services/MyDataHelper.java b/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/services/MyDataHelper.java index d6e17d0..10840c1 100644 --- a/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/services/MyDataHelper.java +++ b/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/services/MyDataHelper.java @@ -151,13 +151,13 @@ public class MyDataHelper extends SQLiteOpenHelper { cursor.close(); //数据超过 500 条,就删除最早的 200 条 - if (count > 100) { + if (count > 50) { sqliteDatabase.beginTransaction(); String deleteQuery = "DELETE FROM " + Error_TABLE_NAME + " WHERE " + Error_COLUMN_Iime_ID + " IN (SELECT " + Error_COLUMN_Iime_ID + " FROM " + Error_TABLE_NAME - + " ORDER BY " + Error_COLUMN_Iime_ID + " ASC LIMIT 50)"; + + " ORDER BY " + Error_COLUMN_Iime_ID + " ASC LIMIT 25)"; sqliteDatabase.execSQL(deleteQuery); sqliteDatabase.setTransactionSuccessful(); sqliteDatabase.endTransaction(); diff --git a/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/services/ReceiivedIVHandler.java b/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/services/ReceiivedIVHandler.java index 1131b5b..1501145 100644 --- a/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/services/ReceiivedIVHandler.java +++ b/PaintingappV2.02/app/src/main/java/com/example/paintingappv2_02/services/ReceiivedIVHandler.java @@ -22,8 +22,8 @@ public class ReceiivedIVHandler { // 心跳检测相关 public static long lastReceiveTime = System.currentTimeMillis(); // 最后一次收到数据的时间 public static final long TIME_OUT = 5000; // 超时时间:2秒没收到数据就算离线 - public static boolean isAlarmDialogShowed = false; // 防止弹窗重复弹出 + public static boolean isAlarmDialogShowed =false; public static void midToast(String str, int showTime, com.example.paintingappv2_02.MainActivity MainActivity) { Toast toast = Toast.makeText(MainActivity, str, showTime); toast.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0); //设置显示位置 @@ -52,8 +52,7 @@ public class ReceiivedIVHandler { try { - lastReceiveTime = System.currentTimeMillis(); - isAlarmDialogShowed = false; // 收到数据,重置弹窗标记 + lastReceiveTime = System.currentTimeMillis(); _toReceiveIV_Variable = BspIV.IV_struct_define.parseFrom(bytes);//单片机新数据到来 if (_toReceiveIV_Variable != null) { @@ -258,7 +257,7 @@ public class ReceiivedIVHandler { } sb.append(motorName) - .append(":") + .append(":0x") .append(errorCode); } } diff --git a/PaintingappV2.02/app/src/main/res/layout/activity_main.xml b/PaintingappV2.02/app/src/main/res/layout/activity_main.xml index 79780b7..38e4f8f 100644 --- a/PaintingappV2.02/app/src/main/res/layout/activity_main.xml +++ b/PaintingappV2.02/app/src/main/res/layout/activity_main.xml @@ -59,7 +59,7 @@ android:layout_height="match_parent" android:layout_weight="2" android:gravity="center" - android:text="2.01" + android:text="2.02" android:textColor="@color/navy_blue" android:textSize="20sp" android:textStyle="bold" /> diff --git a/PaintingappV2.02/app/src/main/res/layout/dialog_custom_warning.xml b/PaintingappV2.02/app/src/main/res/layout/dialog_custom_warning.xml index 26f2497..ca92dd0 100644 --- a/PaintingappV2.02/app/src/main/res/layout/dialog_custom_warning.xml +++ b/PaintingappV2.02/app/src/main/res/layout/dialog_custom_warning.xml @@ -39,7 +39,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" - android:text="设备受干扰或未通电,请断电后重启机器人" + android:text="设备受干扰或未通电,请等待一会!" android:textSize="15sp" android:textColor="#B0BEC5" android:gravity="center"/> diff --git a/版本记录.docx b/版本记录.docx index 4dc9889b1f9b45451fe295c7a4a9af7b393d7003..778fa404b5c94dd8afda87a20d5238b060aac8c3 100644 GIT binary patch delta 4517 zcmYjVRa6v=!lagtrMr=(JCXE22&}vN6 z1D@WmfVx!Gnqambx2_1C|?jF2Y`iFI8yNeuupk+{PQVC>Yh~BFKh|SS$W`FjQS4FW9K_Vz#nx zW!Kv>G(|)Ok%Hd)OHh%4HyKhF!Z#qoEncM+LL;s;G-tTnznf_sa&|nH9C-_yi07$k zeOEex)xRE2(g^lumDm02dmPG{y>901V?MxzII3YR)y3wmOMFegYGr?-HB~os&9X)V zLQ%3yWHPB&bbeQ+&4_r}u92?~saOd1)iAu~-AUs+VW%68^Uok+Wwckr!x{J294a<@ zISzLyf%U0fzqhTnRJ64iVO5lZl-f5?+-PwO30#E0-s4-Mvn+r0PcgHophI3N+5;*@ z&QoCu1{4;P(v_y))rONNf zRSpVcLE2`rMZ(7<7@j5Ab8#j!auMqDdc<9G9iqI#C>qcw%i)JCi%BW~R2xQ^903*IHG9k#l`)G_micnZCyOZD-VE{WJ~S3Ey*nW~FddzxaiH)f{ze9$=xbzhQIGfckKOHdMO5{O5!Nxn!S zNQ=)*XUbDz9kQbSCDsKBo2XY^E*uCfLtDXjk!A^}h@MjdYDC=M0H3yyHWw@GnqS`& z8Glg_`k-Z}Zz5H-txIz9(L0-XGADq9oI*e>C8r-}UTC3kGO$e3910bri7l?*x;B`M zpDR5TYbvu@O=Onk-4nMi`h~X6IOCvf`{3}ywCKKxAepFt#(3%+vZta9-puX60*%AS|eV7ETURFT0-Ov1-bhwuuJ4)My|vsf!BUy+z*>y%Q<;Q?m3lyidvoQR~nm#VgVDU3du30 zS5dfqv>Q*0T_^#Sr>tFx?;meD#&^#*H3U8RxK-?Wzv z_SCGJf8pq2Hf*M^5`9SOUh+%$mXlu z0Z+WQ=D9TMwg|kuxjty^Em;kG)qnCL8-w^BabU3#{0b!n(mSOEm26=WkvR6t+!8LW zBaYTIrT0=TU{MwzG{lu=8eTFF1;_~}MLx)JpG+IsYDwGC4Ah~K4SPqVP3qOc&8J-- z@uPfb1(206a0tEYlsn?=O%|rMVeK6pT4ve&G|89BL1{2&vB#jQxi7W}RO2J%#jmB# zuqgsxF_i5SclQqnnPj~p2h@Z_3zIV4;g^Z0c$@jbh8JCVzUyNF{PaEzYM!W^p~ z`;4AyAmlY(mf3L3&^ebWaQ(Nh>cZcbp(Di84Plt`u!z==VQC@0cx9+DVu$GEPrdO}2(J2QXElYgd{yrdtCu7K!>h zVm^9v>&GsfY6N)WF4M*)kO+Cx`l}5LOz7O2nLq$cwxu(YP`n61H3+tT{Q>6#&J& z1L6g?zv*O4JjW;5wG&uzJ^sw)SKjAbC(fsgI0V3XHC6rVsq{WJW}8yfEZ4Hl?+xPA z{CW8Fbu82EK>d68uxtwqIQCqZZly~Im0zL_o$}Q30y6+ELLh&NzJZuQ9wgfU3C=GY z=K>p1Bh(q{M zwuY~u$L(vOID)`Q7LPdVoylI)N$1XzWu42M{pHlYNovbl`Jxx-2{K(@+luv%-SRCF z&(?jl$e@wmAGu*2{hVG0eg46-y;+Oy2y<#WnDlY-{ap1ZQ?A9NwUT3A|D^J)?wT1LT@ z>Tzsna%yAq4&AL4-L2NoZ7(3QaQqwf5bg8X_dq-CTSg)DP*KlaO=3D_V8SSaeKTR_ zFH9oh4QI%P`p5EDLH;k3O6|=9A<0PEfGa*hB@D&G#v*$%X^$KvzaP19b{1~*3r-E_ z=wX*IZWgsI{j0JI?vXz0KdhFqq7-I4zFCh<*_}MEmtu=~uA4}E>OT0TG>uLa71!)L z^c2^eIfSyVZDFT&V4XFVKg^9nBLy3y9$>%X`hcBm6$G5Ndy8zwxo;waJgbKNv57hc zn9FIN7cxcoN6}@?rCMAY7aje(MK@ zrUVz`f^_494e$;d<#-n3-Jp3nK!c zFOHsuH#c($p~8yku~Quq6$zkeS#fg#&^2_!wmKKQDA4)%SE0VZ6-VLnT}CB`h18(ErbmVgJb zUPy4}A2a2x%#`E=fCu67xZh~#TF^r5c@O4u={cl8_FTux{ifHmHHWRlqFMWa+-K<( zYjR)sckV|nt9s!vP<&lFFA6hT(m2)-d`tUG&$BOXMs=i=!UXeiwzV{{ zAzmM)N5h!#RMJOxd%_)?EQ;|iXiYjTKm|0v+!(xAi4xWV_Gs`vfBi!aIITG(v0vW7hEZHuxrua34yEY&}e0>{vcmxFEj^X3Z=6CLrAg_PrV#+AU>-y`fh2emEWE>plRKSrjVcMtvHpWq7 zEaU13hCay6^x8o~Z!N!VGq!EfQIB@2qjk2q#w@=?LB?)ijzSgJv1Or?R$kari2*S2 za$BV-2rZEaUC}%|{%0)nFg;5H?U<)v8c(1(hx@^2G?JF+LayEZfYnFM7HzT&VDIyv zyQdNUdgQoe1m-95TK$lIqYFLVm?(A=gHm21*gca=PytZk-TCRMKMQwd<7c%k&@jSy zx{_?640`zOFqxZ%^CP0F^H-nazEyCvA{3MZK=RlS@AzHyuICw>eTD~V?E*liI$qMvcYZ)dC>+Z0qhITk9= zPLO`do%gNHYH#iGhh4stAWn6(7sZD=;#Xl4Gcz{yxg&6q;Y2n!i#;v%uzr(tf;JZI z3inEb&e;S-f%!?JjLd+u-A_s%mmTyhgkcY=&g4~ia@c!4+uJgaP(z88yZ7Cf2WlxV z<7>rPm|=(PQ;MDQXtX9AmLz5KyqAYBF3=-eD+Dh&8+yZg@VG9kB^r7ojaVb$@nWM+ z!a4M|9ao#qoFpfia<0@CzDDC#efUlr(hV2Hg+SW$*g|9~<(FY#eoN{7VPr4UD@VvY zG3Vvv#EvC1?>UMo@c?nnlePt-V)KyK1i* z)%4%@{qR5U?|!`JetPcnJm;P}$+*KCXEII?s(V?N8L3$w14HTzV{@c}Fx*N)8~+uB=E@wcRfX~{P1xrN^{*7Ba$ ze3WgHMa+?1+C(aehVw7_?A4zDPTyWBzIh1dMLgu??et~I!|UqTsUtKYQ~-xBkS zphX-Wv}I76r1ab?x3$P5@xd-R&#H1Cc+V0guO`b1K{<-@V8STJEupd!SbK!GrmkJv zJXysVA9TW{i_9h;wx$gEnCL6ig4U+g{3GoOO>C$z+Zo$2gv;sa6Mf=7^2IU@f;T%D zsldG?&=nut_jO*a_oc|X+=sNBY@$qET0OI68@yH<{d`sfB&^-En{0_uhKt2?r>iS^#>kmDz(FoDljA#%43 zPNghBo~mjp>xvHTJw zNlSG;4+@Eca5~{QnFC2J4KlvNuK5z^YBpK>xVTk$!9G*!s@DW1#SpLQk%xS$TGYEU z_jod9AfHV=w52K=u3def5*@#UR|${~V|A4oi>4RUtg^Ox1k1pI@WU1eI|wQo#;^L* zD$+G9)g*AHC~?y*13d6m6-DLuGF!X24*jMT<(NV$MigTiCRHjIwx1w*OhmX!ufPs2k6A^he!UyWS|SB0Y^YI>!( zO2YzL0JR&8USev{BXC&1+NZ->2utw)4%GJ!qa9I}aAe4IufFSd!!!pnk4<=8%6-=i z3d{!=)3F}VY&;-% zitJ^&9!56v=)uq15V5ZJ#9=@51#CkqQkRL;Pm3}@*tqVq-JZQ%>f!sQXvtndQCnv- zQL`@}PZl3Nkio44msp;l7VFl&6}RRH>W!*&?eRvE>Unidh=I_y`-n?-!a`=-fM%W# z&4J0Da9D51Y`j~XE%Fo0`5V7f<7U#G64@UhF=hokE3k+|S?RI-vv|Ik0~1ywIt|C> z#YO{Zc8Y>NaS4wpe@Zm3H&e4b8t8?6O9*tG-85XMp@@t`EP1MmhEtu3{HRb_L-ItH zrD~#`+oP6#j13V)bcogk4T=2b_0<^T(J{|bqfs$`YcwVw?^8K3k*DH{sK$!kA!@?Y z)OXPalTd5Ohb`fV001Bm0H6b4>J%9;RxAprGlMFXrLfCO!`eRP!u-hBkt3E$NWiGZ z!>bU+uS5|Wy+U&@C{%3l_{En?h7mKR#cbarE9{aJBNJyfYp0FpNhtD1 zG{`x+(~^kCFNJ5TA_snzyF2F##T5%XnI6LJ+LmZs73>*JQ)t{+h9jMgh3Y2y9EHqL zqM53{*TpwN*C3dTfpWr@COSAh>lSy*!kBTe*Qe1Cb? zH~vM))z0^6*@T`{94Qj#PX(JT7>Jogxk>Qr+%A6c)aBbWn|#|h`nDUR*!(*7H{7ye zu7%KM&IVwTy~IFP#wD-6v5v4v4uU{+KFeDys@g7$t4>#L{P~C(d4gr16Oc@xk-Zuu zoFr;v@8N5ajNXB#2w0_-Hh_XIgen=nfac#~9;IxdBB$i|#DsNXcxx7R&fUyV<+@rw zVQLfF-FNNk3-&omx|iWWvkzC=p6Mz1FU-e4Q&tUjk4%6(#HUs8#z(<1;*Es1EEn-RSWg0uzLY%@UIYwSb26b?U8tq_G85GEm zBeNO5c?MxU^^#u%kLylcG`C5Y=I%AfkKQ7$R8b+EBVzdQ#6qr`;hM}L2h|5RJo_$k zb9y^WlHi-b32b9=zaxs3%$!c)V-30UikNeQwebd~eG4pel1^Mu!2|^XA0!v(6>_H8 zKiS=b;!*2O4}WpadR5=7l9YUmK<)p`dnR4wf{|w9K!wphl-R1_tsk*fd6pC@C z3&-Fc+1?o`#tRD@>*zSRm^%$33s1t;-uIhyB~z6^jf=S4=ou-! zUAdPb9%p^$_YB*KnefBuQBs6+-;0~5$yWdG4^t-YX2Nzfj68I}594|U&C&#x(d#MT z2=6o05=s|d;t(95o=D|D-p1X3o2orH9cxaIe`aAML&2pmyp!Gv%h1=)?M_K8a+~#E zx=lO;EPo|Ed6~AJEA}h7x|fYooEb6{o-}05+_>9o#2hjoXEQt4s%^R9G;TC=`fk~1 z=HgvPvWK@J^lQMy00&C$B+XWTkGm7HCaFJ~372nv-1Z)W!{YgRCCy?L_Q8{= z5CNQ2Lf@pPEQf}VEZdOau+Nl-Lcytx9L^@{!+guB*D(B#0{-Ma<_{TDJ&*%MLmXUW z`!lRQNmPaa1y`Vr9Au4StLB%cD>$xhA}w`)JjvXb(xQith7eNHXkX`Fe}R`Pe|sgB?8|Dp2%c=1}P0S<0>6op_{`zmfALF^Se;dxC_S>; zopIbIWn9a++SHg_3e6M27&WeVL>T5sRce~cSqc$!{9?efDi(s2KhruT89Mzs*v8~~ zL31>?fv;;VAJp7oB4*T1h>6J}S|huo&b~9fsAOo8p7pWMlt4NI9k_yM8-1O--^5Ej zJ#h$fVGJ(DHq}=R*#qUwtl55{8+|KmccPH8b)%5=E>HBNI$mDSraLno#mi-?fzb+m zvHR&ccm`YBbUYS(u)J*0FLZE;>)1uKse1jm=&9g7`#tO1Jac0twIq3j`lJd!<~CfM z#AhE%{yTj&33ejl^dYx3AjV$C47Fn+v#{qXMfu_kSCBh$C6=4L{Dq>brB1Da@#U>Z zI+(s>l!)=ofq)WP`rWH?;;M!<;brgmM`IKa=o7jry{?n^h9sctc{h% z?!st?8k48GCm16Nw|d{H*jvp^#l0_$S|p<5Vfbn{PC&lJq)P7{~=`3Iep3Xpam zAn@i+3~OL)mnVPcC+NG4r*9kHo>D-^=p)OMNY`C1q{ksfrfQd3P|tBDL_xEa@g{?7 zdBY~pMkO-Mp1vEK#B&=%hia!A(o#gyTk0fkQdJu8S7n5?o?>@QOHY))(Q@Aj0fx~Y%acqGXITU4) zxH+E<{9yktulwzE4Zg6vb0&nhSv$+3bAUBPH;C{c>i68P@xA$NL;A;%XGuCw4DO6y zNeWP{TL#=490^wt&c0_iLAKl}L;itIa|iGJ1ka~%&=G!p_4~9#)K7fl{A8s?s)O<} z_>MSwO>uYe{#^bMd3Pb@ole<-BCo}u^p!`*rIm{Q#1&3c#QC&(g`g_(*l#PUPtU}j9M zF6$GYv|OnzxA1V1(e7ZNj>8bNr_XG;a3eiIbKX{TEp_1yB#p8PN~At)ZRQdO7ev4t z;)dhb(5t9WwF*On8*c0cda(HnVYKPEEy?u-BdAObYFdtsx~a>OGubqzbhmx$uY)yi z9;k`q0^Eyd&{P> ztW;)^%Bv7I^iprSjqQBYaRsj0z*|w&m68J%v`$ZHJFa{cxaV~2yww*^b+NHs;be0y zGn9J1?xoN}(805vrpL4hzRu6%DcZP997~Fr^-xX!?kh+wA2ZX{9Wfx$*YP{##giqL z@PccV)8=vFpzpZ?xsMGfuT>a+Z6Oa=hmUA5iVBPWEeALi9})g#JrxBx{x@6!{sS}S zzfnt>fCqD^s7k%e0RRMg`8rDa`3Ji@VFyx% y!H9`gq~-YcrvK`K{+1K;|CItfr7;I!evbd&ioYV-{}GhSVk98EBry4Z*#84r3;jd@