手机APP有两个虚拟摇杆,滑动摇杆单片机接收到一个char类型的数据,然后他的右摇杆发送的是“R12;-78R”左摇杆是“L-46,2L”这样的数据,请问这样的数据我要怎么处理才能知道是哪一个摇杆发送的,并且要怎么才能把摇杆发送的2个数字提取出来?
贴上代码:
#include "udp_server.h"
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "lwip/sockets.h"
static int sock;
static char rx_Buffer[128];
static void task_udp_read_buffer(void *args)
{
while (1)
{
struct sockaddr_storage source_addr;
socklen_t socklen = sizeof(source_addr);
int len = recvfrom(sock, rx_Buffer, sizeof(rx_Buffer) - 1, 0, (struct sockaddr *)&source_addr, &socklen);
if (len < 0)
{
ESP_LOGE(TAG, "接收数据错误");
break;
}
else
{
rx_Buffer[len] = 0;
ESP_LOGI(TAG, "%s", rx_Buffer);
}
}
close(sock);
vTaskDelete(NULL);
}
int create_udp_server(void)
{
ESP_LOGI(TAG, "开始创建UDP服务...");
sock = socket(AF_INET, SOCK_DGRAM, 0);
if (sock < 0)
{
ESP_LOGE(TAG, "创建SOCKET失败");
return 0;
}
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
server_addr.sin_port = htons(SERVER_PORT);
int bind_rs = bind(sock, (struct sockaddr *)&server_addr, sizeof(server_addr));
if (bind_rs < 0)
{
ESP_LOGE(TAG, "绑定网络失败");
close(sock);
return 0;
}
ESP_LOGI(TAG, "创建UDP服务成功,端口:%d", SERVER_PORT);
return 1;
}
void get_udp_buffer(void)
{
xTaskCreatePinnedToCore(&task_udp_read_buffer, "task_udp_read_buffer", 2048, NULL, 0, NULL, 1);
}