2 changed files with 95 additions and 0 deletions
@ -0,0 +1,78 @@ |
|||||
|
/*
|
||||
|
* thickness_sensor.c |
||||
|
* |
||||
|
* Created on: Mar 21, 2025 |
||||
|
* Author: SQ-X |
||||
|
*/ |
||||
|
|
||||
|
#include "thickness_sensor.h" |
||||
|
#include "BHBF_ROBOT.h" |
||||
|
#include "bsp_Error.pb.h" |
||||
|
|
||||
|
void decode_thickness(uint8_t *buffer, uint16_t length); |
||||
|
void GF_TS_Inquiry(); |
||||
|
|
||||
|
int32_t* ThicknessValue; |
||||
|
struct UARTHandler *Thickness_sensor; |
||||
|
DispacherController *Thickness_sensor_dispacherController; |
||||
|
void thickness_sensor_intialize(struct UARTHandler *Handler) |
||||
|
{ |
||||
|
//uartHandler_intialize(&Force_sensor,Handler,10);
|
||||
|
Thickness_sensor = Handler; |
||||
|
Thickness_sensor->UART_Decode=decode_thickness; |
||||
|
Thickness_sensor->Wait_time = 10; //等待10ms 最低不要低于4;
|
||||
|
Thickness_sensor_dispacherController=Handler->dispacherController; |
||||
|
Thickness_sensor_dispacherController->DispacherCallTime = 50;//10 是100ms 难道这个2ms的定时器是10ms的?
|
||||
|
LOG("angle_encoder_intialize"); |
||||
|
//log_info("angle_encoder_intialize");
|
||||
|
Thickness_sensor_dispacherController->Add_Dispatcher_List(Thickness_sensor_dispacherController,GF_TS_Inquiry); |
||||
|
|
||||
|
|
||||
|
HardWareErrorController->Add_PCOMHardWare(HardWareErrorController,"thickness_sensor",0,Thickness_sensor); |
||||
|
//uartHandler->Insert_HardWare_Entry_UART
|
||||
|
LOG("steering_engine_intialize"); |
||||
|
} |
||||
|
|
||||
|
uint8_t Inquiry_Order1[40]={0XFE, 0XE1, 0X90, 0X0D, 0X00, 0X01, 0X00, 0X00,0x01,0x01,0x06, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00,0x0C, |
||||
|
0x45,0x4D,0x32,0x34,0x31,0x31,0x31,0x38,0x53,0x30,0x30,0x31,0xC8,0x43,0x0D,0x90,0xE1,0xFE };//40个
|
||||
|
void GF_TS_Inquiry() |
||||
|
{ |
||||
|
|
||||
|
// MB_ReadHoldingReg(&Thickness_sensor->Tx_Buf,
|
||||
|
// &Thickness_sensor->TxCount, 1, 0x07D0, 2); //03 command ; read 2 registers
|
||||
|
for(int i=0;i<40;i++) |
||||
|
{ |
||||
|
Thickness_sensor->Tx_Buf[i]=Inquiry_Order1[i]; |
||||
|
} |
||||
|
|
||||
|
Thickness_sensor->TxCount=40; |
||||
|
Thickness_sensor->UART_Tx(Thickness_sensor);//send the data from the modbus command;
|
||||
|
LOG("GF_TS_Inquiry Second Version"); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
uint8_t data1[42]; |
||||
|
void decode_thickness(uint8_t *buffer, uint16_t length) |
||||
|
{ |
||||
|
memcpy(data1,buffer,length); |
||||
|
LOG("start decoding and the length is %d",length); |
||||
|
/* CRC 校验 */ |
||||
|
uint16_t crc_check = ((buffer[36] << 8) | buffer[37]); |
||||
|
/* CRC 校验正确 */ |
||||
|
if (crc_check == MB_CRC16(&buffer[22], 14)) |
||||
|
{ |
||||
|
*ThicknessValue= (int32_t)((int32_t)buffer[34]<<8|buffer[35]); |
||||
|
|
||||
|
HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,"thickness_sensor",1); |
||||
|
LOG("decode_force succeeded and the thickness is %d",*ForceValue); |
||||
|
|
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
//Decode Error;
|
||||
|
//log_error("wire sensor decoding failed");
|
||||
|
LOGFF(DL_ERROR,"thickness_sensor decoding failed"); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
/*
|
||||
|
* thickness_sensor.h |
||||
|
* |
||||
|
* Created on: Mar 21, 2025 |
||||
|
* Author: SQ-X |
||||
|
*/ |
||||
|
|
||||
|
#ifndef INC_THICKNESS_SENSOR_H_ |
||||
|
#define INC_THICKNESS_SENSOR_H_ |
||||
|
|
||||
|
#include "bsp_MB_host.h" |
||||
|
extern void thickness_sensor_intialize(struct UARTHandler *Handler); |
||||
|
extern int32_t* ThicknessValue; |
||||
|
|
||||
|
|
||||
|
|
||||
|
#endif /* INC_THICKNESS_SENSOR_H_ */ |
||||
Loading…
Reference in new issue