2025-03-06 02:12:57 +00:00
|
|
|
|
#include "FreeRTOS.h"
|
|
|
|
|
#include "task.h"
|
|
|
|
|
|
2025-03-05 08:27:39 +00:00
|
|
|
|
#include "downUartParse.h"
|
2025-03-06 02:12:57 +00:00
|
|
|
|
#include "upUartParse.h"
|
|
|
|
|
#include "queueUart.h"
|
|
|
|
|
|
|
|
|
|
// /* 1<><31><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
// #define tick_1S configTICK_RATE_HZ
|
|
|
|
|
|
|
|
|
|
// /* ״̬<D7B4><CCAC> */
|
|
|
|
|
// typedef enum {
|
|
|
|
|
// wait = 0, /* <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>ʼ״̬ */
|
|
|
|
|
// startFlag, /* <20><><EFBFBD>յ<EFBFBD>֡ͷ */
|
|
|
|
|
// // address, /* <20>豸<EFBFBD><E8B1B8>ַ */
|
|
|
|
|
// functionCode, /* <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
// dataLen, /* <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
|
|
|
|
|
// crcCheckBitGW, /* <20><><EFBFBD>յ<EFBFBD>У<EFBFBD><D0A3>λ */
|
|
|
|
|
// endFlagGW, /* <20><><EFBFBD>յ<EFBFBD>֡β */
|
|
|
|
|
// } uartStateMachine;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD>gw485<38><35><EFBFBD><EFBFBD> */
|
|
|
|
|
static uint8_t J1_485RxBuffer[128];
|
|
|
|
|
static uint16_t J1_485RxBufferIndex = 0;
|
|
|
|
|
static uint8_t J2_485RxBuffer[128];
|
|
|
|
|
static uint16_t J2_485RxBufferIndex = 0;
|
|
|
|
|
static uint8_t J3_485RxBuffer[128];
|
|
|
|
|
static uint16_t J3_485RxBufferIndex = 0;
|
|
|
|
|
static uint8_t J4_485RxBuffer[128];
|
|
|
|
|
static uint16_t J4_485RxBufferIndex = 0;
|
|
|
|
|
static uint8_t J5_0_485RxBuffer[128];
|
|
|
|
|
static uint16_t J5_0_485RxBufferIndex = 0;
|
|
|
|
|
|
|
|
|
|
/* 100ms */
|
|
|
|
|
#define delayTick 50
|
|
|
|
|
#define maxdataLen 100
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J1<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void J1_SensorDataAnalysis(void)
|
|
|
|
|
{
|
|
|
|
|
static uint32_t tick;
|
|
|
|
|
|
|
|
|
|
if (J1_485RxBufferIndex == 0) {
|
|
|
|
|
tick = xTaskGetTickCount();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6ms<6D><73>3<EFBFBD><33>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
uint32_t nowTick = xTaskGetTickCount();
|
|
|
|
|
while ((getTickDiff(nowTick) < 3)
|
|
|
|
|
&& (uart_dev_char_present(g_J1_uart6_handle) == 1)
|
|
|
|
|
&& (maxdataLen > J1_485RxBufferIndex)) {
|
|
|
|
|
J1_485RxBuffer[J1_485RxBufferIndex++] = uart_dev_in_char(g_J1_uart6_handle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* <20><>ʱ<EFBFBD>䵽<EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> */
|
|
|
|
|
if ((J1_485RxBufferIndex >= maxdataLen) || (getTickDiff(tick) > delayTick)) {
|
|
|
|
|
uint32_t tempLen = 6 + J1_485RxBufferIndex + queueUartSendInfoSize;
|
|
|
|
|
if (xPortGetFreeHeapSize() < tempLen + 1024) {
|
|
|
|
|
J1_485RxBufferIndex = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t *Buff = (uint8_t *)pvPortMalloc(tempLen);
|
|
|
|
|
queueUartSendInfo *sendBuff = (queueUartSendInfo *)Buff;
|
|
|
|
|
sendBuff->length = 6 + J1_485RxBufferIndex;
|
|
|
|
|
sendBuff->data = Buff + sizeof(queueUartSendInfo);
|
|
|
|
|
uint8_t *send = sendBuff->data;
|
|
|
|
|
|
|
|
|
|
/* <20><>ʼ<EFBFBD><CABC>־ */
|
|
|
|
|
*send = 'S';
|
|
|
|
|
*(send + 1) = 'L';
|
|
|
|
|
|
|
|
|
|
/* <20>˿ں<CBBF> */
|
|
|
|
|
send += 2;
|
|
|
|
|
*send = 1;
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
send += 1;
|
|
|
|
|
*send = (uint8_t)(J1_485RxBufferIndex >> 8);
|
|
|
|
|
*(send + 1) = (uint8_t)(J1_485RxBufferIndex);
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ݰ<EFBFBD> */
|
|
|
|
|
send += 2;
|
|
|
|
|
strlcpy((char *)send, (char *)J1_485RxBuffer, J1_485RxBufferIndex);
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|
|
|
|
send += J1_485RxBufferIndex;
|
|
|
|
|
*send = 0x17;
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ䣬<D5BC><EFBFBD><F2BDABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
if (uxQueueSpacesAvailable(upward_uart_Queue)) {
|
|
|
|
|
xQueueSend(upward_uart_Queue, &Buff, 10);
|
|
|
|
|
}
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ռ䣬<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD> */
|
|
|
|
|
else {
|
|
|
|
|
vPortFree(Buff);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD><E2A3AC>buff<66>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
J1_485RxBufferIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J2<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void J2_SensorDataAnalysis(void)
|
|
|
|
|
{
|
|
|
|
|
static uint32_t tick;
|
|
|
|
|
|
|
|
|
|
if (J2_485RxBufferIndex == 0) {
|
|
|
|
|
tick = xTaskGetTickCount();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6ms<6D><73>3<EFBFBD><33>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
uint32_t nowTick = xTaskGetTickCount();
|
|
|
|
|
while ((getTickDiff(nowTick) < 3)
|
|
|
|
|
&& (uart_dev_char_present(g_J2_uart7_handle) == 1)
|
|
|
|
|
&& (maxdataLen > J2_485RxBufferIndex)) {
|
|
|
|
|
J2_485RxBuffer[J2_485RxBufferIndex++] = uart_dev_in_char(g_J2_uart7_handle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* <20><>ʱ<EFBFBD>䵽<EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> */
|
|
|
|
|
if ((J2_485RxBufferIndex >= maxdataLen) || (getTickDiff(tick) > delayTick)) {
|
|
|
|
|
|
|
|
|
|
uint32_t tempLen = 6 + J2_485RxBufferIndex + queueUartSendInfoSize;
|
|
|
|
|
if (xPortGetFreeHeapSize() < tempLen + 1024) {
|
|
|
|
|
J2_485RxBufferIndex = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t *Buff = (uint8_t *)pvPortMalloc(tempLen);
|
|
|
|
|
queueUartSendInfo *sendBuff = (queueUartSendInfo *)Buff;
|
|
|
|
|
sendBuff->length = 6 + J2_485RxBufferIndex;
|
|
|
|
|
sendBuff->data = Buff + sizeof(queueUartSendInfo);
|
|
|
|
|
uint8_t *send = sendBuff->data;
|
|
|
|
|
|
|
|
|
|
/* <20><>ʼ<EFBFBD><CABC>־ */
|
|
|
|
|
*send = 'S';
|
|
|
|
|
*(send + 1) = 'L';
|
|
|
|
|
|
|
|
|
|
/* <20>˿ں<CBBF> */
|
|
|
|
|
send += 2;
|
|
|
|
|
*send = 2;
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
send += 1;
|
|
|
|
|
*send = (uint8_t)(J2_485RxBufferIndex >> 8);
|
|
|
|
|
*(send + 1) = (uint8_t)(J2_485RxBufferIndex);
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ݰ<EFBFBD> */
|
|
|
|
|
send += 2;
|
|
|
|
|
strlcpy((char *)send, (char *)J2_485RxBuffer, J2_485RxBufferIndex);
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|
|
|
|
send += J2_485RxBufferIndex;
|
|
|
|
|
*send = 0x17;
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ䣬<D5BC><EFBFBD><F2BDABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
if (uxQueueSpacesAvailable(upward_uart_Queue)) {
|
|
|
|
|
xQueueSend(upward_uart_Queue, &Buff, 10);
|
|
|
|
|
}
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ռ䣬<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD> */
|
|
|
|
|
else {
|
|
|
|
|
vPortFree(Buff);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
J2_485RxBufferIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J3<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void J3_SensorDataAnalysis(void)
|
|
|
|
|
{
|
|
|
|
|
static uint32_t tick;
|
|
|
|
|
|
|
|
|
|
if (J3_485RxBufferIndex == 0) {
|
|
|
|
|
tick = xTaskGetTickCount();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6ms<6D><73>3<EFBFBD><33>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
uint32_t nowTick = xTaskGetTickCount();
|
|
|
|
|
while ((getTickDiff(nowTick) < 3)
|
|
|
|
|
&& (uart_dev_char_present(g_J3_usart2_handle) == 1)
|
|
|
|
|
&& (maxdataLen > J3_485RxBufferIndex)) {
|
|
|
|
|
J3_485RxBuffer[J3_485RxBufferIndex++] = uart_dev_in_char(g_J3_usart2_handle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* <20><>ʱ<EFBFBD>䵽<EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> */
|
|
|
|
|
if ((J3_485RxBufferIndex >= maxdataLen) || (getTickDiff(tick) > delayTick)) {
|
|
|
|
|
|
|
|
|
|
uint32_t tempLen = 6 + J3_485RxBufferIndex + queueUartSendInfoSize;
|
|
|
|
|
if (xPortGetFreeHeapSize() < tempLen + 1024) {
|
|
|
|
|
J3_485RxBufferIndex = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t *Buff = (uint8_t *)pvPortMalloc(tempLen);
|
|
|
|
|
queueUartSendInfo *sendBuff = (queueUartSendInfo *)Buff;
|
|
|
|
|
sendBuff->length = 6 + J3_485RxBufferIndex;
|
|
|
|
|
sendBuff->data = Buff + sizeof(queueUartSendInfo);
|
|
|
|
|
uint8_t *send = sendBuff->data;
|
|
|
|
|
|
|
|
|
|
/* <20><>ʼ<EFBFBD><CABC>־ */
|
|
|
|
|
*send = 'S';
|
|
|
|
|
*(send + 1) = 'L';
|
|
|
|
|
|
|
|
|
|
/* <20>˿ں<CBBF> */
|
|
|
|
|
send += 2;
|
|
|
|
|
*send = 3;
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
send += 1;
|
|
|
|
|
*send = (uint8_t)(J3_485RxBufferIndex >> 8);
|
|
|
|
|
*(send + 1) = (uint8_t)(J3_485RxBufferIndex);
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ݰ<EFBFBD> */
|
|
|
|
|
send += 2;
|
|
|
|
|
strlcpy((char *)send, (char *)J3_485RxBuffer, J3_485RxBufferIndex);
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|
|
|
|
send += J3_485RxBufferIndex;
|
|
|
|
|
*send = 0x17;
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ䣬<D5BC><EFBFBD><F2BDABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
if (uxQueueSpacesAvailable(upward_uart_Queue)) {
|
|
|
|
|
xQueueSend(upward_uart_Queue, &Buff, 10);
|
|
|
|
|
}
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ռ䣬<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD> */
|
|
|
|
|
else {
|
|
|
|
|
vPortFree(Buff);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
J3_485RxBufferIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J4<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void J4_SensorDataAnalysis(void)
|
|
|
|
|
{
|
|
|
|
|
static uint32_t tick;
|
|
|
|
|
|
|
|
|
|
if (J4_485RxBufferIndex == 0) {
|
|
|
|
|
tick = xTaskGetTickCount();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6ms<6D><73>3<EFBFBD><33>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
uint32_t nowTick = xTaskGetTickCount();
|
|
|
|
|
while ((getTickDiff(nowTick) < 3)
|
|
|
|
|
&& (uart_dev_char_present(g_J4_uart8_handle) == 1)
|
|
|
|
|
&& (maxdataLen > J4_485RxBufferIndex)) {
|
|
|
|
|
J4_485RxBuffer[J4_485RxBufferIndex++] = uart_dev_in_char(g_J4_uart8_handle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* <20><>ʱ<EFBFBD>䵽<EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> */
|
|
|
|
|
if ((J4_485RxBufferIndex >= maxdataLen) || (getTickDiff(tick) > delayTick)) {
|
|
|
|
|
|
|
|
|
|
uint32_t tempLen = 6 + J4_485RxBufferIndex + queueUartSendInfoSize;
|
|
|
|
|
if (xPortGetFreeHeapSize() < tempLen + 1024) {
|
|
|
|
|
J4_485RxBufferIndex = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t *Buff = (uint8_t *)pvPortMalloc(tempLen);
|
|
|
|
|
queueUartSendInfo *sendBuff = (queueUartSendInfo *)Buff;
|
|
|
|
|
sendBuff->length = 6 + J4_485RxBufferIndex;
|
|
|
|
|
sendBuff->data = Buff + sizeof(queueUartSendInfo);
|
|
|
|
|
uint8_t *send = sendBuff->data;
|
|
|
|
|
|
|
|
|
|
/* <20><>ʼ<EFBFBD><CABC>־ */
|
|
|
|
|
*send = 'S';
|
|
|
|
|
*(send + 1) = 'L';
|
|
|
|
|
|
|
|
|
|
/* <20>˿ں<CBBF> */
|
|
|
|
|
send += 2;
|
|
|
|
|
*send = 4;
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
send += 1;
|
|
|
|
|
*send = (uint8_t)(J4_485RxBufferIndex >> 8);
|
|
|
|
|
*(send + 1) = (uint8_t)(J4_485RxBufferIndex);
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ݰ<EFBFBD> */
|
|
|
|
|
send += 2;
|
|
|
|
|
strlcpy((char *)send, (char *)J4_485RxBuffer, J4_485RxBufferIndex);
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|
|
|
|
send += J4_485RxBufferIndex;
|
|
|
|
|
*send = 0x17;
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ䣬<D5BC><EFBFBD><F2BDABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
if (uxQueueSpacesAvailable(upward_uart_Queue)) {
|
|
|
|
|
xQueueSend(upward_uart_Queue, &Buff, 10);
|
|
|
|
|
}
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ռ䣬<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD> */
|
|
|
|
|
else {
|
|
|
|
|
vPortFree(Buff);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
J4_485RxBufferIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>J5_0<EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param
|
|
|
|
|
* @retval
|
|
|
|
|
*/
|
|
|
|
|
void J5_0_SensorDataAnalysis(void)
|
|
|
|
|
{
|
|
|
|
|
static uint32_t tick;
|
|
|
|
|
|
|
|
|
|
if (J5_0_485RxBufferIndex == 0) {
|
|
|
|
|
tick = xTaskGetTickCount();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* <20><><EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6ms<6D><73>3<EFBFBD><33>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
uint32_t nowTick = xTaskGetTickCount();
|
|
|
|
|
while ((getTickDiff(nowTick) < 3)
|
|
|
|
|
&& (uart_dev_char_present(g_J5_0_usart3_handle) == 1)
|
|
|
|
|
&& (maxdataLen > J5_0_485RxBufferIndex)) {
|
|
|
|
|
J5_0_485RxBuffer[J5_0_485RxBufferIndex++] = uart_dev_in_char(g_J5_0_usart3_handle);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* <20><>ʱ<EFBFBD>䵽<EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3> */
|
|
|
|
|
if ((J5_0_485RxBufferIndex >= maxdataLen) || (getTickDiff(tick) > delayTick)) {
|
|
|
|
|
|
|
|
|
|
uint32_t tempLen = 6 + J5_0_485RxBufferIndex + queueUartSendInfoSize;
|
|
|
|
|
if (xPortGetFreeHeapSize() < tempLen + 1024) {
|
|
|
|
|
J5_0_485RxBufferIndex = 0;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t *Buff = (uint8_t *)pvPortMalloc(tempLen);
|
|
|
|
|
queueUartSendInfo *sendBuff = (queueUartSendInfo *)Buff;
|
|
|
|
|
sendBuff->length = 6 + J5_0_485RxBufferIndex;
|
|
|
|
|
sendBuff->data = Buff + sizeof(queueUartSendInfo);
|
|
|
|
|
uint8_t *send = sendBuff->data;
|
|
|
|
|
|
|
|
|
|
/* <20><>ʼ<EFBFBD><CABC>־ */
|
|
|
|
|
*send = 'S';
|
|
|
|
|
*(send + 1) = 'L';
|
2025-03-05 08:27:39 +00:00
|
|
|
|
|
2025-03-06 02:12:57 +00:00
|
|
|
|
/* <20>˿ں<CBBF> */
|
|
|
|
|
send += 2;
|
|
|
|
|
*send = getConnectPort();
|
2025-03-05 08:27:39 +00:00
|
|
|
|
|
2025-03-06 02:12:57 +00:00
|
|
|
|
/* <20><><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
send += 1;
|
|
|
|
|
*send = (uint8_t)(J5_0_485RxBufferIndex >> 8);
|
|
|
|
|
*(send + 1) = (uint8_t)(J5_0_485RxBufferIndex);
|
2025-03-05 08:27:39 +00:00
|
|
|
|
|
2025-03-06 02:12:57 +00:00
|
|
|
|
/* <20><><EFBFBD>ݰ<EFBFBD> */
|
|
|
|
|
send += 2;
|
|
|
|
|
strlcpy((char *)send, (char *)J5_0_485RxBuffer, J5_0_485RxBufferIndex);
|
2025-03-05 08:27:39 +00:00
|
|
|
|
|
2025-03-06 02:12:57 +00:00
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־ */
|
|
|
|
|
send += J5_0_485RxBufferIndex;
|
|
|
|
|
*send = 0x17;
|
2025-03-05 08:27:39 +00:00
|
|
|
|
|
2025-03-06 02:12:57 +00:00
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>пռ䣬<D5BC><EFBFBD><F2BDABB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|
|
|
|
if (uxQueueSpacesAvailable(upward_uart_Queue)) {
|
|
|
|
|
xQueueSend(upward_uart_Queue, &Buff, 10);
|
|
|
|
|
}
|
|
|
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ռ䣬<D5BC><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD> */
|
|
|
|
|
else {
|
|
|
|
|
vPortFree(Buff);
|
|
|
|
|
}
|
2025-03-05 08:27:39 +00:00
|
|
|
|
|
2025-03-06 02:12:57 +00:00
|
|
|
|
J5_0_485RxBufferIndex = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-03-05 08:27:39 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|