This commit is contained in:
parent
e2350a6942
commit
37ddafb4c4
101
Parameters.h
101
Parameters.h
|
@ -1,101 +0,0 @@
|
||||||
#pragma once
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
//#define Color 3
|
|
||||||
|
|
||||||
typedef enum Scan_Mode
|
|
||||||
{
|
|
||||||
SM_GRAY,
|
|
||||||
SM_COLOR
|
|
||||||
} ScanMode;
|
|
||||||
|
|
||||||
const std::string ScanPaperTypes[] =
|
|
||||||
{
|
|
||||||
"A4",
|
|
||||||
"A3"
|
|
||||||
};
|
|
||||||
|
|
||||||
const int SPTSizes[] = {1728, 1632};
|
|
||||||
|
|
||||||
typedef enum Scan_Paper_Type
|
|
||||||
{
|
|
||||||
SPT_A4,
|
|
||||||
SPT_A3
|
|
||||||
}ScanPaperType;
|
|
||||||
|
|
||||||
#ifdef A3
|
|
||||||
|
|
||||||
// 图像像素值
|
|
||||||
#define IMG_HEIGHT 3600
|
|
||||||
#define IMG_WIDTH 2592 * 2
|
|
||||||
#define SPI_COLOR 0x04501003 //0x0cf01002, 0x04501003
|
|
||||||
#define SPI_GRAY 0x0cf01002
|
|
||||||
|
|
||||||
// 300 dpi 图像宽度像素值(目前仅为双面扫描,故尺寸为单面尺寸乘以2)
|
|
||||||
#define IMG_WIDTH_300DPI 3672 * 2
|
|
||||||
|
|
||||||
// 200 dpi 图像宽度像素值(目前仅为双面扫描,故尺寸为单面尺寸乘以2)
|
|
||||||
#define IMG_WIDTH_200DPI 2448 * 2
|
|
||||||
|
|
||||||
#define IMG_WIDTH_150DPI 1836 * 2
|
|
||||||
|
|
||||||
#define IMG_HEIGHT_200DPI IMG_HEIGHT
|
|
||||||
|
|
||||||
#define IMG_HEIGHT_300DPI IMG_HEIGHT * 1.5
|
|
||||||
|
|
||||||
#define IMG_HEIGHT_150DPI IMG_HEIGHT * 0.75
|
|
||||||
|
|
||||||
//原始图像相对于200dpi的倍数
|
|
||||||
#define IMG_W_RADIO 1
|
|
||||||
#define IMG_H_RADIO 1
|
|
||||||
#define FRAME_COUNT 4
|
|
||||||
|
|
||||||
|
|
||||||
#else
|
|
||||||
// 300 dpi 图像宽度像素值(目前仅为双面扫描,故尺寸为单面尺寸乘以2)
|
|
||||||
|
|
||||||
#define IMG_WIDTH_300DPI 2592 * 2
|
|
||||||
|
|
||||||
// 200 dpi 图像宽度像素值(目前仅为双面扫描,故尺寸为单面尺寸乘以2)
|
|
||||||
#define IMG_WIDTH_200DPI 1728 * 2
|
|
||||||
|
|
||||||
#define IMG_WIDTH_150DPI 1296 * 2
|
|
||||||
|
|
||||||
|
|
||||||
#define IMG_HEIGHT_200DPI 3600
|
|
||||||
|
|
||||||
#define IMG_HEIGHT_300DPI 4050
|
|
||||||
|
|
||||||
#define IMG_HEIGHT_150DPI 2025
|
|
||||||
|
|
||||||
//原始图像相对于200dpi 系数
|
|
||||||
#define IMG_W_RADIO 1/1.5
|
|
||||||
#define IMG_H_RADIO 1
|
|
||||||
|
|
||||||
// 图像像素值
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef HAS_UV
|
|
||||||
// #define SPI_COLOR 0x03D81001
|
|
||||||
// #define SPI_GRAY 0x13001000
|
|
||||||
#define SPI_COLOR 0x05181001
|
|
||||||
#define SPI_GRAY 0x19501000
|
|
||||||
// 0x19501000, 0x05181001
|
|
||||||
#else
|
|
||||||
const int SPI_SP = 0x04b0;
|
|
||||||
const int SPI_SAMPLE = 256;
|
|
||||||
const int SPI_COLOR_MODE = SM_COLOR;
|
|
||||||
const int SCAN_PAPER_TYPE = SPT_A4;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const int IMG_HEIGHT = 9000;
|
|
||||||
const int IMG_V4L_WIDTH = SPTSizes[SCAN_PAPER_TYPE];
|
|
||||||
const int FRAME_COUNT = 3;
|
|
||||||
const int TEST_FRAME = 1;
|
|
||||||
const int TEST_ENABLE = 0;
|
|
||||||
const int LED_ENABLE = 1;
|
|
||||||
const bool SAVE_ENABLE = true;
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -18,11 +18,10 @@ std::string Properties::GetProperty(const std::string& key) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//前面把配置文件参数读取 分成key和val放入map,从map取出val
|
|
||||||
std::string Properties::GetProperty(const std::string& key, const std::string& defaultValue) const {
|
std::string Properties::GetProperty(const std::string& key, const std::string& defaultValue) const {
|
||||||
|
|
||||||
if (key.compare("fpga.correctColor.BOffset") == 0)
|
if (key.compare("fpga.correctColor.BOffset") == 0)
|
||||||
printf("Get Config File Size (path: /usr/local/huago/ “properties” ) = %d \r\n",properties.size());
|
printf("Get Config File Size (path: /usr/local/huago/ <EFBFBD><EFBFBD>properties<EFBFBD><EFBFBD> ) = %d \r\n",properties.size());
|
||||||
if (properties.find(key) == properties.end()) {
|
if (properties.find(key) == properties.end()) {
|
||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
|
@ -34,7 +33,7 @@ std::vector<std::string> Properties::GetPropertyNames() const {
|
||||||
return keys;
|
return keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
//把配置文件参数写入map
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>map
|
||||||
void Properties::AddProperty(const std::string& key, const std::string& value) {
|
void Properties::AddProperty(const std::string& key, const std::string& value) {
|
||||||
if (properties.find(key) == properties.end()) {
|
if (properties.find(key) == properties.end()) {
|
||||||
keys.push_back(key);
|
keys.push_back(key);
|
||||||
|
|
60
Scanner.cpp
60
Scanner.cpp
|
@ -37,7 +37,6 @@ Scanner::Scanner(ScannerGlue glue)
|
||||||
{
|
{
|
||||||
if (fc.updatefpga())
|
if (fc.updatefpga())
|
||||||
{
|
{
|
||||||
//system("sh /etc/reloadfpga.sh");
|
|
||||||
system("poweroff");
|
system("poweroff");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -77,17 +76,14 @@ Scanner::Scanner(ScannerGlue glue)
|
||||||
motorZouzhi.setSpeed(4000);
|
motorZouzhi.setSpeed(4000);
|
||||||
motorCuozhi.setSpeed(3000);
|
motorCuozhi.setSpeed(3000);
|
||||||
motorCuozhi.setDirection(false);
|
motorCuozhi.setDirection(false);
|
||||||
//sensor->isPaperAtScan();
|
|
||||||
//system("cat /sys/class/gpio/gpio226/value");
|
|
||||||
//sensor->enableDoubleSensor(true);
|
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
||||||
//sensor->enableDoubleSensor(false);
|
|
||||||
FsmState::setScanner(this);
|
FsmState::setScanner(this);
|
||||||
threadRunMessageLoop = std::thread(&Scanner::runMessageLoop, this);
|
threadRunMessageLoop = std::thread(&Scanner::runMessageLoop, this);
|
||||||
Motor::enablePower(true);
|
Motor::enablePower(true);
|
||||||
this_thread::sleep_for(std::chrono::milliseconds(200));
|
this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||||
//meminfo = MemoryInfo::GetInstance();
|
|
||||||
//GetSysInfo();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Scanner::~Scanner()
|
Scanner::~Scanner()
|
||||||
|
@ -111,18 +107,11 @@ void Scanner::updateSpeedMode(int speed)
|
||||||
m_scaninfo.SpeedMode=3;
|
m_scaninfo.SpeedMode=3;
|
||||||
printf("速度模式:%d dpi:%d 颜色:%d \n",m_scaninfo.SpeedMode,m_config.params.dpi,m_config.params.isColor);
|
printf("速度模式:%d dpi:%d 颜色:%d \n",m_scaninfo.SpeedMode,m_config.params.dpi,m_config.params.isColor);
|
||||||
unsigned int t_dpi = m_config.params.dpi;
|
unsigned int t_dpi = m_config.params.dpi;
|
||||||
// if(typeid(*capturer)==typeid(MonoCapturer))
|
|
||||||
// {
|
|
||||||
// if(m_config.params.dpi==0x03&& m_scansysinfo->IsSmallRam())
|
|
||||||
// t_dpi=0x02;
|
|
||||||
// else
|
|
||||||
// t_dpi = m_config.params.dpi;
|
|
||||||
// }
|
|
||||||
if(typeid(*capturer)==typeid(MultiFrameCapture))
|
if(typeid(*capturer)==typeid(MultiFrameCapture))
|
||||||
if(m_config.params.pageSize == 17 || m_config.params.pageSize == 19) //长文稿采用600dpi模式扫描
|
if(m_config.params.pageSize == 17 || m_config.params.pageSize == 19) //长文稿采用600dpi模式扫描
|
||||||
t_dpi = 3;
|
t_dpi = 3;
|
||||||
|
|
||||||
|
|
||||||
motorCuozhi.speedChange(m_scaninfo.SpeedMode, t_dpi,m_config.params.isColor);
|
motorCuozhi.speedChange(m_scaninfo.SpeedMode, t_dpi,m_config.params.isColor);
|
||||||
motorZouzhi.speedChange(m_scaninfo.SpeedMode, t_dpi,m_config.params.isColor);
|
motorZouzhi.speedChange(m_scaninfo.SpeedMode, t_dpi,m_config.params.isColor);
|
||||||
}
|
}
|
||||||
|
@ -149,19 +138,15 @@ void Scanner::runMessageLoop()
|
||||||
while (bMsgLoop)
|
while (bMsgLoop)
|
||||||
{
|
{
|
||||||
ScanEvent evt = sysEvent.Take();
|
ScanEvent evt = sysEvent.Take();
|
||||||
//LOG("\n---------------------%d--------------------------\n", evt);
|
|
||||||
fsmState = fsmState->on_event(evt);
|
fsmState = fsmState->on_event(evt);
|
||||||
//printf("current fsmState =%s ",typeid(*fsmState).name());
|
|
||||||
processevent(fsmState, evt);
|
processevent(fsmState, evt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Scanner::processevent(FsmState *fsmState, ScanEvent event)
|
void Scanner::processevent(FsmState *fsmState, ScanEvent event)
|
||||||
{
|
{
|
||||||
LOG("processevent Event:%d\n", (int)event);
|
|
||||||
if (fsmState == nullptr)
|
if (fsmState == nullptr)
|
||||||
{
|
{
|
||||||
LOG("processevent BBBBBBBBBBBBBB Event:%d\n", (int)event);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,20 +196,14 @@ void Scanner::runScan()
|
||||||
motorZouzhi.start();
|
motorZouzhi.start();
|
||||||
motorCuozhi.pauseWaitForThread();
|
motorCuozhi.pauseWaitForThread();
|
||||||
|
|
||||||
|
|
||||||
if (!isPaperInit)
|
if (!isPaperInit)
|
||||||
{
|
{
|
||||||
|
preFeed();
|
||||||
preFeed();
|
|
||||||
|
|
||||||
isPaperInit = true;
|
isPaperInit = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
this_thread::sleep_for(std::chrono::milliseconds(200));
|
this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||||
imageindex = 0;
|
imageindex = 0;
|
||||||
//*capturer->setFPGATriggerMode(false, 0);
|
|
||||||
|
|
||||||
//capturer->setFanMode(3);
|
|
||||||
|
|
||||||
sensor->resetPaperPin();
|
sensor->resetPaperPin();
|
||||||
|
|
||||||
|
@ -248,22 +227,15 @@ void Scanner::runScan()
|
||||||
{
|
{
|
||||||
if (!sensor->waitPaperStandBy(0))
|
if (!sensor->waitPaperStandBy(0))
|
||||||
{
|
{
|
||||||
// this_thread::sleep_for(std::chrono::milliseconds(200));
|
|
||||||
put(S_EVT_STOP_SCAN);
|
put(S_EVT_STOP_SCAN);
|
||||||
LOG("STOP STOP STOP RUNSCAN \n");
|
LOG("STOP STOP STOP RUNSCAN \n");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
//LOG(" Detect Feeder loaded ,Paper Ready !!! \n");
|
|
||||||
}
|
|
||||||
|
|
||||||
sensor->enableDoubleSensor(m_config.params.doubleFeeded);
|
sensor->enableDoubleSensor(m_config.params.doubleFeeded);
|
||||||
//LOG("enableDoubleSensor QQQQQQQ:%s %s\n", m_config.params.doubleFeeded ? "true" : "false",GetCurrentTimeStamp(2).c_str());
|
|
||||||
if (m_DstScannum == 0) //被取消扫描了
|
if (m_DstScannum == 0) //被取消扫描了
|
||||||
{
|
{
|
||||||
LOG("canceled canceled canceled 999999999999999999999999999999999999999999 \n");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -271,14 +243,12 @@ void Scanner::runScan()
|
||||||
if (!sensor->isPaperStandby())
|
if (!sensor->isPaperStandby())
|
||||||
{
|
{
|
||||||
put(S_EVT_STOP_SCAN);
|
put(S_EVT_STOP_SCAN);
|
||||||
LOG("START SCAN LOOP STOP STOP STOP\n");
|
|
||||||
isRested = false;
|
isRested = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
isRested = false;
|
isRested = false;
|
||||||
if (!sensor->waitPaperIn(3000))//
|
if (!sensor->waitPaperIn(3000))//
|
||||||
{
|
{
|
||||||
LOG("START SCAN LOOP S_EVT_JAM_IN S_EVT_JAM_IN S_EVT_JAM_IN\n");
|
|
||||||
if (!m_isDoublePaper)
|
if (!m_isDoublePaper)
|
||||||
{
|
{
|
||||||
m_glue.m_deviceevent(4, "Feed error");
|
m_glue.m_deviceevent(4, "Feed error");
|
||||||
|
@ -308,7 +278,6 @@ void Scanner::runScan()
|
||||||
max = 200;
|
max = 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG("paper pauseWaitForThread \n");
|
|
||||||
waitpapertime = 200;
|
waitpapertime = 200;
|
||||||
sw2.reset();
|
sw2.reset();
|
||||||
while (!sensor->waitPaperOut(waitpapertime) && i < max)
|
while (!sensor->waitPaperOut(waitpapertime) && i < max)
|
||||||
|
@ -321,8 +290,6 @@ void Scanner::runScan()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("等待纸张出去?????????????%f\r\n",sw2.elapsed_ms());
|
|
||||||
LOG("paper isPaperIn \n");
|
|
||||||
if (i == max && sensor->isPaperIn())
|
if (i == max && sensor->isPaperIn())
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -343,7 +310,6 @@ void Scanner::runScan()
|
||||||
capturer->stopsnap(b_autosize);
|
capturer->stopsnap(b_autosize);
|
||||||
capturer->waitsnapdone(1);//等待采集完成
|
capturer->waitsnapdone(1);//等待采集完成
|
||||||
this_thread::sleep_for(std::chrono::milliseconds(500));//200 80ms 600 260ms
|
this_thread::sleep_for(std::chrono::milliseconds(500));//200 80ms 600 260ms
|
||||||
LOG("\n ----------------EXIT 11111---------------- \n");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//LOG("\nclose double sensor %s\n",GetCurrentTimeStamp(2).c_str());
|
//LOG("\nclose double sensor %s\n",GetCurrentTimeStamp(2).c_str());
|
||||||
|
@ -366,8 +332,6 @@ void Scanner::runScan()
|
||||||
{
|
{
|
||||||
delay = 0;
|
delay = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//LOG("AutoSize sleep_for delay=%d \n",delay);
|
|
||||||
this_thread::sleep_for(std::chrono::milliseconds(delay));//200 80ms 600 260ms
|
this_thread::sleep_for(std::chrono::milliseconds(delay));//200 80ms 600 260ms
|
||||||
}
|
}
|
||||||
if(b_autosize)
|
if(b_autosize)
|
||||||
|
@ -387,10 +351,8 @@ void Scanner::runScan()
|
||||||
capturer->stopsnap(b_autosize);
|
capturer->stopsnap(b_autosize);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
//std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG("\nclose b_autosize %s\n",GetCurrentTimeStamp(2).c_str());
|
|
||||||
capturer->stopsnap(b_autosize);
|
capturer->stopsnap(b_autosize);
|
||||||
capturer->waitsnapdone(m_isDoublePaper || m_jamPaper);//等待采集完成
|
capturer->waitsnapdone(m_isDoublePaper || m_jamPaper);//等待采集完成
|
||||||
m_DstScannum--;
|
m_DstScannum--;
|
||||||
|
@ -399,7 +361,6 @@ void Scanner::runScan()
|
||||||
|
|
||||||
if (m_DstScannum == 0)
|
if (m_DstScannum == 0)
|
||||||
{
|
{
|
||||||
LOG("\n ----------------EXIT 2222 cnt=%d---------------- \n",m_DstScannum);
|
|
||||||
this_thread::sleep_for(std::chrono::milliseconds(200));
|
this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||||
|
|
||||||
put(S_EVT_STOP_SCAN);
|
put(S_EVT_STOP_SCAN);
|
||||||
|
@ -422,8 +383,6 @@ void Scanner::runScan()
|
||||||
printf("一张纸完成时间:%f\r\n",sw1.elapsed_ms());
|
printf("一张纸完成时间:%f\r\n",sw1.elapsed_ms());
|
||||||
if( m_config.params.dpi == 3)
|
if( m_config.params.dpi == 3)
|
||||||
this_thread::sleep_for(std::chrono::milliseconds(3000));
|
this_thread::sleep_for(std::chrono::milliseconds(3000));
|
||||||
//else if( m_config.params.dpi == 1)
|
|
||||||
//this_thread::sleep_for(std::chrono::milliseconds(50));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_DstScannum = 0;
|
m_DstScannum = 0;
|
||||||
|
@ -438,8 +397,6 @@ void Scanner::runScan()
|
||||||
capturer->setFanMode(0);
|
capturer->setFanMode(0);
|
||||||
|
|
||||||
|
|
||||||
//capturer->close();
|
|
||||||
|
|
||||||
LOG("\n--------------------------scan done --------------------------------\n");
|
LOG("\n--------------------------scan done --------------------------------\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -447,7 +404,6 @@ void Scanner::runScan()
|
||||||
void Scanner::CreatCorrectData(int correctmode)
|
void Scanner::CreatCorrectData(int correctmode)
|
||||||
{
|
{
|
||||||
m_correctting = true;
|
m_correctting = true;
|
||||||
LOG("\n-----------------校正模式 %d-----------------------\n",correctmode);
|
|
||||||
capturer->createCorrect(correctmode);
|
capturer->createCorrect(correctmode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -463,7 +419,7 @@ void Scanner::preFeed()
|
||||||
std::string Scanner::GetSysInfo()
|
std::string Scanner::GetSysInfo()
|
||||||
{
|
{
|
||||||
meminfo = MemoryInfo::GetInstance();
|
meminfo = MemoryInfo::GetInstance();
|
||||||
LOG(" GetSysInfo-------- \n");
|
|
||||||
auto scannerinfo = GetScanInfo();
|
auto scannerinfo = GetScanInfo();
|
||||||
auto fwverion = mapFradme_SP[scannerinfo.SpeedMode].FWVERSIO;
|
auto fwverion = mapFradme_SP[scannerinfo.SpeedMode].FWVERSIO;
|
||||||
ScannerSysInfo info = {
|
ScannerSysInfo info = {
|
||||||
|
@ -482,7 +438,7 @@ std::string Scanner::GetSysInfo()
|
||||||
.Have_EthernPort = 0,
|
.Have_EthernPort = 0,
|
||||||
.ServiceVersion = fwverion,
|
.ServiceVersion = fwverion,
|
||||||
.UsbProtocol = 1.0};
|
.UsbProtocol = 1.0};
|
||||||
LOG("FPGAVersion=%08x \n",info.FPGAVersion);
|
|
||||||
m_scansysinfo.reset(new SysInforTool(info));
|
m_scansysinfo.reset(new SysInforTool(info));
|
||||||
return m_scansysinfo->GetSysInfo();
|
return m_scansysinfo->GetSysInfo();
|
||||||
}
|
}
|
||||||
|
|
147
Sensor.cpp
147
Sensor.cpp
|
@ -152,40 +152,38 @@ void Sensor::monitor()
|
||||||
while (bMonitor)
|
while (bMonitor)
|
||||||
{
|
{
|
||||||
ret = poll(&pfd, 1, 1000);
|
ret = poll(&pfd, 1, 1000);
|
||||||
if (ret > 0)
|
if (ret <= 0)
|
||||||
{
|
{
|
||||||
if (pfd.revents & POLLPRI)
|
continue;
|
||||||
|
}
|
||||||
|
if (pfd.revents & POLLPRI)
|
||||||
|
{
|
||||||
|
|
||||||
|
lseek(pfd.fd, 0, SEEK_SET);
|
||||||
|
num = read(pfd.fd, buf, 8);
|
||||||
|
buf[num - 1] = '\0';
|
||||||
|
ret = atoi(buf);
|
||||||
|
//ftt.append_log(ret?"in":"out");
|
||||||
|
if (ret)
|
||||||
{
|
{
|
||||||
LOG(" ------------------------ scanpin running--------------------- \n");
|
printf("检测纸张进入 time:%f\r\n",sw2.elapsed_ms());
|
||||||
lseek(pfd.fd, 0, SEEK_SET);
|
sw1.reset();
|
||||||
num = read(pfd.fd, buf, 8);
|
}
|
||||||
buf[num - 1] = '\0';
|
else
|
||||||
ret = atoi(buf);
|
{
|
||||||
//ftt.append_log(ret?"in":"out");
|
printf("检测纸张出去 time:%f\r\n",sw1.elapsed_ms());
|
||||||
if (ret)
|
sw2.reset();
|
||||||
{
|
}
|
||||||
|
edges[ret]->notify_all();
|
||||||
|
|
||||||
printf("检测纸张进入 time:%f\r\n",sw2.elapsed_ms());
|
while(sw.elapsed_ms() < 10)
|
||||||
sw1.reset();
|
{
|
||||||
}else
|
ret = poll(&pfd, 1, 1);
|
||||||
|
if (ret > 0)
|
||||||
{
|
{
|
||||||
printf("检测纸张出去 time:%f\r\n",sw1.elapsed_ms());
|
num = read(pfd.fd, buf, 8);
|
||||||
sw2.reset();
|
buf[num - 1] = '\0';
|
||||||
}
|
ret = atoi(buf);
|
||||||
|
|
||||||
edges[ret]->notify_all();
|
|
||||||
printf("\n *************scanpin %d time = %s ********* \n",ret,GetCurrentTimeStamp(2).c_str());
|
|
||||||
//sw.reset();
|
|
||||||
while(sw.elapsed_ms() < 10)
|
|
||||||
{
|
|
||||||
ret = poll(&pfd, 1, 1);
|
|
||||||
if (ret > 0)
|
|
||||||
{
|
|
||||||
num = read(pfd.fd, buf, 8);
|
|
||||||
buf[num - 1] = '\0';
|
|
||||||
ret = atoi(buf);
|
|
||||||
//printf("pMonitor nread = %d ret val = %d \n",num,ret);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -209,16 +207,12 @@ void Sensor::monitor2()
|
||||||
int fd = -1;
|
int fd = -1;
|
||||||
char buf[8];
|
char buf[8];
|
||||||
int num;
|
int num;
|
||||||
//LOG(" ------------------------ monitor2 running \n");
|
|
||||||
|
|
||||||
for (size_t i = 0; i < gpios.size(); ++i)
|
for (size_t i = 0; i < gpios.size(); ++i)
|
||||||
{
|
{
|
||||||
fd = open(gpios[i]->getValuePath().c_str(), O_RDONLY);
|
fd = open(gpios[i]->getValuePath().c_str(), O_RDONLY);
|
||||||
//LOG(" ------------------------ monitor2 open gpio[%d]=%s \n",i,gpios[i]->getValuePath().c_str());
|
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
{
|
{
|
||||||
ret = -1;
|
ret = -1;
|
||||||
LOG(" ------------------------ monitor2 open break \n");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,73 +222,52 @@ void Sensor::monitor2()
|
||||||
pollfds.push_back(pfd);
|
pollfds.push_back(pfd);
|
||||||
}
|
}
|
||||||
|
|
||||||
//LOG(" ------------------------ monitor2 while running \n");
|
|
||||||
if (ret >= 0)
|
if (ret >= 0)
|
||||||
{
|
{
|
||||||
bMonitor2 = true;
|
bMonitor2 = true;
|
||||||
while (bMonitor2)
|
while (bMonitor2)
|
||||||
{
|
{
|
||||||
static int poll_t = 0;
|
|
||||||
|
|
||||||
ret = poll(&pollfds[0], pollfds.size(), 1000);
|
ret = poll(&pollfds[0], pollfds.size(), 1000);
|
||||||
//LOG(" ------------------------ monitor2 while running poll_t=%d ret=%d \n",++poll_t,ret);
|
if (ret < 0)
|
||||||
if (ret > 0)
|
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < pollfds.size(); ++i)
|
continue;
|
||||||
|
}
|
||||||
|
for (size_t i = 0; i < pollfds.size(); ++i)
|
||||||
|
{
|
||||||
|
if (pollfds[i].revents)
|
||||||
{
|
{
|
||||||
if (pollfds[i].revents)
|
ret = readfile(pollfds[i].fd,num,buf);
|
||||||
|
|
||||||
|
if (i == 2)
|
||||||
{
|
{
|
||||||
ret = readfile(pollfds[i].fd,num,buf);
|
double_1 = ret;
|
||||||
//LOG("event id : %d i= %d \n",evts[i * 2 + ret] , i );
|
printf("2 double_1 :%d double_2:%d\r\n",double_1,double_2);
|
||||||
// if(evts[i * 2 + ret] == 272)
|
if (double_2 && double_1 && enbale_double_)
|
||||||
// {
|
|
||||||
// //LOG("\n\n---------------double paper ----------------:%s \n\n", GetCurrentTimeStamp(2).c_str());
|
|
||||||
// enableDoubleSensor(false);
|
|
||||||
// }
|
|
||||||
if (i == 2)
|
|
||||||
{
|
{
|
||||||
double_1 = ret;
|
events.Put(ScanEvent(S_EVT_DOUBLEPAPER));
|
||||||
printf("2 double_1 :%d double_2:%d\r\n",double_1,double_2);
|
enableDoubleSensor(false);
|
||||||
if (double_2 && double_1 && enbale_double_)
|
|
||||||
{
|
|
||||||
printf("双张111111111111111111111111\r\n");
|
|
||||||
events.Put(ScanEvent(S_EVT_DOUBLEPAPER));
|
|
||||||
enableDoubleSensor(false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//printf("3 double_1 :%d double_2:%d\r\n",double_1,double_2);
|
|
||||||
//events.Put(ScanEvent(S_EVT_NOT_DOUBLEPAPER));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (i == 3)
|
|
||||||
{
|
|
||||||
double_2 = ret;
|
|
||||||
printf("3 double_1 :%d double_2:%d\r\n",double_1,double_2);
|
|
||||||
if (double_2 && double_1 && enbale_double_)
|
|
||||||
{
|
|
||||||
printf("双张2222222222222222222222\r\n");
|
|
||||||
events.Put(ScanEvent(S_EVT_DOUBLEPAPER));
|
|
||||||
enableDoubleSensor(false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//printf("4 double_1 :%d double_2:%d\r\n",double_1,double_2);
|
|
||||||
//events.Put(ScanEvent(S_EVT_NOT_DOUBLEPAPER));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (i != 2 && i != 3)
|
|
||||||
{
|
|
||||||
if(i == 1)
|
|
||||||
{
|
|
||||||
//LOG("paper sensor ret:%d \n", ret);
|
|
||||||
cv_paper_on.notify_all();
|
|
||||||
}
|
|
||||||
events.Put(evts[i * 2 + ret]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (i == 3)
|
||||||
|
{
|
||||||
|
double_2 = ret;
|
||||||
|
printf("3 double_1 :%d double_2:%d\r\n",double_1,double_2);
|
||||||
|
if (double_2 && double_1 && enbale_double_)
|
||||||
|
{
|
||||||
|
events.Put(ScanEvent(S_EVT_DOUBLEPAPER));
|
||||||
|
enableDoubleSensor(false);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (i != 2 && i != 3)
|
||||||
|
{
|
||||||
|
if(i == 1)
|
||||||
|
{
|
||||||
|
cv_paper_on.notify_all();
|
||||||
|
}
|
||||||
|
events.Put(evts[i * 2 + ret]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,10 +25,6 @@ using namespace std;
|
||||||
/*支持写入系统syslog 功能开关*/
|
/*支持写入系统syslog 功能开关*/
|
||||||
#define ENLOG_SYSLOG
|
#define ENLOG_SYSLOG
|
||||||
|
|
||||||
//#define TEST_MODE
|
|
||||||
|
|
||||||
//#define __DEBUG__
|
|
||||||
//#define _LOG
|
|
||||||
|
|
||||||
|
|
||||||
#define IMAGE_COLOR 1
|
#define IMAGE_COLOR 1
|
||||||
|
@ -40,14 +36,9 @@ using namespace std;
|
||||||
#define LOG //printf
|
#define LOG //printf
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef G400
|
|
||||||
#define FWVERSION "G440220112"
|
|
||||||
#define SERIALNUM "HG1060A38001P1"
|
|
||||||
#else
|
|
||||||
|
|
||||||
#define FWVERSION "G345230918"
|
#define FWVERSION "G345230918"
|
||||||
#define SERIALNUM "HS6010A38001P1"
|
#define SERIALNUM "HS6010A38001P1"
|
||||||
#endif
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
int s_FRAME_COLOR_SP;
|
int s_FRAME_COLOR_SP;
|
||||||
|
|
Loading…
Reference in New Issue