Я нашел один поток, который, похоже, имеет ту же самую проблему здесь, однако этот поток так и не получил ответа после того, как 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);
Там все еще нет радости.
Чего мне не хватает?