#include #include #include #include #include #include #include #include #include #include "ui/mainwindow.h" #include "items/itemstore.h" #include "mainobject.h" #include "programmode.h" void sigHandler(int s) { std::signal(s, SIG_DFL); QCoreApplication *app = QCoreApplication::instance(); if(app) app->quit(); } int main(int argc, char *argv[]) { QCoreApplication::setOrganizationName("UVOS"); QCoreApplication::setOrganizationDomain("uvos.xyz"); QCoreApplication::setApplicationName("SHinterface"); QCoreApplication::setApplicationVersion("0.6"); QStringList args; for(int i = 0; i < argc; ++i) args<connectToHost(host, port, QIODevice::ReadWrite); if(!microSocket->waitForConnected(1000)) { qCritical()<<"Can not connect to tcp micro"; MainObject::storeJsonObjectToDisk(settingsPath, json); if(programMode == PROGRAM_MODE_PRIMARY) QMessageBox::critical(nullptr, "Error", "Can not connect to tcp micro"); return 1; } microDevice = microSocket; } else { QString port = json["MicroSerialPort"].toString("ttyUSB0"); json["MicroSerialPort"] = port; int baud = json["MicroSerialBaud"].toInt(38400); json["MicroSerialBaud"] = baud; QSerialPort *microPort = new QSerialPort; microPort->setPortName(port); microPort->setBaudRate(baud); microPort->open(QIODevice::ReadWrite); if(!microPort->isOpen()) { qCritical()<<"Can not open serial port"<load(uiSettings); QObject::connect(&mainObject.micro, SIGNAL(textRecived(QString)), w, SLOT(changeHeaderLableText(QString))); QObject::connect(&mainObject.micro, SIGNAL(textRecived(QString)), w, SLOT(changeHeaderLableText(QString))); QObject::connect(w, &MainWindow::sigSetRgb, &mainObject.micro, &Microcontroller::changeRgbColor); QObject::connect(w, &MainWindow::sigSave, &mainObject, [&mainObject, settingsPath](){mainObject.storeToDisk(settingsPath);}); QObject::connect(w, &MainWindow::createdItem, &globalItems, &ItemStore::addItem); w->show(); } retVal = a->exec(); if(programMode != PROGRAM_MODE_HEADLESS_PRIMARY) { QJsonObject uiSettingsJson; w->store(uiSettingsJson); MainObject::storeJsonObjectToDisk(uiSettingsPath, uiSettingsJson); } delete w; delete microDevice; } else { SecondaryMainObject mainObject(parser.value(hostOption), parser.value(portOption).toInt()); MainWindow w(&mainObject); QJsonObject uiSettings = MainObject::getJsonObjectFromDisk(uiSettingsPath); w.load(uiSettings); QObject::connect(&w, &MainWindow::createdItem, &globalItems, &ItemStore::addItem); QObject::connect(&w, &MainWindow::sigSave, mainObject.tcpClient, &TcpClient::sendItems); w.show(); retVal = a->exec(); QJsonObject uiSettingsJson; w.store(uiSettingsJson); MainObject::storeJsonObjectToDisk(uiSettingsPath, uiSettingsJson); } delete a; return retVal; }