Boost Asio последовательное соединение не отправляется правильно после перезагрузки - PullRequest
0 голосов
/ 02 октября 2018

Я нашел один поток, который, похоже, имеет ту же самую проблему здесь, однако этот поток так и не получил ответа после того, как OP обновил его со своим исправлением:

Повышение последовательного порта asio, изначально отправляющего плохойdata

В основном, когда я пытаюсь подключиться к последовательному устройству с моей программой после перезагрузки компьютера, записи boost :: asio, похоже, не отправляют правильные данные.Но если я использую другую программу, чтобы открыть порт и отправить некоторые данные, а затем запустить мою программу, она отправит все правильно.

Я работаю на VS 2015 в Windows.

Вотмой код (я упростил количество данных, отправляемых при отправке для этого примера, поэтому игнорируйте дополнительные шаги):

 boost::asio::io_service io;
 boost::asio::serial_port serial;

 Serial::Serial(char * port, unsigned int baud): io(), serial(io, port)
 {
     serial.set_option(boost::asio::serial_port_base::baud_rate(baud));
 }

 void Serial::send(int cmd)
 {
     int cmU[] = {cmd};
     boost::asio::write(serial, boost::asio::buffer(cmU, 1));
 }

 void Serial::doStuff()
 {
     send(123);
 }

Я также экспериментировал с добавлением этой строки в конструкторе:

 PurgeComm(serial.lowest_layer().native_handle(), PURGE_RXABORT | PURGE_TXABORT | PURGE_RXCLEAR | PURGE_TXCLEAR);

Там все еще нет радости.

Чего мне не хватает?

...