首页 > 解决方案 > 在 C++ 中读取原始字节数据

问题描述

我有一个非常基本的问题。我想根据 Nrf52 BLE 设备接收到的 BLE 数据打开/关闭 LED。我的问题是数据(Received_Data)是原始字节数据形式(1 字节),我不知道如何对其执行 if 语句,或者将其转换为可以的形式。在下面的代码中,我有:

                if (Received_Data > 50)
                    {
                      nrf_gpio_pin_toggle(LED_2);
                    }
                 end

如何让 'Received_Data' 在这样的 IF 语句中使用,以便可以将其读取为整数或十六进制数?

        case APP_UART_DATA_READY:
        UNUSED_VARIABLE(app_uart_get(&data_array[index]));
        index++;

        if ((data_array[index - 1] == '\n') ||
            (data_array[index - 1] == '\r') ||
            (index >= m_ble_nus_max_data_len))
        {
            if (index > 1)
            {
                NRF_LOG_DEBUG("Ready to send data over BLE NUS");
                NRF_LOG_HEXDUMP_DEBUG(Received_Data, index);

                 if (Received_Data > 50)
                    {
                      nrf_gpio_pin_toggle(LED_2);
                    }
                 end

这让我很头疼。我敢肯定有人可以在 5 秒内回答这个问题。而且我已经超出了我可以花时间挖掘所有相关的 C++ 文档以找到解决方案的地步。

标签: c++c

解决方案


由于 Received_Data 是一个 uint8_t 数组,您可以直接访问各个字节:

if (Received_Data[0] > 50)
//or
if (Received_Data[index] > 50)

uint8_t 为 [0..255]。


推荐阅读