Здесь я читаю из UART, который связывается с другим устройством, которое отправляет ему байты.Если я получаю целочисленное значение в 3 байта, как лучше преобразовать его во что-то, что я могу отправить с помощью cJSON.Я могу получить значение и перебрать его, но как только я помещу его в массив символов, я больше не могу видеть значение.Мысли?
{
uint8_t buf[BUF_SIZE];
memset(buf, 0, sizeof(buf));
// Read data from the UART
int checkIt = uart_write_bytes(UART_NUM_2, (const char *)hex,
strlen(hex));
ESP_LOGI(LOG_TAG, "this is the length of transmit: %i: ", checkIt);
int len2 = uart_read_bytes(UART_NUM_2, buf, BUF_SIZE - 1, 1000
portTICK_RATE_MS);
ParseData(buf);
}
ParseData(char * data)
{
//initialize char array to zeros
char temporary[4] = {0};
for(int i=0; i<3; i++)
{
//first two bytes are not needed, so skip them for now
temporary[i] = data[i+2];
ESP_LOGI(LOG_TAG, " temporary # %i %i ", i, temporary[i]);
}
temporary[3] = '\0';
ESP_LOGI(LOG_TAG, " temp char contents update %s ", temporary;
}
Цикл for покажет мне каждое из значений, например, 1, 2, 3 (отдельные целые числа, отправленные в виде отдельных байтов, а не строки и не '1', '2', '3 '- но я не хочу объединять его в 123, поэтому я настраиваю временный массив. Он ничего не печатает, даже если я не добавляю к нему нулевой символ. Если я могу получить его к одному значению(123) или даже char (строковый тип), тогда я могу добавить его в объект cJSON и отправить его.