windows — Серийные данные изначально неверны Переполнение стека

Я отправляю данные между трансивером XBee и моим ПК.

Проблема в том, что изначально (в моей программе) данные случайные символы. Только после открытия последовательного соединения в XCTU это работает.

Таким образом, последовательные данные отправляются правильно, но XCTU делает что-то для синхронизации моего компьютера с XBee. Скорость передачи данных установлена ​​на 9600 с обеих сторон.

Кто-нибудь знает, что делает XCTU? Или как я могу воспроизвести это в моей C ++ программе?

Надеемся, что изображение ниже объясняет, что происходит более четко:

введите описание изображения здесь

1

Решение

Настройки последовательного порта в Windows можно увидеть с помощью GetCommState и установить с помощью SetCommState. Используйте первый, чтобы увидеть, что установлен XCTU. Ваш код может затем использовать те же настройки, вызывая SetCommState.

2

Другие решения

Я нашел проблему. Я предполагал опции по умолчанию с объектом boost serial_port. После установки дополнительных параметров последовательная связь работает надежно.
Вот параметры, которые я в итоге установил:

port.set_option(asio::serial_port_base::baud_rate(9600));
port.set_option(asio::serial_port_base::character_size(8));
port.set_option(asio::serial_port_base::flow_control(asio::serial_port_base::flow_control::none));
port.set_option(asio::serial_port_base::parity(asio::serial_port_base::parity::none));
port.set_option(asio::serial_port_base::stop_bits(asio::serial_port_base::stop_bits::one));

где порт является объектом asio :: serial_port.

0

По вопросам рекламы [email protected]