|
#include "optomaprojectormanagement.h"
|
|
|
|
OptomaProjectorManagement::OptomaProjectorManagement(QObject *parent, QString ProjectorSerialPortName)
|
|
{
|
|
currentData = new QString();
|
|
serialPort = new QSerialPort(ProjectorSerialPortName);
|
|
connect(serialPort, SIGNAL(readyRead()), this, SLOT(ProjectorDataReceived()));
|
|
connect(serialPort, SIGNAL(error(QSerialPort::SerialPortError)), this, SLOT(OnConnectionError(QSerialPort::SerialPortError)));
|
|
//serialPort->close();
|
|
}
|
|
|
|
void OptomaProjectorManagement::OnConnectionError(QSerialPort::SerialPortError err){
|
|
if (err == QSerialPort::TimeoutError){
|
|
emit IsAliveResponse(false);
|
|
}
|
|
}
|
|
|
|
void OptomaProjectorManagement::OpenConnection(){
|
|
serialPort->open(QSerialPort::ReadWrite);
|
|
serialPort->setBaudRate(QSerialPort::Baud9600);
|
|
serialPort->setParity(QSerialPort::NoParity);
|
|
serialPort->setDataBits(QSerialPort::Data8);
|
|
serialPort->write(SEND_QUERYPWR_CMD);
|
|
emit IsAliveResponse(serialPort->waitForReadyRead(2000));
|
|
}
|
|
|
|
OptomaProjectorManagement::~OptomaProjectorManagement()
|
|
{
|
|
/*currentData = new QString();
|
|
serialPort = new QSerialPort("/dev/tty0");
|
|
serialPort->open(QSerialPort::ReadWrite);
|
|
serialPort->setBaudRate(QSerialPort::Baud9600);
|
|
serialPort->setParity(QSerialPort::NoParity);
|
|
serialPort->setDataBits(QSerialPort::Data8);
|
|
connect(serialPort, SIGNAL(readyRead()), this, SLOT(ProjectorDataReceived()));*/
|
|
disconnect(serialPort, SIGNAL(readyRead()), this, SLOT(ProjectorDataReceived()));
|
|
serialPort->close();
|
|
}
|
|
|
|
|
|
void OptomaProjectorManagement::ProjectorDataReceived(){
|
|
emit IsAliveResponse(true);
|
|
QString serialPortPlainData = serialPort->readAll();
|
|
currentData->append(serialPortPlainData);
|
|
if (currentData->contains("\r")){
|
|
QString dataToComp = currentData->remove('\r').remove('\n');
|
|
if (dataToComp.isEmpty()) return;
|
|
if (dataToComp.contains(OFF_PROJECTOR_STATE)){
|
|
emit ProjectorStatusReceived(false);
|
|
} else
|
|
emit ProjectorStatusReceived(true);
|
|
currentData->clear();
|
|
}
|
|
}
|
|
|
|
void OptomaProjectorManagement::GetPowerState(){
|
|
//connect(serialPort, SIGNAL(readyRead()), this, SLOT(ProjectorDataReceived()));
|
|
serialPort->write(SEND_QUERYPWR_CMD);
|
|
//disconnect(serialPort, SIGNAL(readyRead()), this, SLOT(ProjectorDataReceived()));
|
|
}
|
|
|
|
void OptomaProjectorManagement::TurnOff(){
|
|
serialPort->write(SEND_TURN_OFF_CMD);
|
|
}
|
|
|
|
void OptomaProjectorManagement::TurnOn(){
|
|
//connect(serialPort, SIGNAL(readyRead()), this, SLOT(ProjectorDataReceived()));
|
|
serialPort->write(SEND_TURN_ON_CMD);
|
|
//disconnect(serialPort, SIGNAL(readyRead()), this, SLOT(ProjectorDataReceived()));
|
|
}
|
|
|
|
void OptomaProjectorManagement::Freeze(){
|
|
serialPort->write(SEND_FREEZE_CMD);
|
|
}
|
|
|
|
void OptomaProjectorManagement::Unfreeze(){
|
|
serialPort->write(SEND_UNFREEZE_CMD);
|
|
}
|