Я пытаюсь написать протокол последовательной связи между приложением C ++ и микроконтроллером ESP32. Основная структура использует 1 -байтовые заголовки, указывающая категорию данных, за которыми следуют различные длины данных массива байтов (я хочу кодировать целые числа и в основном плавает). Я проверил сторону ESP32 протокола, используя приложение бинарного терминала, и она имеет ожидаемое поведение, поэтому проблема связана со стороной приложения C ++, которая использует библиотеку Boost Asio (V 1.82.0). Каждый раз, когда я пытаюсь отправлять двоичные данные, используя метод синхронного записи, я получаю ошибку «Ручка недействительна», поэтому я думаю, что основная проблема заключается в том, что я не могу получить данные массива байтов в формат, приемлемый для библиотеки. Я пробовал различные методы передачи данных в функцию записи, включая просто передачу указателя в массив байтов, обертывание в вектор и преобразование в строку C ++, но все они получают одинаковую ошибку. Кроме того, я предполагаю, что чтение данных просто будет включать в себя изменение этого преобразования, но я не уверен. Ниже приведены мои основные методы настройки порта, отправки и получения данных до сих пор. < /P>
bool SerialInterface::begin(const char* port, long baudRate) {
try {
serialPort.open(port);
serialPort.set_option(asio::serial_port_base::baud_rate(baudRate));
serialPort.set_option(asio::serial_port_base::character_size(8));
serialPort.set_option(asio::serial_port_base::parity(asio::serial_port_base::parity::none));
serialPort.set_option(asio::serial_port_base::stop_bits(asio::serial_port_base::stop_bits::one));
serialPort.set_option(asio::serial_port_base::flow_control(asio::serial_port_base::flow_control::none));
}
catch (boost::system::system_error& e) {
cerr
Подробнее здесь: https://stackoverflow.com/questions/794 ... boost-asio
Правильный метод отправки и получения двоичных данных через последовательный порт с Boost Asio? ⇐ C++
Программы на C++. Форум разработчиков
1740863797
Anonymous
Я пытаюсь написать протокол последовательной связи между приложением C ++ и микроконтроллером ESP32. Основная структура использует 1 -байтовые заголовки, указывающая категорию данных, за которыми следуют различные длины данных массива байтов (я хочу кодировать целые числа и в основном плавает). Я проверил сторону ESP32 протокола, используя приложение бинарного терминала, и она имеет ожидаемое поведение, поэтому проблема связана со стороной приложения C ++, которая использует библиотеку Boost Asio (V 1.82.0). Каждый раз, когда я пытаюсь отправлять двоичные данные, используя метод синхронного записи, я получаю ошибку «Ручка недействительна», поэтому я думаю, что основная проблема заключается в том, что я не могу получить данные массива байтов в формат, приемлемый для библиотеки. Я пробовал различные методы передачи данных в функцию записи, включая просто передачу указателя в массив байтов, обертывание в вектор и преобразование в строку C ++, но все они получают одинаковую ошибку. Кроме того, я предполагаю, что чтение данных просто будет включать в себя изменение этого преобразования, но я не уверен. Ниже приведены мои основные методы настройки порта, отправки и получения данных до сих пор. < /P>
bool SerialInterface::begin(const char* port, long baudRate) {
try {
serialPort.open(port);
serialPort.set_option(asio::serial_port_base::baud_rate(baudRate));
serialPort.set_option(asio::serial_port_base::character_size(8));
serialPort.set_option(asio::serial_port_base::parity(asio::serial_port_base::parity::none));
serialPort.set_option(asio::serial_port_base::stop_bits(asio::serial_port_base::stop_bits::one));
serialPort.set_option(asio::serial_port_base::flow_control(asio::serial_port_base::flow_control::none));
}
catch (boost::system::system_error& e) {
cerr
Подробнее здесь: [url]https://stackoverflow.com/questions/79477967/proper-method-to-send-and-receive-binary-data-over-serial-port-with-boost-asio[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия