From 6c0f2e6e26b403c38ea6d2428ef34094f2540c88 Mon Sep 17 00:00:00 2001 From: tianjialong Date: Sat, 4 Mar 2023 15:22:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=BC=96=E7=A0=81=E5=99=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MDK-ARM/LWIP.uvguix.29643 | 4 ++-- usersrc/encoder.c | 2 +- usersrc/encoder.h | 2 +- usersrc/protocol.h | 4 ++-- usersrc/udpclient.c | 21 ++++++++++++++++++++- 5 files changed, 26 insertions(+), 7 deletions(-) diff --git a/MDK-ARM/LWIP.uvguix.29643 b/MDK-ARM/LWIP.uvguix.29643 index e1bbde2..4ee0c92 100644 --- a/MDK-ARM/LWIP.uvguix.29643 +++ b/MDK-ARM/LWIP.uvguix.29643 @@ -3742,8 +3742,8 @@ ..\usersrc\udpclient.c 0 - 164 - 171 + 68 + 69 1 0 diff --git a/usersrc/encoder.c b/usersrc/encoder.c index 68003bc..3968ab3 100644 --- a/usersrc/encoder.c +++ b/usersrc/encoder.c @@ -45,7 +45,7 @@ void encoder_all_clear_counter(void) } } -bool encoder_read_with_encoder(encoder_usage_t encoder, int *encoder_value) +bool encoder_read_with_encoder(encoder_usage_t encoder, uint32_t *encoder_value) { bool get_encoder_value_flag = false; switch (encoder) diff --git a/usersrc/encoder.h b/usersrc/encoder.h index 3b87943..dfe67d7 100644 --- a/usersrc/encoder.h +++ b/usersrc/encoder.h @@ -18,4 +18,4 @@ void encoder_all_start(void); void encoder_all_stop(void); bool encoder_clear_counter(TIM_HandleTypeDef *tim_handler); void encoder_all_clear_counter(void); -bool encoder_read_with_encoder(encoder_usage_t encoder, int *encoder_value); +bool encoder_read_with_encoder(encoder_usage_t encoder, uint32_t *encoder_value); diff --git a/usersrc/protocol.h b/usersrc/protocol.h index 00a75e3..7f6147b 100644 --- a/usersrc/protocol.h +++ b/usersrc/protocol.h @@ -39,8 +39,8 @@ typedef struct uint16_t index; /* */ uint16_t cmd_id; /* 指令id */ uint32_t time_stamp_s; /* 时间戳 */ - int32_t encoder_1_count; /* 编码器1计数 */ - int32_t encoder_2_count; /* 编码器2计数 */ + uint32_t encoder_1_count; /* 编码器1计数 */ + uint32_t encoder_2_count; /* 编码器2计数 */ uint8_t device_id; /* 设备ID号 */ uint8_t checksum; /* 校验和 */ } active_report_data_t; diff --git a/usersrc/udpclient.c b/usersrc/udpclient.c index 0171f50..a5397da 100644 --- a/usersrc/udpclient.c +++ b/usersrc/udpclient.c @@ -66,6 +66,22 @@ static void udp_client_create_basic_response(basic_report_data_t *rxcmd, int rec } } +static void udp_client_create_get_encoder_response(get_encoder_report_t *get_encoder_cmd, int recv_datalen) +{ + get_encoder_respont_t get_encoder_respont_structer; + + get_encoder_respont_structer.index = get_encoder_cmd->index; + get_encoder_respont_structer.cmd_id = get_encoder_cmd->cmd_id; + encoder_read_with_encoder(CAMERA_ENCODER, &get_encoder_respont_structer.encoder1); + encoder_read_with_encoder(DRIVEN_ENCODER_GEAR, &get_encoder_respont_structer.encoder2); + get_encoder_respont_structer.checksum = computesum8((char *)&get_encoder_respont_structer, sizeof(get_encoder_respont_t) - 1); + + if (sendto(sock_Client, &get_encoder_respont_structer, sizeof(get_encoder_respont_t), 0, (struct sockaddr *)&addr_server, sizeof(struct sockaddr_in)) == SOCKET_ERROR) + { + printf("send basic_response error\r\n"); + } +} + void udp_client_recv_data_dump(int recv_datalen) { /* debug使用 */ @@ -168,6 +184,7 @@ void udp_client_parse(int recv_datalen) else if (recv_datalen <= basic_report_data_size) { basic_report_data_t *rxcmd = (basic_report_data_t *)s_receBuf; + get_encoder_report_t *get_encoder_cmd = (get_encoder_report_t *)s_receBuf; switch (rxcmd->cmd_id) { case CMD_SET_AUTOMATIC_REPORTING_FREQUENCY: /* 设置自动上报频率 */ @@ -179,7 +196,9 @@ void udp_client_parse(int recv_datalen) udp_client_create_basic_response(rxcmd, recv_datalen); break; case CMD_GET_ENCODER_DATA: /* 获取编码器数据 */ - /* code */ + cmd_checksum(get_encoder_cmd); + udp_client_create_get_encoder_response(get_encoder_cmd, recv_datalen); + break; case CMD_SET_ACTIVE: /* 设置主动上报 */ cmd_checksum(rxcmd);