QSerialPort + Arduino Leonardo
- Войдите на сайт для отправки комментариев
Ср, 13/10/2021 - 22:34
После переподключения к USB, QSerialPort успешно считывает байты с arduino только после открытия и закрытия монитора порта в arduino IDE
Версия Qt 5.15.1 MinGW 32 bit. К порту прилка и до и после открытиязакрытия монитора подключается успешно. Ардуина питается от USB компа.
Код скетча:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("test");
}
Код подключения к порту в Qt:
bool ArduinoConnection::tryConnect()
{
bool success = false;
const auto infos = QSerialPortInfo::availablePorts();
for (const QSerialPortInfo &info : infos) {
if (info.description() == DESCRIPTION_STRING
&& info.manufacturer() == MANUFACTURER_STRING) {
m_port->setPort(info);
m_port->setDataBits(QSerialPort::Data8);
m_port->setParity(QSerialPort::NoParity);
m_port->setStopBits(QSerialPort::OneStop);
m_port->setFlowControl(QSerialPort::NoFlowControl);
m_port->setBaudRate(QSerialPort::Baud9600);
if (m_port->open(QIODevice::ReadWrite)) {
success = true;
break;
}
}
}
return success;
}

Не помогло.
Что еще было замечено: используя скетч ниже светодиод после рестарта не горит, после подключения к порту так же выключен. Но после закрытия порта методом QSerialPort::close() светодиод загорается. Далее, при открытом порте светодиод гаснет, а при закрытом горит. При открытии монитора порта из Arduino IDE светодиод загорается до перезагрузки платы, даже если закрыть IDE.
void setup() { pinMode(13, OUTPUT); Serial.begin(115200); while (!Serial); } void loop() { if (Serial) { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } }