Esempio n. 1
0
void CtrlComm::errorSlot(QAbstractSocket::SocketError) {
        LOG_ERROR << "socket error !\n";

        disconnectedSlot();
        sleep(1);
        connectToServer("127.0.0.1", 2001);
}
Esempio n. 2
0
DVRServer::DVRServer(int id, QObject *parent)
    : QObject(parent), m_configuration(id), m_devicesLoaded(false)
{
    m_api = new ServerRequestManager(this);

    connect(&m_configuration, SIGNAL(changed()), this, SIGNAL(changed()));
    connect(m_api, SIGNAL(loginSuccessful()), SLOT(updateCameras()));
    connect(m_api, SIGNAL(disconnected()), SLOT(disconnectedSlot()));

    connect(m_api, SIGNAL(loginRequestStarted()), this, SIGNAL(loginRequestStarted()));
    connect(m_api, SIGNAL(loginSuccessful()), this, SIGNAL(loginSuccessful()));
    connect(m_api, SIGNAL(serverError(QString)), this, SIGNAL(serverError(QString)));
    connect(m_api, SIGNAL(loginError(QString)), this, SIGNAL(loginError(QString)));
    connect(m_api, SIGNAL(disconnected()), this, SIGNAL(disconnected()));
    connect(m_api, SIGNAL(statusChanged(int)), this, SIGNAL(statusChanged(int)));
    connect(m_api, SIGNAL(onlineChanged(bool)), this, SIGNAL(onlineChanged(bool)));

    connect(&m_refreshTimer, SIGNAL(timeout()), SLOT(updateCameras()));
}
Esempio n. 3
0
void CtrlComm::run() {

        openComm();

        carSocket_ = new QTcpSocket();

        //       carSocket_->setSocketOption(QAbstractSocket::SendBufferSizeSocketOption,
        //       0);

        connect(carSocket_, SIGNAL(connected()), this, SLOT(connectedSlot()),
                Qt::DirectConnection);
        connect(carSocket_, SIGNAL(disconnected()), this, SLOT(disconnectedSlot()),
                Qt::DirectConnection);
        connect(carSocket_, SIGNAL(readyRead()), this, SLOT(readyReadSlot()),
                Qt::DirectConnection);
        connect(carSocket_, SIGNAL(error(QAbstractSocket::SocketError)), this,
                SLOT(errorSlot(QAbstractSocket::SocketError)), Qt::DirectConnection);

        connect(this, SIGNAL(sendToServerSignal(QByteArray)), this,
                SLOT(sendToServer(QByteArray)), Qt::DirectConnection);

        QSettings *configIniRead = new QSettings("xcar.ini", QSettings::IniFormat);

        QString ipResult = configIniRead->value("/cmd_server/ip").toString();
        QString portResult = configIniRead->value("/cmd_server/port").toString();

        delete configIniRead;

        char tmpdata[5] = {(unsigned char)0xff, (unsigned char)0x02,
                           (unsigned char)0x02, (unsigned char)0x80,
                           (unsigned char)0xff};

        connectToServer(ipResult.toStdString().c_str(), portResult.toShort());

        while (true) {

#if 1
                if (!serial_->isOpen()) {
                        sleep(1);
                        //    emit sendToServerSignal(tmpdata);
                        LOG_ERROR << "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
                        continue;
                }
                unsigned char tmp[5];
                memset(&tmp, 0x00, 5);
                int count = serial_->readData((char *)tmp, 5, timeOut);
                if (count <= 0) {
                        //        emit sendToServerSignal(tmpdata);
                        continue;
                }

                //                   LOG_ERROR<<"1 ===================================== not
                //                   find data\n ";
                //     carSocket_->write((const char*)tmp, count);
                //               LOG_ERROR<<"2 ===================================== not
                //               find data\n ";
                // carSocket_->waitForBytesWritten(timeOut);
                //           LOG_ERROR<<"3 ===================================== not find
                //           data\n ";
                //             continue;

                QByteArray okData((const char *)tmp);

                serialArray_.append(okData);
                //       LOG_DEBUG<<"[Serial], recv data: "<<serialArray_.toHex();

                // 0xFF 0xFF
                char spos[2] = {(unsigned char)0xff};
                char epos[2] = {(unsigned char)0xff};


                int startPos = serialArray_.indexOf(spos, 0);
                if (startPos == -1) {
                        LOG_ERROR << "1 not find data\n ";
                        serialArray_.clear();
                        continue;
                }

                int endPos = serialArray_.indexOf(epos, startPos + 1);
                if (endPos == -1) {
                        LOG_ERROR << "2 not find data\n ";
                        continue;
                }

                if (endPos - startPos == 1) {
                        serialArray_.clear();
                        //TODO !!! LOG_ERROR << "3 not find data\n ";
                        continue;
                }

                QByteArray serialBuf = serialArray_.mid(startPos, endPos - startPos + 1);

                if (serialBuf[1] == 0x02 &&
                                (serialBuf[3] != 0x80 || serialBuf[3] != 0x7f)) {
                        QByteArray t = serialBuf.toHex();
                        //  LOG_ERROR<<t;
                }
                serialArray_.clear();

                char light_front[5] = {(unsigned char)0xff, (unsigned char)0x03,
                                       (unsigned char)0x03, (unsigned char)0x01};
                char light_back[5] = {(unsigned char)0xff, (unsigned char)0x03,
                                      (unsigned char)0x03, (unsigned char)0x02};

                char power[3] = {(unsigned char)0xff, (unsigned char)0x07};

                if (serialBuf.indexOf(light_front, 0) == 0) {

                        emit sendLightMode(1);
                }
                else if (serialBuf.indexOf(light_back, 0) == 0) {

                        emit sendLightMode(2);
                }
                else if (serialBuf.indexOf(power, 0) == 0) {

                        short a = serialBuf[2];
                        short b = serialBuf[3];
                        int value = a << 8 | b;
                        emit showLeftPowerSignal(value);
                }

#endif
                //  sleep(0.1);
                if (isConnected_) {
                        //            f = sendToServer(tmp);
                        //                   QByteArray serialBuf;
                        //                 serialBuf.append("test socket\n");
                        emit sendToServerSignal(serialBuf);
                        //                  LOG_INFO<<"*****************\n";
                        //   printf("send: %x\n", tmp);
                } else
                        ; // printf("not connected !\n");
        }
}