fixed event connection

This commit is contained in:
Bernhard Trinnes 2018-06-13 23:36:32 +02:00 committed by Michael Zanetti
parent ac6318a10d
commit 12ea438ef7
2 changed files with 7 additions and 10 deletions

View File

@ -55,7 +55,6 @@ DeviceManager::DeviceSetupStatus DevicePluginSerialPortCommander::setupDevice(De
qCDebug(dcSerialPortCommander()) << "Setup successfully serial port" << interface; qCDebug(dcSerialPortCommander()) << "Setup successfully serial port" << interface;
SerialPortCommander *serialPortCommander = new SerialPortCommander(serialPort, this); SerialPortCommander *serialPortCommander = new SerialPortCommander(serialPort, this);
connect(serialPortCommander, &SerialPortCommander::commandReceived, this, &DevicePluginSerialPortCommander::onCommandReceived);
m_serialPortCommanders.insert(interface, serialPortCommander); m_serialPortCommanders.insert(interface, serialPortCommander);
} else { } else {
@ -85,17 +84,15 @@ DeviceManager::DeviceSetupStatus DevicePluginSerialPortCommander::setupDevice(De
qCWarning(dcSerialPortCommander()) << "Could not open serial port" << interface << serialPort->errorString(); qCWarning(dcSerialPortCommander()) << "Could not open serial port" << interface << serialPort->errorString();
return DeviceManager::DeviceSetupStatusFailure; return DeviceManager::DeviceSetupStatusFailure;
} }
qCDebug(dcSerialPortCommander()) << "Setup successfully serial port" << interface; qCDebug(dcSerialPortCommander()) << "Setup successfully serial port" << interface;
connect(serialPort, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(onSerialError(QSerialPort::SerialPortError)));
connect(serialPort, SIGNAL(readyRead()), this, SLOT(onReadyRead()));
SerialPortCommander *serialPortCommander = new SerialPortCommander(serialPort, this); SerialPortCommander *serialPortCommander = new SerialPortCommander(serialPort, this);
connect(serialPortCommander, SIGNAL(commandReceived(Device *)), this, SLOT(onCommandReceived(Device *)));
serialPortCommander->addInputDevice(device);
m_serialPortCommanders.insert(interface, serialPortCommander); m_serialPortCommanders.insert(interface, serialPortCommander);
} else { } else {
SerialPortCommander *serialPortCommander = m_serialPortCommanders.value(interface); SerialPortCommander *serialPortCommander = m_serialPortCommanders.value(interface);
//connect(serialPortCommander, SIGNAL(commandReceived(Device *), this, SLOT(onCommandReceived(Device *)); connect(serialPortCommander, SIGNAL(commandReceived(Device *)), this, SLOT(onCommandReceived(Device *)));
serialPortCommander->addInputDevice(device); serialPortCommander->addInputDevice(device);
} }
return DeviceManager::DeviceSetupStatusSuccess; return DeviceManager::DeviceSetupStatusSuccess;
@ -138,8 +135,8 @@ DeviceManager::DeviceError DevicePluginSerialPortCommander::discoverDevices(cons
deviceDescriptors.append(descriptor); deviceDescriptors.append(descriptor);
} else { } else {
qCDebug(dcSerialPortCommander()) << "Found Serial interface:" << port.portName(); qCDebug(dcSerialPortCommander()) << "Found serial port:" << port.portName();
QString description = port.manufacturer() + " | " + port.description(); QString description = port.manufacturer() + " " + port.description();
DeviceDescriptor descriptor(deviceClassId, port.portName(), description); DeviceDescriptor descriptor(deviceClassId, port.portName(), description);
ParamList parameters; ParamList parameters;
@ -190,6 +187,7 @@ void DevicePluginSerialPortCommander::deviceRemoved(Device *device)
serialPortCommander->removeInputDevice(device); serialPortCommander->removeInputDevice(device);
if (serialPortCommander->isEmpty()) { if (serialPortCommander->isEmpty()) {
m_serialPortCommanders.remove(interface); m_serialPortCommanders.remove(interface);
serialPortCommander->serialPort()->close();
serialPortCommander->deleteLater(); serialPortCommander->deleteLater();
} }
} }
@ -200,6 +198,7 @@ void DevicePluginSerialPortCommander::deviceRemoved(Device *device)
serialPortCommander->removeOutputDevice(); serialPortCommander->removeOutputDevice();
if (serialPortCommander->isEmpty()) { if (serialPortCommander->isEmpty()) {
m_serialPortCommanders.remove(interface); m_serialPortCommanders.remove(interface);
serialPortCommander->serialPort()->close();
serialPortCommander->deleteLater(); serialPortCommander->deleteLater();
} }
} }

View File

@ -45,8 +45,6 @@ public:
void init() override; void init() override;
private: private:
//QHash<Device *, QSerialPort *> m_outputSerialPorts;
//QHash<Device *, QSerialPort *> m_inputSerialPorts;
QHash<QString, SerialPortCommander *> m_serialPortCommanders; QHash<QString, SerialPortCommander *> m_serialPortCommanders;
private slots: private slots: