From def6828641ac982dac39147e2ac3875c0b134e52 Mon Sep 17 00:00:00 2001
From: "LIN\\54376" <543769318@qq.com>
Date: Thu, 11 Sep 2025 11:31:27 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Eudp=20clinet=20=E6=AF=8F?=
=?UTF-8?q?=E6=AC=A1=E6=B5=8B=E9=87=8F=E6=AF=8F=E6=AC=A1=E5=8F=91=E9=80=81?=
=?UTF-8?q?=20=E7=BC=A9=E7=9F=AD=E5=89=8D=E8=BF=9B=E9=81=BF=E9=9A=9C?=
=?UTF-8?q?=E8=B7=9D=E7=A6=BB=20=E7=A1=AE=E5=AE=9A=E6=AD=A3=E5=8E=8B?=
=?UTF-8?q?=E8=8C=83=E5=9B=B4=20=E6=89=BE=E7=BA=A0=E9=80=9F=E5=BA=A6?=
=?UTF-8?q?=E9=99=90=E4=BD=8D=E6=94=BE=E5=A4=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.settings/language.settings.xml | 4 +-
BASE/Inc/MSP/msp_PaintThickness.h | 1 +
BASE/Src/BSP/bsp_client_setting.c | 82 +++++++++----------------------
BASE/Src/MSP/msp_PaintThickness.c | 16 +++++-
Core/Protobuf/PSource/bsp_GV.pb.h | 17 ++++---
Core/Protobuf/Proto/bsp_GV.proto | 6 ++-
Core/Src/FSM.c | 4 +-
Core/Src/main.c | 3 ++
Core/Src/robot_state.c | 4 +-
9 files changed, 62 insertions(+), 75 deletions(-)
diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
index 805db99..13fd3c0 100644
--- a/.settings/language.settings.xml
+++ b/.settings/language.settings.xml
@@ -5,7 +5,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
diff --git a/BASE/Inc/MSP/msp_PaintThickness.h b/BASE/Inc/MSP/msp_PaintThickness.h
index 5ddecc0..35e4164 100644
--- a/BASE/Inc/MSP/msp_PaintThickness.h
+++ b/BASE/Inc/MSP/msp_PaintThickness.h
@@ -11,6 +11,7 @@
#include "stdint.h"
extern int32_t* PaintThickness;
+extern int32_t* PaintThickness_Count;
extern void Paint_Thickness_intialize();
diff --git a/BASE/Src/BSP/bsp_client_setting.c b/BASE/Src/BSP/bsp_client_setting.c
index b61ae20..88a3f40 100644
--- a/BASE/Src/BSP/bsp_client_setting.c
+++ b/BASE/Src/BSP/bsp_client_setting.c
@@ -16,6 +16,7 @@ void decode_received_data_from_client(uint8_t *buffer, uint16_t length);
struct UARTHandler *client_setting_Handler; //相当于当前行及下一行这两个结构体与绑定的共享地址
DispacherController *client_setting_dispacher;
+int LastCount;
void client_setting_intialize(struct UARTHandler *Handler)
{
@@ -35,79 +36,42 @@ void client_setting_intialize(struct UARTHandler *Handler)
void UpdateIV()//往安卓发的
{
-//根据提供的缓冲区和大小创建一个输出流对象
- pb_ostream_t IV_o_stream = pb_ostream_from_buffer(
- &client_setting_Handler->Tx_Buf[2],
- sizeof(client_setting_Handler->Tx_Buf) - 2);
- //将 IV 结构体中的数值按照 Protobuf 协议进行编码,并将编码后的字节流存储到 client_setting_Handler->Tx_Buf 数组(从第三个元素开始)
- pb_encode(&IV_o_stream, IV_struct_define_fields, &IV);
+ if(GV.Robot_PaintThickness_Count > LastCount)
+ {
- client_setting_Handler->Tx_Buf[0] = 0x55;
- client_setting_Handler->Tx_Buf[1] = 0x55;
- client_setting_Handler->TxCount = IV_o_stream.bytes_written + 4;
+ }
+ else
+ {
+ 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;
- uint16_t crc=MB_CRC16(&(client_setting_Handler->Tx_Buf[0]), IV_o_stream.bytes_written + 2);
+ uint16_t crc=MB_CRC16(&(client_setting_Handler->Tx_Buf[0]), 5);
- client_setting_Handler->Tx_Buf[IV_o_stream.bytes_written + 2] = (crc>>8) &0xff;
- client_setting_Handler->Tx_Buf[IV_o_stream.bytes_written + 3] = crc & 0xff;;
+ 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[20];
+ uint8_t data[2000];
memcpy(data,buffer,length);
- //if (*buffer == 0x55 && *(buffer + 1) == 0x55 && length >= 4)
- if (buffer[0] == 0x55 && buffer[1] == 0x55 && length >= 4)
- {
- uint16_t crc_check = ((buffer[length - 1] << 8) | buffer[length - 2]);
- uint16_t crc_check1 = MB_CRC16(buffer, length - 2);
- /* CRC 校验正确 */
- if (crc_check == MB_CRC16(buffer, length - 2))
- {
- //if (*(buffer + 2) == 0x01 && *(buffer + 3) == 0x01) //01 01 设置PV
- if (buffer[2] == 0x01 && buffer[3] == 0x01) //01 01 设置PV
- {
- PV_struct_define decoded_PV = PV_struct_define_init_default;
- pb_istream_t i_pv_stream =
- { 0 };
-
- i_pv_stream = pb_istream_from_buffer(&buffer[4], length - 4);
- pb_decode(&i_pv_stream, PV_struct_define_fields, &decoded_PV);
- //将CV写入EEPROM
- //CV_struct_define saved_cV = GF_BSP_EEPROM_Get_CV();
- GV.PV = decoded_PV;
- GF_BSP_EEPROM_Set_CV(CV);
- }
- else if (*(buffer + 2) == 0x02 && *(buffer + 3) == 0x01) //设置PV
- {
-
- }
- else if (*(buffer + 2) == 0x03 && *(buffer + 3) == 0x01) //返回IV
- {
-
- }
- else
- {
-
- }
-
- }
- else
- {
- //Decode Error;
- //log_error("wire sensor decoding failed");
- LOGFF(DL_ERROR, "androidd decoding failed");
-
- }
-
- }
- }
+}
// client_setting_Handler->Tx_Buf[0]='1';
// client_setting_Handler->Tx_Buf[1]=',';
diff --git a/BASE/Src/MSP/msp_PaintThickness.c b/BASE/Src/MSP/msp_PaintThickness.c
index 3d4b1aa..25c746c 100644
--- a/BASE/Src/MSP/msp_PaintThickness.c
+++ b/BASE/Src/MSP/msp_PaintThickness.c
@@ -14,6 +14,10 @@ void GF_PT_Inquiry();//inqure data from the, in fact this is a modbus 03 functio
int32_t* PaintThickness;
+int32_t PaintThickness_LastLength;
+int32_t* PaintThickness_Count;
+
+
struct UARTHandler *PaintThickness_sensor;
DispacherController *PaintThickness_sensor_dispacherController;
@@ -51,6 +55,16 @@ void decode_PaintThickness(uint8_t *buffer, uint16_t length)
{
//memcpy(data_PaintThickness,buffer,length);
LOG("start decoding and the length is %d",length);
+
+ if(length >= PaintThickness_LastLength + 5)
+ {
+ *PaintThickness_Count = *PaintThickness_Count + 1;
+ }
+ else
+ {
+ return;
+ }
+
/* 校验 */
//;<:>
uint8_t crc_check[4] = {';','<',':','>'};
@@ -78,7 +92,7 @@ void decode_PaintThickness(uint8_t *buffer, uint16_t length)
*PaintThickness = atof(PaintThickness_in) * 10;
-
+ PaintThickness_LastLength = length;
HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,"PaintThickness_sensor",1);
LOG("decode_PaintThickness succeeded and the force is %d",*PaintThickness);
diff --git a/Core/Protobuf/PSource/bsp_GV.pb.h b/Core/Protobuf/PSource/bsp_GV.pb.h
index 2a61a9c..e662655 100644
--- a/Core/Protobuf/PSource/bsp_GV.pb.h
+++ b/Core/Protobuf/PSource/bsp_GV.pb.h
@@ -43,6 +43,7 @@ typedef struct _GV_struct_define {
int32_t Robot_ForceValue;
int32_t Robot_DynamometerValue;
int32_t Robot_PaintThickness;
+ int32_t Robot_PaintThickness_Count;
int32_t Robot_Speed_mpm;
bool has_Robot_Ultrasonic;
MSP_UltrasonicParameters Robot_Ultrasonic;
@@ -55,8 +56,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, 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, 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}
+#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}
/* Field tags (for use in manual encoding/decoding) */
#define GV_struct_define_PV_tag 1
@@ -76,8 +77,9 @@ extern "C" {
#define GV_struct_define_Robot_ForceValue_tag 15
#define GV_struct_define_Robot_DynamometerValue_tag 16
#define GV_struct_define_Robot_PaintThickness_tag 17
-#define GV_struct_define_Robot_Speed_mpm_tag 18
-#define GV_struct_define_Robot_Ultrasonic_tag 19
+#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
/* Struct field encoding specification for nanopb */
@@ -99,8 +101,9 @@ X(a, STATIC, SINGULAR, INT32, Robot_ChgLength, 14) \
X(a, STATIC, SINGULAR, INT32, Robot_ForceValue, 15) \
X(a, STATIC, SINGULAR, INT32, Robot_DynamometerValue, 16) \
X(a, STATIC, SINGULAR, INT32, Robot_PaintThickness, 17) \
-X(a, STATIC, SINGULAR, INT32, Robot_Speed_mpm, 18) \
-X(a, STATIC, OPTIONAL, MESSAGE, Robot_Ultrasonic, 19) \
+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)
#define GV_struct_define_CALLBACK NULL
#define GV_struct_define_DEFAULT NULL
@@ -119,7 +122,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 1087
+#define GV_struct_define_size 1099
#ifdef __cplusplus
} /* extern "C" */
diff --git a/Core/Protobuf/Proto/bsp_GV.proto b/Core/Protobuf/Proto/bsp_GV.proto
index b61d650..953b679 100644
--- a/Core/Protobuf/Proto/bsp_GV.proto
+++ b/Core/Protobuf/Proto/bsp_GV.proto
@@ -32,9 +32,11 @@ message GV_struct_define
int32 Robot_ForceValue = 15;
int32 Robot_DynamometerValue = 16;
int32 Robot_PaintThickness = 17;
- int32 Robot_Speed_mpm = 18;
+ int32 Robot_PaintThickness_Count = 18;
- MSP_UltrasonicParameters Robot_Ultrasonic = 19;
+ int32 Robot_Speed_mpm = 19;
+
+ MSP_UltrasonicParameters Robot_Ultrasonic = 20;
int32 Emergency = 21;
};
diff --git a/Core/Src/FSM.c b/Core/Src/FSM.c
index c36521b..fec5433 100644
--- a/Core/Src/FSM.c
+++ b/Core/Src/FSM.c
@@ -236,7 +236,7 @@ void Dangerous_Test()
}
//前进避障计数
- if(GV.Robot_Ultrasonic.USValue_4 <= 5000
+ if(GV.Robot_Ultrasonic.USValue_4 <= 4500
&& GV.Robot_Ultrasonic.USValue_4 != 0)
{
GV.Robot_Ultrasonic.USValue_Count_4 ++;
@@ -288,7 +288,7 @@ void Dym_Test()
{
//计数,置位标志
//前进探边计数
- if(GV.Robot_Ultrasonic.Dym_Value <= 10300 || GV.Robot_Ultrasonic.Dym_Value >= 11000)
+ if(GV.Robot_Ultrasonic.Dym_Value <= 10500 || GV.Robot_Ultrasonic.Dym_Value >= 15000)
{
GV.Robot_Ultrasonic.Dym_Value_Count ++;
if(GV.Robot_Ultrasonic.Dym_Value_Count >= 3)
diff --git a/Core/Src/main.c b/Core/Src/main.c
index 17b97c1..1ac3762 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -267,6 +267,7 @@ void CV_GV_Init()
CMCUValue_in = &GV.Robot_ForceValue;
DynamometerValue_in = &GV.Robot_DynamometerValue;
PaintThickness = &GV.Robot_PaintThickness;
+ PaintThickness_Count = &GV.Robot_PaintThickness_Count;
USValue_in = &GV.Robot_Ultrasonic;
//Error Config
@@ -312,6 +313,8 @@ void GF_Robot_Init()
T_F4_Remote_Controller_intialize(&RS_485_3_UART_Handler);
Paint_Thickness_intialize(&RS_485_4_UART_Handler);
+ client_setting_intialize(&LPUART1_UART_Handler);
+
GF_BSP_FDCAN_Init();
GF_BSP_CANHandler_Init(can1_sendListPeriod, can1_DispacherPeriod,
can2_sendListPeriod, can2_DispacherPeriod);
diff --git a/Core/Src/robot_state.c b/Core/Src/robot_state.c
index 37081f6..adfb70d 100644
--- a/Core/Src/robot_state.c
+++ b/Core/Src/robot_state.c
@@ -346,9 +346,9 @@ void VehicleAutoTurn(double InclinometerAngle, double expectationAngle, double K
deltaAngle=-deltaAngle;
}
- if(deltaSpeed >= 400)
+ if(deltaSpeed >= 500)
{
- deltaSpeed = 400;
+ deltaSpeed = 500;
}
GV.LeftFrontMotor.Target_Velcity=0;