From 9314843ef2dfb68a24d1cf262c4da5b02c26d1d6 Mon Sep 17 00:00:00 2001
From: "LIN\\54376" <543769318@qq.com>
Date: Mon, 15 Sep 2025 17:13:43 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9usart=E5=8D=8F=E8=AE=AE?=
=?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=90=84=E7=A7=8D=E7=8A=B6=E6=80=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.settings/language.settings.xml | 4 +-
BASE/Src/BSP/bsp_client_setting.c | 63 ++++++++++++++++++++++++++-----
Core/Inc/FSM.h | 1 +
Core/Protobuf/PSource/bsp_GV.pb.h | 13 ++++---
Core/Protobuf/Proto/bsp_GV.proto | 4 +-
Core/Src/FSM.c | 12 +++---
6 files changed, 74 insertions(+), 23 deletions(-)
diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index 87e2a34..7c1ad0a 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/BASE/Src/BSP/bsp_client_setting.c b/BASE/Src/BSP/bsp_client_setting.c
index 88a3f40..fea49bb 100644
--- a/BASE/Src/BSP/bsp_client_setting.c
+++ b/BASE/Src/BSP/bsp_client_setting.c
@@ -10,13 +10,16 @@
#include "gpio.h"
#include "bsp_UART.h"
-
-void UpdateIV();
+void UpdateIV_State();
+void UpdateIV_PaintThickness();
void decode_received_data_from_client(uint8_t *buffer, uint16_t length);
struct UARTHandler *client_setting_Handler; //相当于当前行及下一行这两个结构体与绑定的共享地址
DispacherController *client_setting_dispacher;
int LastCount;
+uint16_t Send_State_Count = 0;
+uint16_t Send_PaintThickness_Flag = 0;
+
void client_setting_intialize(struct UARTHandler *Handler)
{
@@ -25,7 +28,9 @@ void client_setting_intialize(struct UARTHandler *Handler)
client_setting_Handler->Wait_time = 30; // 最低不要低于4;
client_setting_dispacher=Handler->dispacherController;
- client_setting_dispacher->Add_Dispatcher_List(client_setting_dispacher,UpdateIV);
+ client_setting_dispacher->Add_Dispatcher_List(client_setting_dispacher,UpdateIV_State);
+ client_setting_dispacher->Add_Dispatcher_List(client_setting_dispacher,UpdateIV_PaintThickness);
+
client_setting_dispacher->DispacherCallTime=1000;
client_setting_dispacher->Dispacher_Enable = 1;
LOG("client_setting_intialize");
@@ -34,23 +39,61 @@ void client_setting_intialize(struct UARTHandler *Handler)
}
-void UpdateIV()//往安卓发的
+
+void UpdateIV_State()//往安卓发的
{
+ Send_State_Count ++;
- if(GV.Robot_PaintThickness_Count > LastCount)
- {
+ client_setting_Handler->Tx_Buf[0] = 0x01;
+ client_setting_Handler->Tx_Buf[1] = 0x03;
+ client_setting_Handler->Tx_Buf[2] = 0x0C;
+
+ client_setting_Handler->Tx_Buf[3] = (Send_State_Count>>8) &0xff;
+ client_setting_Handler->Tx_Buf[4] = Send_State_Count & 0xff;
+
+
+ client_setting_Handler->Tx_Buf[5] = ((ushort)GV.Robot_State>>8) &0xff;
+ client_setting_Handler->Tx_Buf[6] = (ushort)GV.Robot_State & 0xff;
+
+ client_setting_Handler->Tx_Buf[7] = ((ushort)abs(GV.LeftFrontMotor.Current)>>8) &0xff;
+ client_setting_Handler->Tx_Buf[8] = (ushort)abs(GV.LeftFrontMotor.Current) & 0xff;
+
+ client_setting_Handler->Tx_Buf[9] = ((ushort)abs(GV.RightFrontMotor.Current)>>8) &0xff;
+ client_setting_Handler->Tx_Buf[10] = (ushort)abs(GV.RightFrontMotor.Current) & 0xff;
+
+ client_setting_Handler->Tx_Buf[11] = ((ushort)GV.Robot_Speed_mpm>>8) &0xff;
+ client_setting_Handler->Tx_Buf[12] = (ushort)GV.Robot_Speed_mpm & 0xff;
+
+ client_setting_Handler->Tx_Buf[13] = ((ushort)GV.Robot_Angle.RF_Angle_Roll>>8) &0xff;
+ client_setting_Handler->Tx_Buf[14] = (ushort)GV.Robot_Angle.RF_Angle_Roll & 0xff;
+
+ client_setting_Handler->TxCount = 17;
+ uint16_t crc=MB_CRC16(&(client_setting_Handler->Tx_Buf[0]), 15);
+ client_setting_Handler->Tx_Buf[16] = (crc>>8) &0xff;
+ client_setting_Handler->Tx_Buf[15] = crc & 0xff;
+
+ client_setting_Handler->UART_Tx(client_setting_Handler);
+
+ if(Send_State_Count >= ((uint16_t)pow(2, 32)) - 1)
+ {
+ Send_State_Count = 0;
}
- else
+
+}
+
+void UpdateIV_PaintThickness()//往安卓发的
+{
+
+ if(GV.Robot_PaintThickness_Count <= LastCount + 1)
{
return;
}
+
client_setting_Handler->Tx_Buf[0] = 0x01;
client_setting_Handler->Tx_Buf[1] = 0x03;
client_setting_Handler->Tx_Buf[2] = 0x02;
client_setting_Handler->TxCount = 7;
-
-
client_setting_Handler->Tx_Buf[3] = (GV.Robot_PaintThickness>>8) &0xff;
client_setting_Handler->Tx_Buf[4] = GV.Robot_PaintThickness & 0xff;
@@ -59,12 +102,12 @@ void UpdateIV()//往安卓发的
client_setting_Handler->Tx_Buf[6] = (crc>>8) &0xff;
client_setting_Handler->Tx_Buf[5] = crc & 0xff;
-
client_setting_Handler->UART_Tx(client_setting_Handler);
LastCount = GV.Robot_PaintThickness_Count;
}
+
void decode_received_data_from_client(uint8_t *buffer, uint16_t length)
{
uint8_t data[2000];
diff --git a/Core/Inc/FSM.h b/Core/Inc/FSM.h
index 0119fcd..5f8af8f 100644
--- a/Core/Inc/FSM.h
+++ b/Core/Inc/FSM.h
@@ -51,6 +51,7 @@ typedef enum _MoveSTATE_t
Move_ChgFinish,
Move_Emergency,
+ Move_Error,
} MoveSTATE_t;
//设置 换道距离和设置后退距离
diff --git a/Core/Protobuf/PSource/bsp_GV.pb.h b/Core/Protobuf/PSource/bsp_GV.pb.h
index e662655..7788bf6 100644
--- a/Core/Protobuf/PSource/bsp_GV.pb.h
+++ b/Core/Protobuf/PSource/bsp_GV.pb.h
@@ -47,6 +47,7 @@ typedef struct _GV_struct_define {
int32_t Robot_Speed_mpm;
bool has_Robot_Ultrasonic;
MSP_UltrasonicParameters Robot_Ultrasonic;
+ int32_t Robot_State;
int32_t Emergency;
} GV_struct_define;
@@ -56,8 +57,8 @@ extern "C" {
#endif
/* Initializer values for message structs */
-#define GV_struct_define_init_default {false, PV_struct_define_init_default, false, MotorParameters_init_default, false, MotorParameters_init_default, false, SP_MSP_U7_Button_init_default, 0, false, ErrorData_init_default, false, MSP_TL720DParameters_init_default, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_default, 0}
-#define GV_struct_define_init_zero {false, PV_struct_define_init_zero, false, MotorParameters_init_zero, false, MotorParameters_init_zero, false, SP_MSP_U7_Button_init_zero, 0, false, ErrorData_init_zero, false, MSP_TL720DParameters_init_zero, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_zero, 0}
+#define GV_struct_define_init_default {false, PV_struct_define_init_default, false, MotorParameters_init_default, false, MotorParameters_init_default, false, SP_MSP_U7_Button_init_default, 0, false, ErrorData_init_default, false, MSP_TL720DParameters_init_default, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_default, 0, 0}
+#define GV_struct_define_init_zero {false, PV_struct_define_init_zero, false, MotorParameters_init_zero, false, MotorParameters_init_zero, false, SP_MSP_U7_Button_init_zero, 0, false, ErrorData_init_zero, false, MSP_TL720DParameters_init_zero, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_zero, 0, 0}
/* Field tags (for use in manual encoding/decoding) */
#define GV_struct_define_PV_tag 1
@@ -80,7 +81,8 @@ extern "C" {
#define GV_struct_define_Robot_PaintThickness_Count_tag 18
#define GV_struct_define_Robot_Speed_mpm_tag 19
#define GV_struct_define_Robot_Ultrasonic_tag 20
-#define GV_struct_define_Emergency_tag 21
+#define GV_struct_define_Robot_State_tag 21
+#define GV_struct_define_Emergency_tag 22
/* Struct field encoding specification for nanopb */
#define GV_struct_define_FIELDLIST(X, a) \
@@ -104,7 +106,8 @@ X(a, STATIC, SINGULAR, INT32, Robot_PaintThickness, 17) \
X(a, STATIC, SINGULAR, INT32, Robot_PaintThickness_Count, 18) \
X(a, STATIC, SINGULAR, INT32, Robot_Speed_mpm, 19) \
X(a, STATIC, OPTIONAL, MESSAGE, Robot_Ultrasonic, 20) \
-X(a, STATIC, SINGULAR, INT32, Emergency, 21)
+X(a, STATIC, SINGULAR, INT32, Robot_State, 21) \
+X(a, STATIC, SINGULAR, INT32, Emergency, 22)
#define GV_struct_define_CALLBACK NULL
#define GV_struct_define_DEFAULT NULL
#define GV_struct_define_PV_MSGTYPE PV_struct_define
@@ -122,7 +125,7 @@ extern const pb_msgdesc_t GV_struct_define_msg;
/* Maximum encoded size of messages (where known) */
#define BSP_GV_PB_H_MAX_SIZE GV_struct_define_size
-#define GV_struct_define_size 1099
+#define GV_struct_define_size 1111
#ifdef __cplusplus
} /* extern "C" */
diff --git a/Core/Protobuf/Proto/bsp_GV.proto b/Core/Protobuf/Proto/bsp_GV.proto
index 953b679..84b74e2 100644
--- a/Core/Protobuf/Proto/bsp_GV.proto
+++ b/Core/Protobuf/Proto/bsp_GV.proto
@@ -37,7 +37,9 @@ message GV_struct_define
int32 Robot_Speed_mpm = 19;
MSP_UltrasonicParameters Robot_Ultrasonic = 20;
- int32 Emergency = 21;
+ int32 Robot_State = 21;
+
+ int32 Emergency = 22;
};
//protoc --nanopb_out=. *.proto
diff --git a/Core/Src/FSM.c b/Core/Src/FSM.c
index fec5433..fe3cbb3 100644
--- a/Core/Src/FSM.c
+++ b/Core/Src/FSM.c
@@ -532,9 +532,6 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值
GF_BSP_GPIO_SetIO(Out_Spray,1);
}
-
-
-
//计算速度档位m/min
GV.Robot_Speed_mpm = Speed_Judge(&Current_T_F4_Value);
//代入速度m/min * 186.9 最大下发4725 即最大速度25m/min
@@ -547,12 +544,17 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值
GV.Right_Compensation = Current_T_F4_Value.robot_Compensation_Right / 51.0;
action_perfrom(MoveTransitions, sizeof(MoveTransitions) / sizeof(transition_t), CurrentMoveState);//结构体数组/大小/当前状态
- // action_perfrom(SwingTransitions,sizeof(SwingTransitions) / sizeof(transition_t), CurrentSwingState);
- // action_perfrom(TiltTransitions, sizeof(TiltTransitions) / sizeof(transition_t), CurrentTiltState);
+ GV.Robot_State = CurrentMoveState;
+ if(GV.LeftFrontMotor.ERROR_Flag != 0 || GV.RightFrontMotor.ERROR_Flag != 0)
+ {
+ GV.Robot_State = Move_Error;
+ }
+
}
+
void action_perfrom(transition_t transitions[], int length, int state)
{