修改响应速度

This commit is contained in:
起床就犯困 2025-06-27 17:09:07 +08:00
parent b4f60be16a
commit 21b229c119
1 changed files with 53 additions and 41 deletions

View File

@ -124,8 +124,9 @@ void ptz_reply(char dev, unsigned char type)
break;
case CMD_WRONG://指令错误
if (dev != PTZ_UART_485) {
ptz_send_data(dev, reply_wrong, sizeof(reply_wrong));
}
break;
case CMD_FAIL://指令正确,但执行失败
@ -2200,11 +2201,15 @@ static void ptz_uart_485_data_process_task()
//判断有无数据
if(ptz_uart_dev_char_present(uart_485_handle) == 0)
{
OSTimeDlyHMSM(0u, 0u, 0u, 1u);//等待一段时间
uart_485_timer ++;
if(uart_485_timer > PTZ_UART_RECV_OVERTIME)
{//接收超时,说明一帧数据接收完成
break;
OSTimeDlyHMSM(0u, 0u, 0u, 3u);//等待一段时间
// uart_485_timer ++;
// if(uart_485_timer > PTZ_UART_RECV_OVERTIME)
// {//接收超时,说明一帧数据接收完成
// break;
// }
if (ptz_uart_dev_char_present(uart_485_handle) == 0) {
// break;
goto error;
}
}
else
@ -2212,29 +2217,31 @@ static void ptz_uart_485_data_process_task()
uart_485_buffer[uart_485_data_len] = ptz_uart_dev_in_char(uart_485_handle);
uart_485_data_len++;
uart_485_timer = 0;
if(uart_485_data_len % 100 == 0 && uart_485_data_len > 0)
{
OSTimeDlyHMSM(0u, 0u, 0u, 2u);
}
if(uart_485_data_len >= 7)
{
if(ptz_data_pack_pelco_d_check(pack_pelco_d) == 1)
{//成功读取一帧派尔高D协议或者自定义类似派尔高D协议长度7字节
// if(uart_485_data_len % 100 == 0 && uart_485_data_len > 0)
// {
// OSTimeDlyHMSM(0u, 0u, 0u, 2u);
// }
if(uart_485_data_len >= 7) {
if(ptz_data_pack_pelco_d_check(pack_pelco_d) == 1) {//成功读取一帧派尔高D协议或者自定义类似派尔高D协议长度7字节
break;
}
}
if(uart_485_data_len >= (sizeof(PTZ_DATA_PACK_A) + sizeof(unsigned int)))
{
ptz_reply(uart_485_handle, CMD_WRONG);
if(ptz_data_pack_a_check(pack_a) == 1)
{//成功读取一帧自定义超长度协议
break;
else {
memcpy(uart_485_buffer, uart_485_buffer + 1, uart_485_data_len);
uart_485_data_len = uart_485_data_len - 1;
}
}
if(uart_485_data_len >= PTZ_UART_485_BUFF_SIZE)
{
break;
}
// if(uart_485_data_len >= (sizeof(PTZ_DATA_PACK_A) + sizeof(unsigned int)))
// {
// ptz_reply(uart_485_handle, CMD_WRONG);
// if(ptz_data_pack_a_check(pack_a) == 1)
// {//成功读取一帧自定义超长度协议
// break;
// }
// }
// if(uart_485_data_len >= PTZ_UART_485_BUFF_SIZE)
// {
// break;
// }
}
}
uart_485_timer = 0;
@ -2243,22 +2250,27 @@ static void ptz_uart_485_data_process_task()
//处理串口数据
if(uart_485_state == PTZ_UART_HAND_STATE)
{
if(uart_485_data_len > 7)
{//不定长数据处理该数据每一帧都超过7个字节
ptz_data_pack_a_process(PTZ_UART_485, (PTZ_DATA_PACK_A *)uart_485_buffer);
// ptz_reply(PTZ_UART_485, CMD_WRONG);
}
else
{//7个字节的派尔高D数据以及7个字节自定义类派尔高D数据处理
// if(uart_485_data_len > 7)
// {//不定长数据处理该数据每一帧都超过7个字节
// ptz_data_pack_a_process(PTZ_UART_485, (PTZ_DATA_PACK_A *)uart_485_buffer);
// // ptz_reply(PTZ_UART_485, CMD_WRONG);
// }
// else
// {//7个字节的派尔高D数据以及7个字节自定义类派尔高D数据处理
// ptz_data_pack_process(PTZ_UART_485, (PTZ_DATA_PACK *)uart_485_buffer);
// }
ptz_data_pack_process(PTZ_UART_485, (PTZ_DATA_PACK *)uart_485_buffer);
}
memset(uart_485_buffer, 0, sizeof(uart_485_buffer));
uart_485_data_len = 0;
uart_485_timer = 0;
uart_485_state = PTZ_UART_FREE_STATE;
}
OSTimeDlyHMSM(0u, 0u, 0u, 5u);
error:
// OSTimeDlyHMSM(0u, 0u, 0u, 2u);
if (ptz_uart_dev_char_present(uart_485_handle) == 0) {
OSTimeDlyHMSM(0u, 0u, 0u, 2u);
}
}
}