|
|
|
|
/*
|
|
|
|
|
* bsp_pv_setting.c
|
|
|
|
|
*
|
|
|
|
|
* Created on: Jan 8, 2025
|
|
|
|
|
* Author: akeguo
|
|
|
|
|
*/
|
|
|
|
|
#include <bsp_client_setting.h>
|
|
|
|
|
#include "BHBF_ROBOT.h"
|
|
|
|
|
#include "bsp_decode_command.h"
|
|
|
|
|
#include "gpio.h"
|
|
|
|
|
|
|
|
|
|
#include "bsp_UART.h"
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
client_setting_Handler = Handler;
|
|
|
|
|
client_setting_Handler->Wait_time = 30; // 最低不要低于4;
|
|
|
|
|
|
|
|
|
|
client_setting_dispacher=Handler->dispacherController;
|
|
|
|
|
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");
|
|
|
|
|
|
|
|
|
|
client_setting_Handler->UART_Decode = decode_received_data_from_client; //indicate that there is no need to listen
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void UpdateIV_State()//往安卓发的
|
|
|
|
|
{
|
|
|
|
|
Send_State_Count ++;
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void UpdateIV_PaintThickness()//往安卓发的
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if(GV.Robot_PaintThickness_Count <= LastCount)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if(GV.Robot_PaintThickness_Count == 1)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
client_setting_Handler->Tx_Buf[0] = 0x01;
|
|
|
|
|
client_setting_Handler->Tx_Buf[1] = 0x03;
|
|
|
|
|
client_setting_Handler->Tx_Buf[2] = 0x04;
|
|
|
|
|
client_setting_Handler->TxCount = 9;
|
|
|
|
|
client_setting_Handler->Tx_Buf[3] = ((GV.Robot_PaintThickness_Count - 1)>>8) &0xff;
|
|
|
|
|
client_setting_Handler->Tx_Buf[4] = (GV.Robot_PaintThickness_Count - 1) & 0xff;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
client_setting_Handler->Tx_Buf[5] = (GV.Robot_PaintThickness>>8) &0xff;
|
|
|
|
|
client_setting_Handler->Tx_Buf[6] = GV.Robot_PaintThickness & 0xff;
|
|
|
|
|
|
|
|
|
|
uint16_t crc=MB_CRC16(&(client_setting_Handler->Tx_Buf[0]), 7);
|
|
|
|
|
|
|
|
|
|
client_setting_Handler->Tx_Buf[8] = (crc>>8) &0xff;
|
|
|
|
|
client_setting_Handler->Tx_Buf[7] = crc & 0xff;
|
|
|
|
|
|
|
|
|
|
client_setting_Handler->UART_Tx(client_setting_Handler);
|
|
|
|
|
|
|
|
|
|
if(GV.Robot_PaintThickness_Count >= ((uint16_t)pow(2, 31)) - 1)
|
|
|
|
|
{
|
|
|
|
|
GV.Robot_PaintThickness_Count = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
LastCount = GV.Robot_PaintThickness_Count;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void decode_received_data_from_client(uint8_t *buffer, uint16_t length)
|
|
|
|
|
{
|
|
|
|
|
uint8_t data[2000];
|
|
|
|
|
memcpy(data,buffer,length);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// client_setting_Handler->Tx_Buf[0]='1';
|
|
|
|
|
// client_setting_Handler->Tx_Buf[1]=',';
|
|
|
|
|
// //wh_LTE_7S0_Handler->Tx_Buf[2]='1';
|
|
|
|
|
// client_setting_Handler->TxCount = 2;
|
|
|
|
|
// client_setting_Handler->UART_Tx(client_setting_Handler);
|
|
|
|
|
|
|
|
|
|
|