Serial на Arduino Leonardo
- Войдите на сайт для отправки комментариев
Продублирую свою тему, т.к. почему то не могу найти её в списке тем в песочнице.
После переподключения к 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); } }
Проблема решена добавлением