Arduino IDE, эквивалентный DataView?
Я работаю над проектом с командами Bluetooth между различными устройствами. Я хотел бы попытаться преобразовать строку в объект DataView на Arduino, чтобы я мог отправить ее через BLE, как эта функция, написанная на Javascript:
function str2DV(str) {
var buf = new ArrayBuffer(str.length);
var bufView = new Uint8Array(buf);
for (var i=0, strLen=str.length; i<strLen; i++) {
bufView[i] = str.charCodeAt(i);
}
var DV = new DataView(buf);
return DV;
}
Возможно ли это с Arduino? Я еще не нашел решения....
@NRav, 👍3
Обсуждение1 ответ
Лучший ответ:
В среде Arduino DataView бесполезен. в
Язык JavaScript, строка и массив байтов — это два очень
разные вещи. Вот почему вам нужно что-то вроде этого str2DV()
функция преобразования между ними. В C++ это одно и то же.
вещь: не нужно конвертировать. Иногда тип uint8_t
(также называемый
byte
) используется вместо char
для хранения двоичных данных, но вы
можно просто привести типы между этими типами. Приведение типов обычно компилируется
к нулю машинных инструкций, поскольку базовое представление данных
то же самое.
Например:
extern some_lib_function(const uint8_t *buffer, int buffer_length);
const char *my_message = "Hello, World!\n";
some_lib_function((uint8_t *) my_message, strlen(my_message));
Если ваша строка имеет форму объекта String
, а не простого
C-строка, затем используйте метод c_str()
, чтобы вернуть простую строку:
String my_message = "Hello, World!\n";
some_lib_function((uint8_t *) my_message.c_str(), my_message.length());
- как отправить данные в Adafruit Bluefruit Feather (32u4) через Bluetooth?
- Можно ли использовать WiFi и Bluetooth/BLE в одном проекте ESP32?
- ESP32 SerialBluetooth отключается в течение секунды после подключения, но не BLEDevice/BLEServer
- Код CRC8 не работает должным образом
- Загрузка эскиза в LinkIt ONE Timeout
- Проблема с ESP32 bluetooth
- Неожиданный символ добавляется в буферный массив char в serial monitor только при инициализации SD-карты
- Контрольный таймер задачи запускается во время инициализации Bluetooth
Вы видели эту библиотеку? https://github.com/bakercp/BufferUtils, @VE7JRO