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);
}
}
Проблема решена добавлением