Exemplo n.º 1
0
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("Barcode Decoder");

    this->timer = new QTimer(this);
    //QPainter *painter = new QPainter(this);
    Camera *camera = new Camera();
    Process *process = new Process();




    process->moveToThread(&decodeThread);
    decodeThread.start();

    camera->moveToThread(&cameraThread);
    cameraThread.start();


    connect(timer , SIGNAL(timeout()) , camera , SLOT(imgRequest()) );
    connect(camera, SIGNAL(sendImg(cv::Mat)) , ui->play , SLOT(loadImg(cv::Mat)) );
    connect(camera, SIGNAL(sendImg(cv::Mat)) , process , SLOT(getImgAndProcess(cv::Mat)) );
    connect(process, SIGNAL(sendIsBarcaode(bool)) , ui->play , SLOT(slotIsBarcodeLocated(bool)) );
    connect(process, SIGNAL(sendLoc(cv::Rect)) , ui->play , SLOT(slotGetBarcodeLocation(cv::Rect)) );
    connect(process, SIGNAL(sendBarcodeImg(cv::Mat)) , this , SLOT(updateBarcodeImg(cv::Mat)) );
    connect(process, SIGNAL(sendBarcode(QString)) , this , SLOT(updateBarcode(QString)) );
    
    connect(ui->close, SIGNAL(pressed()) , ui->play, SLOT(cleanScrean()) );
    connect(ui->start, SIGNAL(pressed()) , ui->play, SLOT(startDisplay()) );
    //connect(ui->checkBox, SIGNAL(stateChanged(int)) , camera , SLOT(autofocus(int)) );
    connect(ui->focusValue, SIGNAL(sliderReleased()) , this , SLOT(getSliderValue()) );
    //connect(this , SIGNAL(focusNum(int)) , camera , SLOT(focusValue(int)) );
    connect(ui->checkBox , SIGNAL(clicked(bool)) , ui->focusValue, SLOT(setEnabled(bool)) );
    //connect(camera , SIGNAL(cameraCheck(bool)) , this , SLOT(slotCameraCheck(bool)) );
    //connect(ui->start, SIGNAL(pressed()) , camera , SLOT(autoFocusCheck()) );

    connect(ui->start, SIGNAL(pressed()) , camera , SLOT(sendID()) );
    connect(camera, SIGNAL(cameraID(int)) , this, SLOT(checkCamera(int)) );
    connect(this , SIGNAL(focusNum(int)) , this, SLOT(setCameraFocusValue(int)) );
    connect(ui->checkBox , SIGNAL(stateChanged(int)) , this , SLOT(setFocusStatus(int)) );



    //camera->autoFocusCheck();

    ui->close->setEnabled(false);
    ui->checkBox->setEnabled(false);
    ui->focusValue->setEnabled(false);

    this->cameraFocus = false;

    //this->timer->start(33);//using timer to trigger update

}
Exemplo n.º 2
0
/**
 * @brief KGuardiantServer::run
 */
void KGuardiantServer::run()
{
    //Bloque de código principal.
    qDebug() << "KGuardiantServer.Run is executing";
    log->log("KGuardiantServer.Run is executing");



    cam = new DeviceMgr(this);
    clock = new QTimer(this);
    clock->setInterval(300);
    clock->setSingleShot(false);

    connect(cam,
            SIGNAL(finished()),
            cam,
            SLOT(deleteLater()));

    connect(clock,
            SIGNAL(timeout()),
            cam,
            SLOT(requestImage()));

    detector = new MovementDetector(this);

    connect(cam,
            SIGNAL(newImage(cv::Mat&)),
            detector,
            SLOT(processImg(cv::Mat&)),
                 Qt::DirectConnection);
    connect(cam,
            SIGNAL(newImage(cv::Mat&,cv::Mat&)),
            detector,
            SLOT(processImg(cv::Mat&,cv::Mat&))
            ,Qt::DirectConnection);

    connect(detector,
            SIGNAL(processedImg(QByteArray)),
            &server,
            SLOT(sendImg(QByteArray)));

    connect(detector,
            SIGNAL(finished()),
            detector,
            SLOT(deleteLater()));


    console = new Console(this);

    connect(console,SIGNAL(finished()),console,SLOT(deleteLater()));
    connect(console,SIGNAL(startServer()),&server,SLOT(startServer()));
    connect(console,SIGNAL(stopServer()),&server,SLOT(stopServer()));
    connect(console,SIGNAL(checkClients()),&server,SLOT(requestClients()));
    connect(&server,
            SIGNAL(clientList(QHash<qintptr,TCPConnection*>*)),
            console,
            SLOT(printClients(QHash<qintptr,TCPConnection*>*)));
    connect(console,SIGNAL(finish()),this,SLOT(quit()));




    cam->start();
    detector->start();
    clock->start();
    server.startServer();
    //console->start();
    //QTimer::singleShot(10,console,SLOT(startC()));
    //Débese chamar a quit() para finalizar o bucle de eventos do sistema.
    //quit();
}