我正在开发一个涉及Arduino的项目,该项目正在读取传感器数据并通过BLE连接将其传输到应用程序。我正在使用的传感器库返回一个uint16_t整数值,而BLE库期望uint8_t [20]作为缓冲区。接收端的App将数据解释为UTF-8字节。所以我需要将uint16_t整数转换为UTF-8字符串并将其存储在数组中。
我在15年内没有使用过C ++,所以这是我设法提出的最好的,但它在很多方面都失败了。
// global vars for transmit buffer
static uint8_t transmit_buffer[20];
static uint8_t transmit_buffer_size;
// read sensor data using vendor lib
uint16_t mm = sensor.read();
char buf[6];
transmit_buffer_size = sprintf(buf, "%d", mm);
// copy data buffer to transmit buffer
for(uint8_t i = 0; i < transmit_buffer_size; i++)
transmit_buffer[i] = buf[i];
// transmit data
transmitter.send(transmit_buffer, transmit_buffer_size);
// zero out the transmit buffer after use
memset(transmit_buffer, 0x00, 20);
这样做有什么好办法?