歇斯底里么 2022-09-01 17:12 采纳率: 42.9%
浏览 26
已结题

udp回传的char数据怎么处理

手机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);
}

img

  • 写回答

1条回答 默认 最新

  • 於黾 2022-09-01 17:17
    关注

    判断一下第一个字母是L还是R不就行了
    然后以分号作为分隔,左边一个数,右边一个数

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月4日
  • 创建了问题 9月1日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题