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))
|
||||
{
|
||||
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))
|
||||
return;
|
||||
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());
|
||||
}
|
||||
|
||||
|
@ -53,6 +76,7 @@ void DmxWidget::open()
|
|||
void DmxWidget::close()
|
||||
{
|
||||
port_->close();
|
||||
disconnect(port_, &QSerialPort::readyRead, nullptr, nullptr);
|
||||
ENTTEC::Widget::close();
|
||||
emit connectedChanged(isConnected());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user