Мне нужно создать байтовый массив, который необходим для потоковой передачи на другое устройство через UART.Есть некоторые фиксированные параметры, которые я могу заполнить заранее, но такие переменные, как строка, имеют динамический размер.До сих пор я делал:
unsigned char buffer[255];
unsigned char wr_head = 0;
buffer[wr_head++] = 0x01; // and so on
memcpy(&buffer[wr_head], &some_chararray, sizeof(some_chararray));
wr_head += some_chararray;
Я экспериментировал с другими методами, такими как std::string
и std::vector
, но я чувствовал, что есть много управляемых способов записи байтового массива для потоков,Предложения?
edit : Пожалуйста, советуйте по производительности, потому что это резьбовое соединение.
edit2 : Извините за отсутствие подробностей в первый раз.Устройство действительно является встроенным устройством.Хотя некоторые предложили какое-то решение, это не совсем то, что я хочу.Может быть, фрагмент моей текущей реализации прояснит некоторую путаницу:
unsigned char buffer[255];
unsigned char wr_head = 0;
buffer[wr_head++] = 0x01; // Set message type
buffer[wr_head++] = 0x30; // message length
memcpy(&buffer[wr_head], &some_chararray, sizeof(some_chararray));
wr_head += some_chararray;
buffer[wr_head++] = CalChecksum;
UartSend(&buffer, wr_head); // Send array to stream out from UART
Значение конфигурации и настройки заранее известно, что указано в документации устройства.Этот вопрос связан с тем, что я задал в здесь
Спасибо за усилия.