clumsy synchronous read for opening
This commit is contained in:
parent
66410fdf22
commit
379ae89cb6
|
@ -28,10 +28,6 @@ DmxWidget::DmxWidget(QObject *parent)
|
||||||
, port_(new QSerialPort(this))
|
, port_(new QSerialPort(this))
|
||||||
{
|
{
|
||||||
connect(this, &DmxWidget::serialDataRead, this, &DmxWidget::parseMessageBuffer);
|
connect(this, &DmxWidget::serialDataRead, this, &DmxWidget::parseMessageBuffer);
|
||||||
connect(port_, &QSerialPort::readyRead, this, [this]() {
|
|
||||||
message_rx_buffer_.append(port_->readAll());
|
|
||||||
emit serialDataRead();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,6 +42,33 @@ void DmxWidget::open()
|
||||||
if (!port_->open(QIODeviceBase::ReadWrite))
|
if (!port_->open(QIODeviceBase::ReadWrite))
|
||||||
return;
|
return;
|
||||||
ENTTEC::Widget::open();
|
ENTTEC::Widget::open();
|
||||||
|
|
||||||
|
getSerialNumber();
|
||||||
|
getParameters(0);
|
||||||
|
if (port_->waitForReadyRead(500) && port_->bytesAvailable() >= 19)
|
||||||
|
{
|
||||||
|
char snhead[] = {ENTTEC::Pro::START_DELIMITER,
|
||||||
|
ENTTEC::Pro::OpGetWidgetSerial,
|
||||||
|
0x04, 0x00}; // expect 4 bytes of message data
|
||||||
|
message_rx_buffer_.append(port_->readAll());
|
||||||
|
if (!message_rx_buffer_.startsWith(snhead))
|
||||||
|
{
|
||||||
|
message_rx_buffer_.clear();
|
||||||
|
close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
parseMessageBuffer();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
connect(port_, &QSerialPort::readyRead, this, [this]() {
|
||||||
|
message_rx_buffer_.append(port_->readAll());
|
||||||
|
emit serialDataRead();
|
||||||
|
});
|
||||||
emit connectedChanged(isConnected());
|
emit connectedChanged(isConnected());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,6 +76,7 @@ void DmxWidget::open()
|
||||||
void DmxWidget::close()
|
void DmxWidget::close()
|
||||||
{
|
{
|
||||||
port_->close();
|
port_->close();
|
||||||
|
disconnect(port_, &QSerialPort::readyRead, nullptr, nullptr);
|
||||||
ENTTEC::Widget::close();
|
ENTTEC::Widget::close();
|
||||||
emit connectedChanged(isConnected());
|
emit connectedChanged(isConnected());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user