C 代码:串口数据解析和颜色识别

该代码演示了使用 C 语言解析串口数据,并根据接收到的颜色值进行识别。代码包含字符串分割、颜色识别、串口通信等功能。

#include <stdio.h>
#include <string.h>

void splitString(const char* input, char* output[], int* count) {
    *count = strlen(input);
    for (int i = 0; i < *count; i++) {
        output[i] = malloc(2);
        snprintf(output[i], 2, "%c", input[i]);
    }
}

void recognizeColor(int color, int expectedColor) {
    while (1) {
        if (color == expectedColor) {
            print(1);
            break;
        } else {
            // 识别程序
            HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
            HAL_UART_Receive(&huart2, &color, 1, HAL_MAX_DELAY);
        }
    }
}

int main(void) {
    uint8_t receiveData[7];
    uint8_t receiveDatacolor;

    int a, b, c, d, e, f;
    char* ste[7];

    // 接收串口数据
    HAL_UART_Receive(&huart2, receiveData, 7, HAL_MAX_DELAY);

    // 对接收的数据进行分割
    splitString((const char*)receiveData, ste, &f);

    a = atoi(ste[0]);
    b = atoi(ste[1]);
    c = atoi(ste[2]);
    d = atoi(ste[4]);
    e = atoi(ste[5]);
    f = atoi(ste[6]);

    // 第一次识别
    HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    HAL_UART_Receive(&huart2, &receiveDatacolor, 1, HAL_MAX_DELAY);
    int color = (int)receiveDatacolor;
    recognizeColor(color, a);

    // 第二次识别
    HAL_Delay(1000);
    HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    HAL_UART_Receive(&huart2, &receiveDatacolor, 1, HAL_MAX_DELAY);
    color = (int)receiveDatacolor;
    recognizeColor(color, b);

    // 第三次识别
    HAL_Delay(1000);
    HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    HAL_UART_Receive(&huart2, &receiveDatacolor, 1, HAL_MAX_DELAY);
    color = (int)receiveDatacolor;
    recognizeColor(color, c);

    // 添加上边的代码
    if (e == 1) {
        HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    } else if (e == 2) {
        HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    } else if (e == 3) {
        HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    }

    if (f == 1) {
        HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    } else if (f == 2) {
        HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    } else if (f == 3) {
        HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    }

    if (g == 1) {
        HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    } else if (g == 2) {
        HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    } else if (g == 3) {
        HAL_UART_Transmit(&huart2, (uint8_t*)message7, strlen(message7), 100);
    }

    return 0;
}

说明:

  • 该代码使用 HAL_UART_Receive 函数接收串口数据,并使用 splitString 函数将接收到的数据分割成单个字符。
  • recognizeColor 函数负责识别接收到的颜色是否与预期的颜色匹配。
  • 代码中使用 HAL_UART_Transmit 函数发送数据到串口。
  • 请确保在使用该代码之前,已经定义了 message7 变量和 huart2 串口句柄。
  • 该代码仅供参考,具体实现可能需要根据实际需求进行修改。
C 语言代码:串口数据解析和颜色识别

原文地址: http://www.cveoy.top/t/topic/hyB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录