Browse Source

获取编码器数据完成

external_Interrupt
tianjialong 2 years ago
parent
commit
6c0f2e6e26
  1. 4
      MDK-ARM/LWIP.uvguix.29643
  2. 2
      usersrc/encoder.c
  3. 2
      usersrc/encoder.h
  4. 4
      usersrc/protocol.h
  5. 21
      usersrc/udpclient.c

4
MDK-ARM/LWIP.uvguix.29643

@ -3742,8 +3742,8 @@
<Doc>
<Name>..\usersrc\udpclient.c</Name>
<ColumnNumber>0</ColumnNumber>
<TopLine>164</TopLine>
<CurrentLine>171</CurrentLine>
<TopLine>68</TopLine>
<CurrentLine>69</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>

2
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)

2
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);

4
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;

21
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);

Loading…
Cancel
Save