/*string pos*/
char *StrPos(char * s1, uint32_t len1, char * s2, uint32_t len2)
{
int32_t i = 0,j = 0;
if ((len2 > len1) || (len1 == 0) || (len2 == 0))
{
return NULL;
}
for (i = 0; i < (len1 - len2 + 1); i++)
{
if (s1[i] != s2[0])
{
continue ;
}
for (j = 1; j < len2; j++)
{
if (s1[i + j] != s2[j])
{
break ;
}
}
if (j == len2)
{
return &s1[i];
}
}
return NULL;
}
static void comm_jinko_process(jinko_comm_t *p_protocol)
{
uint16_t i, iend ;
distance_pack_t* p_distance_pack;
uint16_t len = 0;
uint8_t sum_value, sum_check;
char *pStart = NULL, *pEnd = NULL;
char *p2 = NULL;
uint16_t distance;
uint16_t capture_count;
uint16_t angle;
static uint32_t count;
i = 0;
iend = 0;
pStart = StrPos((char *)&p_protocol->recv_buf[0], p_protocol->recv_size, "31..06+",strlen("31..06+"));
if (pStart == NULL)
{
iend = p_protocol->recv_size - strlen("31..06+");
p_protocol->recv_size = p_protocol->recv_size - iend;
memcpy(p_protocol->recv_buf, &p_protocol->recv_buf[iend], p_protocol->recv_size);
return;
}
if ((p_protocol->recv_size - (pStart - (char *)&p_protocol->recv_buf[0])) < strlen("31..06+") + 9)
{
return;
}
pEnd = StrPos(pStart, p_protocol->recv_size - (pStart - (char *)&p_protocol->recv_buf[0]), " ",strlen(" "));
if (pEnd == NULL)
{
iend = (pStart - (char *)&p_protocol->recv_buf[0]) + strlen("31..06+");
p_protocol->recv_size = p_protocol->recv_size - iend;
memcpy(p_protocol->recv_buf, &p_protocol->recv_buf[iend], p_protocol->recv_size);
return;
}
p2 = strtok((pStart), "+");
p2 = (char *)strtok(NULL, "+");
p2 = (char *)strtok(p2, " ");
distance = atoi(p2);
capture_count =__HAL_TIM_GET_COUNTER(&TIM_EncoderHandle);
angle = ((capture_count * 1.0) / 35000) * 360 * 100;
send_angle_distance(distance / 100, angle);
count++;
if (count >= 10)
{
count = 0;
DEBUG_OUT("comm_jinko_process: distance...%d\r\n", distance);
DEBUG_OUT("comm_jinko_process: capture_count...%d\r\n", capture_count);
DEBUG_OUT("comm_jinko_process: gAngle...%d.%d .\r\n", angle / 100, angle % 100);
DEBUG_OUT("\r\n\r\n");
}
iend = pEnd - (char *)&p_protocol->recv_buf[0];
p_protocol->recv_size = p_protocol->recv_size - iend;
memcpy(p_protocol->recv_buf, &p_protocol->recv_buf[iend], p_protocol->recv_size);
}