增加sane协议双张机制
This commit is contained in:
parent
68051bb2df
commit
f14e49bc54
|
@ -376,7 +376,21 @@ void HGAPI DeviceUser::DeviceEventFunc(HGSaneDevice dev, HGUInt event, HGPointer
|
||||||
HGUInt HGAPI DeviceUser::DeviceImageFunc(HGSaneDevice dev, HGImage image, HGUInt type, HGPointer param)
|
HGUInt HGAPI DeviceUser::DeviceImageFunc(HGSaneDevice dev, HGImage image, HGUInt type, HGPointer param)
|
||||||
{
|
{
|
||||||
DeviceUser* p = (DeviceUser*)param;
|
DeviceUser* p = (DeviceUser*)param;
|
||||||
emit p->newImage(image);
|
HGUInt result = HGBASE_ERR_OK;
|
||||||
|
if (HGSANE_IMAGE_TYPE_DOUBLE == type)
|
||||||
|
{
|
||||||
|
emit p->abnormalImage(image, &result);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HGBASE_ERR_OK == result)
|
||||||
|
{
|
||||||
|
emit p->newImage(image);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return HGSANE_ERR_STOPSCAN;
|
||||||
|
}
|
||||||
|
|
||||||
return HGBASE_ERR_OK;
|
return HGBASE_ERR_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -124,6 +124,7 @@ private:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void newImage(void *image);
|
void newImage(void *image);
|
||||||
|
void abnormalImage(void *image, HGUInt *result);
|
||||||
void scanFinishEvent();
|
void scanFinishEvent();
|
||||||
void scanWorkingEvent();
|
void scanWorkingEvent();
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
#include "dialog_abnormalimage.h"
|
||||||
|
#include "ui_dialog_abnormalimage.h"
|
||||||
|
#include "sane_user/HGSane.h"
|
||||||
|
|
||||||
|
Dialog_AbnormalImage::Dialog_AbnormalImage(HGImage image, QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::Dialog_AbnormalImage)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
|
||||||
|
m_result = HGBASE_ERR_OK;
|
||||||
|
|
||||||
|
m_view = new HGImgView();
|
||||||
|
m_view->addImage(image);
|
||||||
|
ui->stackedWidget->addWidget(m_view);
|
||||||
|
ui->stackedWidget->setCurrentWidget(m_view);
|
||||||
|
}
|
||||||
|
|
||||||
|
Dialog_AbnormalImage::~Dialog_AbnormalImage()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
HGUInt Dialog_AbnormalImage::getResult()
|
||||||
|
{
|
||||||
|
return m_result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dialog_AbnormalImage::on_pushButton_reserve_clicked()
|
||||||
|
{
|
||||||
|
m_result = HGBASE_ERR_OK;
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Dialog_AbnormalImage::on_pushButton_discard_clicked()
|
||||||
|
{
|
||||||
|
m_result = HGBASE_ERR_FAIL;
|
||||||
|
close();
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
#ifndef DIALOG_ABNORMALIMAGE_H
|
||||||
|
#define DIALOG_ABNORMALIMAGE_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include "base/HGBase.h"
|
||||||
|
#include "HGImgView.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class Dialog_AbnormalImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Dialog_AbnormalImage : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit Dialog_AbnormalImage(HGImage image, QWidget *parent = nullptr);
|
||||||
|
~Dialog_AbnormalImage();
|
||||||
|
|
||||||
|
HGUInt getResult();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_pushButton_reserve_clicked();
|
||||||
|
|
||||||
|
void on_pushButton_discard_clicked();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::Dialog_AbnormalImage *ui;
|
||||||
|
|
||||||
|
HGUInt m_result;
|
||||||
|
HGImgView *m_view;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // DIALOG_ABNORMALIMAGE_H
|
|
@ -0,0 +1,58 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>Dialog_AbnormalImage</class>
|
||||||
|
<widget class="QDialog" name="Dialog_AbnormalImage">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>820</width>
|
||||||
|
<height>550</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QStackedWidget" name="stackedWidget">
|
||||||
|
<widget class="QWidget" name="page"/>
|
||||||
|
<widget class="QWidget" name="page_2"/>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_reserve">
|
||||||
|
<property name="text">
|
||||||
|
<string>Reserve</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="pushButton_discard">
|
||||||
|
<property name="text">
|
||||||
|
<string>Discard</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -32,6 +32,7 @@
|
||||||
#include "dialog_feedback.h"
|
#include "dialog_feedback.h"
|
||||||
#include "dialog_savemessagebox.h"
|
#include "dialog_savemessagebox.h"
|
||||||
#include "dialog_waitingocr.h"
|
#include "dialog_waitingocr.h"
|
||||||
|
#include "dialog_abnormalimage.h"
|
||||||
#include "base/HGInfo.h"
|
#include "base/HGInfo.h"
|
||||||
#include "huagao/hgscanner_error.h"
|
#include "huagao/hgscanner_error.h"
|
||||||
#include "base/HGTime.h"
|
#include "base/HGTime.h"
|
||||||
|
@ -371,6 +372,7 @@ MainWindow::MainWindow(const QString& appLang, QWidget *parent)
|
||||||
{
|
{
|
||||||
m_wndStatusBar->setDeviceStatusInfo(tr("Device %1 is open").arg(m_devUser->GetName()), false);
|
m_wndStatusBar->setDeviceStatusInfo(tr("Device %1 is open").arg(m_devUser->GetName()), false);
|
||||||
connect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)), Qt::DirectConnection);
|
connect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)), Qt::DirectConnection);
|
||||||
|
connect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)), Qt::BlockingQueuedConnection);
|
||||||
connect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()), Qt::QueuedConnection);
|
connect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()), Qt::QueuedConnection);
|
||||||
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
||||||
|
|
||||||
|
@ -427,6 +429,7 @@ MainWindow::~MainWindow()
|
||||||
if (nullptr != m_devUser)
|
if (nullptr != m_devUser)
|
||||||
{
|
{
|
||||||
disconnect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)));
|
disconnect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)));
|
||||||
|
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
||||||
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||||
delete m_devUser;
|
delete m_devUser;
|
||||||
|
@ -1311,6 +1314,15 @@ void MainWindow::on_newImage(void *image)
|
||||||
qDebug("on_newImage end, m_currScanCount=%d, seconds=%f", m_currScanCount, seconds);
|
qDebug("on_newImage end, m_currScanCount=%d, seconds=%f", m_currScanCount, seconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_abnormalImage(void *image, HGUInt *result)
|
||||||
|
{
|
||||||
|
HGImage img = nullptr;
|
||||||
|
HGBase_CloneImage((HGImage)image, 0, 0, &img);
|
||||||
|
Dialog_AbnormalImage dlg(img, this);
|
||||||
|
dlg.exec();
|
||||||
|
*result = dlg.getResult();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::on_scanWorkingEvent()
|
void MainWindow::on_scanWorkingEvent()
|
||||||
{
|
{
|
||||||
m_view->enableHighQuality(false);
|
m_view->enableHighQuality(false);
|
||||||
|
@ -4220,6 +4232,7 @@ void MainWindow::deleteDevUser()
|
||||||
if (nullptr != m_devUser)
|
if (nullptr != m_devUser)
|
||||||
{
|
{
|
||||||
disconnect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)));
|
disconnect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)));
|
||||||
|
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
||||||
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||||
m_devUser->Logout();
|
m_devUser->Logout();
|
||||||
|
@ -4482,6 +4495,7 @@ void MainWindow::on_act_selectDevice_triggered()
|
||||||
if (nullptr != m_devUser)
|
if (nullptr != m_devUser)
|
||||||
{
|
{
|
||||||
disconnect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)));
|
disconnect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)));
|
||||||
|
disconnect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)));
|
||||||
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
disconnect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()));
|
||||||
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
disconnect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()));
|
||||||
m_devUser->Logout();
|
m_devUser->Logout();
|
||||||
|
@ -4503,6 +4517,7 @@ void MainWindow::on_act_selectDevice_triggered()
|
||||||
m_devUser->Login();
|
m_devUser->Login();
|
||||||
m_wndStatusBar->setDeviceStatusInfo(tr("Device %1 is open").arg(m_devUser->GetName()), false);
|
m_wndStatusBar->setDeviceStatusInfo(tr("Device %1 is open").arg(m_devUser->GetName()), false);
|
||||||
connect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)), Qt::DirectConnection);
|
connect(m_devUser, SIGNAL(newImage(void*)), this, SLOT(on_newImage(void*)), Qt::DirectConnection);
|
||||||
|
connect(m_devUser, SIGNAL(abnormalImage(void*,HGUInt*)), this, SLOT(on_abnormalImage(void*,HGUInt*)), Qt::BlockingQueuedConnection);
|
||||||
connect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()), Qt::QueuedConnection);
|
connect(m_devUser, SIGNAL(scanWorkingEvent()), this, SLOT(on_scanWorkingEvent()), Qt::QueuedConnection);
|
||||||
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
connect(m_devUser, SIGNAL(scanFinishEvent()), this, SLOT(on_scanFinishEvent()), Qt::QueuedConnection);
|
||||||
#if !defined(HG_CMP_MSC)
|
#if !defined(HG_CMP_MSC)
|
||||||
|
|
|
@ -121,6 +121,7 @@ private slots:
|
||||||
void on_post_new_image(QString fileName);
|
void on_post_new_image(QString fileName);
|
||||||
void on_preview_image();
|
void on_preview_image();
|
||||||
void on_newImage(void *image);
|
void on_newImage(void *image);
|
||||||
|
void on_abnormalImage(void *image, HGUInt *result);
|
||||||
void on_scanFinishEvent();
|
void on_scanFinishEvent();
|
||||||
void on_scanWorkingEvent();
|
void on_scanWorkingEvent();
|
||||||
void on_m_pbtn_push_clicked();
|
void on_m_pbtn_push_clicked();
|
||||||
|
|
|
@ -226,6 +226,7 @@ SOURCES += \
|
||||||
../../../app/scanner2/dialog_upgrade.cpp \
|
../../../app/scanner2/dialog_upgrade.cpp \
|
||||||
../../../app/scanner2/dialog_writesettings.cpp \
|
../../../app/scanner2/dialog_writesettings.cpp \
|
||||||
../../../app/scanner2/dialog_waitingocr.cpp \
|
../../../app/scanner2/dialog_waitingocr.cpp \
|
||||||
|
../../../app/scanner2/dialog_abnormalimage.cpp \
|
||||||
../../../app/scanner2/device_user.cpp \
|
../../../app/scanner2/device_user.cpp \
|
||||||
../../../app/scanner2/graphicsscene.cpp \
|
../../../app/scanner2/graphicsscene.cpp \
|
||||||
../../../app/scanner2/main.cpp \
|
../../../app/scanner2/main.cpp \
|
||||||
|
@ -266,6 +267,7 @@ HEADERS += \
|
||||||
../../../app/scanner2/dialog_upgrade.h \
|
../../../app/scanner2/dialog_upgrade.h \
|
||||||
../../../app/scanner2/dialog_writesettings.h \
|
../../../app/scanner2/dialog_writesettings.h \
|
||||||
../../../app/scanner2/dialog_waitingocr.h \
|
../../../app/scanner2/dialog_waitingocr.h \
|
||||||
|
../../../app/scanner2/dialog_abnormalimage.h \
|
||||||
../../../app/scanner2/device_user.h \
|
../../../app/scanner2/device_user.h \
|
||||||
../../../app/scanner2/graphicsscene.h \
|
../../../app/scanner2/graphicsscene.h \
|
||||||
../../../app/scanner2/mainwindow.h \
|
../../../app/scanner2/mainwindow.h \
|
||||||
|
@ -300,6 +302,7 @@ FORMS += \
|
||||||
../../../app/scanner2/dialog_upgrade.ui \
|
../../../app/scanner2/dialog_upgrade.ui \
|
||||||
../../../app/scanner2/dialog_writesettings.ui \
|
../../../app/scanner2/dialog_writesettings.ui \
|
||||||
../../../app/scanner2/dialog_waitingocr.ui \
|
../../../app/scanner2/dialog_waitingocr.ui \
|
||||||
|
../../../app/scanner2/dialog_abnormalimage.ui \
|
||||||
../../../app/scanner2/mainwindow.ui \
|
../../../app/scanner2/mainwindow.ui \
|
||||||
../../../app/scanner2/widget_imgproc_base.ui \
|
../../../app/scanner2/widget_imgproc_base.ui \
|
||||||
../../../app/scanner2/widget_statusbar.ui \
|
../../../app/scanner2/widget_statusbar.ui \
|
||||||
|
|
|
@ -1134,6 +1134,8 @@ void HGAPI HGSaneDeviceImpl::ThreadFunc(HGThread thread, HGPointer param)
|
||||||
if (stopScan)
|
if (stopScan)
|
||||||
{
|
{
|
||||||
saneAPI.sane_cancel_api(p->m_devHandle);
|
saneAPI.sane_cancel_api(p->m_devHandle);
|
||||||
|
if (NULL != p->m_scanNotify)
|
||||||
|
p->m_scanNotify((int)SANE_EVENT_SCAN_FINISHED, NULL, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue