This commit is contained in:
modehua 2023-11-06 22:34:33 -08:00
parent db83aee8bc
commit a792d08fce
10 changed files with 34 additions and 60 deletions

View File

@ -110,7 +110,7 @@ void CuoZhiMotor::speedRecover()
void CuoZhiMotor::speedConfig()
{
printf("CuoZhiMotor speed=%d \n dpi=%d \n colormode=%d \n finalPeriod=%d \n Fmin=%d \n a=%.2f \n offset=%.2f \n stepnum=%.2f \n finalDelay=%.2f \n ",
LOG("CuoZhiMotor speed=%d \n dpi=%d \n colormode=%d \n finalPeriod=%d \n Fmin=%d \n a=%.2f \n offset=%.2f \n stepnum=%.2f \n finalDelay=%.2f \n ",
m_cuoparamex.speed,
m_cuoparamex.dpi,
m_cuoparamex.colormode,

View File

@ -309,8 +309,6 @@ void HCamDevice::HtCamSetPeriod(double reg_value)
printf("reg_value:%f\r\n",reg_value);
double pr = reg_value == 0 ? 0x183C/2 :reg_value * 0x183C / 1;
printf("\r\n");
if (virBaseAddr == NULL)
{
return ;
@ -322,7 +320,7 @@ void HCamDevice::HtCamSetPeriod(double reg_value)
rgb.NShort[0] = 0x183C; //周期参数默认0x183C 不可修改
rgb.NShort[1] = pr; //占空比 = 百分比 / 0x183C *1
printf("占空比:%d\r\n",rgb.NShort[1]);
printf("PWM占空比:%d\r\n",rgb.NShort[1]);
HtCamWriteFpgaRegs(0x09,rgb.value);
}
int HCamDevice::HtCamEventWorkThread(void)
@ -476,8 +474,6 @@ int HCamDevice::HtCamReadCaptureFrame(void **pbuf, int timeout)
*pbuf = captureBufers[0].start;
else
*pbuf = captureBufers[lastSucceedBufferIndex + 1].start;
printf("timeout !!! captureBufers[lastSucceedBufferIndex].length :%d\r\n",captureBufers[lastSucceedBufferIndex].length);
return -1;
}
struct v4l2_buffer buf;
@ -608,7 +604,6 @@ int HCamDevice::HtCamStartSampling()
// This function is prohibited
int HCamDevice::HtCamStopSampling()
{
printf("调用了 HtCamStopSampling\r\n");
uint32_t *CamReg;
if (virBaseAddr == NULL)
return -1;
@ -742,8 +737,6 @@ int HCamDevice::init_video_buffer()
req.memory = v4l2memtype;
printf("I GET THE drivertype %d\n",drivertype);
if (ioctl(videofd, VIDIOC_REQBUFS, &req) < 0)
{
camera_err(" VIDIOC_REQBUFS failed\n");

View File

@ -38,7 +38,8 @@ MultiFrameCapture::MultiFrameCapture(ScannerGlue glue) :
color_mode_(GRAY),
is_correct_(0),
is_double_paper_(0),
is_remove_morr_(0)
is_remove_morr_(0),
m_cv_snap_is_scaning(false)
{
video.reset(new HCamDevice);
video->HtCamSetdivder(true);
@ -86,7 +87,6 @@ void MultiFrameCapture::open()
{
i = video->HtCamReadCaptureFrame((void **)&buf, 10);
}
printf("open_device\r\n");
}
void MultiFrameCapture::snap()
@ -111,7 +111,6 @@ void MultiFrameCapture::snap()
void MultiFrameCapture::stopsnap(bool autosize)
{
printf("stop stop stop\r\n");
if (autosize)
{
video->HtCamStopSampling();
@ -121,7 +120,6 @@ void MultiFrameCapture::stopsnap(bool autosize)
void MultiFrameCapture::close()
{
printf("close close close\r\n");
if (video.get())
video->close_device();
}
@ -164,7 +162,6 @@ SIZE MultiFrameCapture::GetPaperSize(PaperSize paper, int dpi)
SIZE resize{2480,3507};
resize.cx = paper_map_[paper].cx * dpi / 25.4;
resize.cy = paper_map_[paper].cy * dpi / 25.4;
printf("resize.cx:%d resize.cy:%d\r\n",resize.cx,resize.cy);
return resize;
}
return SIZE{2338, 3307};
@ -172,7 +169,7 @@ SIZE MultiFrameCapture::GetPaperSize(PaperSize paper, int dpi)
void MultiFrameCapture::UpdateScanParam(HG_ScanConfiguration config)
{
m_config = config;
printf("config.params.pageSize:%d\r\n",config.params.pageSize);
if(config.params.slow_moire && config.params.dpi != 3)
{
config.params.dpi = 2;
@ -193,7 +190,6 @@ void MultiFrameCapture::UpdateScanParam(HG_ScanConfiguration config)
is_remove_morr_ = config.params.slow_moire;
//width_ = paper_size_ == PaperSize::G400_MAXSIZE || paper_size_ ==PaperSize::G400_MAXAUTO &&
printf("config.params.dc%d\r\n",config.params.dc);
video->HtCamSetPeriod(config.params.dc);
@ -390,7 +386,7 @@ void MultiFrameCapture::snaprun()
int t = resolution_ == DPI_600 ? sw.elapsed_ms() + 600 : sw.elapsed_ms() + 20;
time_out = t;
uint32_t sendLine = video->HtCamReadFpgaRegs(0x000e);////0x000e 取出来的实际行数
printf("--------------fpga send line ------------:%d HtCamReadCaptureFrame =%0.2f \r\n",sendLine,sw.elapsed_ms());
printf("--------------fpga send line ------------:%d\r\n",sendLine);
if (data)
{
@ -425,12 +421,12 @@ void MultiFrameCapture::snaprun()
info.width = frame_info.width;
info.height = frame_info.height;
printf("获取数据 width:%d height:%d is_first:%d is_last:%d DataLength:%d\r\n",frame_info.width,frame_info.height,info.first_frame,info.last_frame,info.DataLength);
//printf("获取数据 width:%d height:%d is_first:%d is_last:%d DataLength:%d\r\n",frame_info.width,frame_info.height,info.first_frame,info.last_frame,info.DataLength);
m_glue.m_imageready(info);
//m_frameinfos.Put(frame_info);
printf("采集图像耗时:%f\r\n",sw.elapsed_ms());
//printf("采集图像耗时:%f\r\n",sw.elapsed_ms());
}
return ret;
};
@ -439,8 +435,9 @@ void MultiFrameCapture::snaprun()
while (b_snap_run)
{
std::unique_lock<std::mutex> lock(m_mtx_snap);
m_cv_snap_is_scaning = false;
m_cv_snap.wait(lock);
m_cv_snap_is_scaning = true;
V4L2_DATAINFO_Ex frame_info;
frame_info.pixtype = color_mode_;
frame_info.dpi = resolution_;
@ -454,7 +451,7 @@ void MultiFrameCapture::snaprun()
int channels = color_mode_ == 1 ? 3 : 1;
int color_mode = video->HtCamGetColorMode();
int func_sig = 0;
int time_out = resolution_ == DPI_600 ? 2000 : 600; ///这个时间是根据每帧的数据量来进行调测的
int time_out = resolution_ == DPI_600 ? 2000 : 900; ///这个时间是根据每帧的数据量来进行调测的
if (is_remove_morr_)
{

View File

@ -49,6 +49,7 @@ private:
std::mutex m_mtx_snap;
std::mutex m_mtx_snapdone;
std::condition_variable m_cv_snap;
bool m_cv_snap_is_scaning;
std::condition_variable m_cv_snapdone;
std::shared_ptr<std::thread> m_snap_thread;
std::shared_ptr<std::thread> m_imgproc_thread;

View File

@ -209,8 +209,10 @@ void Scanner::runScan()
StopWatch sw;
StopWatch sw1;
StopWatch sw2;
isScaning = true;
while (m_DstScannum > 0)
{
isScaning = true;
sw1.reset();
m_isDoublePaper = false;
m_jamPaper = false;
@ -222,12 +224,14 @@ void Scanner::runScan()
put(S_EVT_STOP_SCAN);
LOG("STOP STOP STOP RUNSCAN \n");
}
isScaning = false;
break;
}
sensor->enableDoubleSensor(m_config.params.doubleFeeded);
if (m_DstScannum == 0) //被取消扫描了
{
isScaning = false;
break;
}
@ -236,6 +240,7 @@ void Scanner::runScan()
{
put(S_EVT_STOP_SCAN);
isRested = false;
isScaning = false;
break;
}
isRested = false;
@ -248,6 +253,7 @@ void Scanner::runScan()
put(S_EVT_JAM_IN);
m_scaninfo.JamInNum++;
}
isScaning = false;
break;
}
printf("检测到纸张的时间:%f\r\n",sw.elapsed_ms());//检测到纸张
@ -278,6 +284,7 @@ void Scanner::runScan()
if (!sensor->isPaperIn())
{
LOG("paper 假卡纸了。。。。。\n");
isScaning = false;
break;
}
}
@ -301,6 +308,7 @@ void Scanner::runScan()
capturer->stopsnap(b_autosize);
capturer->waitsnapdone(1);//等待采集完成
this_thread::sleep_for(std::chrono::milliseconds(500));//200 80ms 600 260ms
isScaning = false;
break;
}
//LOG("\nclose double sensor %s\n",GetCurrentTimeStamp(2).c_str());
@ -340,6 +348,7 @@ void Scanner::runScan()
capturer->waitsnapdone(1);//等待采集完成
capturer->stopsnap(b_autosize);
isScaning = false;
break;
}
}
@ -355,6 +364,7 @@ void Scanner::runScan()
this_thread::sleep_for(std::chrono::milliseconds(200));
put(S_EVT_STOP_SCAN);
isScaning = false;
break;
}
sw.reset();
@ -367,6 +377,7 @@ void Scanner::runScan()
else
{
put(S_EVT_STOP_SCAN);
isScaning = false;
break;
}
}
@ -375,7 +386,7 @@ void Scanner::runScan()
if( m_config.params.dpi == 3)
this_thread::sleep_for(std::chrono::milliseconds(3000));
}
isScaning = false;
m_DstScannum = 0;
sensor->enableDoubleSensor(false);
sensor->resetPaperPin();

View File

@ -29,6 +29,7 @@ public:
public:
bool isRested = false;
bool isScaning = false;
void startScan();
void emergency_stop(int id)
{
@ -40,20 +41,15 @@ public:
motorCuozhi.stop();
motorZouzhi.stop();
//capturer->close();
put(S_EVT_SCAN_STOPPED);
SaveScaninfo(m_scaninfo);
start_enter_lowpwoer();
printf("emergency_stop capturer->close() \n");
//sensor->enableDoubleSensor(false);
}
void stop_scan()
{
printf("!!!!!!!!!!!!!!!!!!!!!stop_scan() waitting snap session done \n");
sensor->cancelWaitPaper();
m_DstScannum = 0;
if (threadRunScan.joinable())
@ -78,7 +74,7 @@ public:
motorCuozhi.reset();
isRested = true;
isPaperInit = false;
printf("Scanner->motorCuozhi is reseted \n");
LOG("Scanner->motorCuozhi is reseted \n");
}
}
void paperReady()
@ -91,9 +87,6 @@ public:
bool isFeederLoaded() { return sensor->isPaperStandby(); }
void ConfigScanParam(HG_ScanConfiguration config)
{
// if (config.params.dpi == 0)
// config.params.dpi = 1;
m_config = config;
LOG("m_config.params.dpi = %d \n \
m_config.params.isColor = %d \n \

View File

@ -249,7 +249,7 @@ void Sensor::monitor2()
if (i == 2)
{
double_1 = ret;
printf("2 double_1 :%d double_2:%d\r\n",double_1,double_2);
LOG("2 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));
@ -260,7 +260,7 @@ void Sensor::monitor2()
if (i == 3)
{
double_2 = ret;
printf("3 double_1 :%d double_2:%d\r\n",double_1,double_2);
LOG("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));

View File

@ -32,7 +32,7 @@ void ZouZhiMotor::speedRecover()
void ZouZhiMotor::speedConfig()
{
printf("ZouZhiMotor speed=%d \n dpi=%d \n colormode=%d \n finalPeriod=%d \n Fmin=%d \n a=%.2f \n offset=%.2f \n stepnum=%.2f \n finalDelay=%.2f \n ",
LOG("ZouZhiMotor speed=%d \n dpi=%d \n colormode=%d \n finalPeriod=%d \n Fmin=%d \n a=%.2f \n offset=%.2f \n stepnum=%.2f \n finalDelay=%.2f \n ",
m_zouparamex.speed,
m_zouparamex.dpi,
m_zouparamex.colormode,

View File

@ -342,8 +342,7 @@ int main(int argc, char *argv[])
break;
case USBCommand::GET_IMAGE:
{
static int indx = 1;
printf("传图中\r\n");
HG_JpegCompressInfo info = m_scanner->GetImage();
if (info.pJpegData != nullptr && info.DataLength != 0)
{
@ -370,7 +369,6 @@ int main(int argc, char *argv[])
else
index += tt;
}
indx++;
}
}
break;
@ -387,7 +385,6 @@ int main(int argc, char *argv[])
case USBCommand::GET_FW_VERSION:
{
m_scanner->write_bulk((void *)m_scanner->GetFWVersion().c_str(), m_scanner->GetFWVersion().length());
// DEBUG("usb write bulk fwversion : %s length :%d", m_scanner->GetFWVersion().c_str(), m_scanner->GetFWVersion().length());
}
break;
case USBCommand::CONFIGURED_DATA:
@ -691,7 +688,7 @@ int main(int argc, char *argv[])
{
int ret = get_devs_status(SLEEP_STATUS_PATH);
printf("sleep status :%d\r\n",ret);
printf("休眠状态:%s\r\n",ret == SCANNER_ERR_SLEEP?"设备休眠中...":"设备未休眠...") ;
usbcb.Data = ret == SCANNER_ERR_SLEEP ? 0x100 : 0x10;
m_scanner->write_bulk(&usbcb, sizeof(usbcb));
if (ret == SCANNER_ERR_SLEEP)

View File

@ -360,31 +360,13 @@ std::string getmeminfo()
void start_enter_lowpwoer()
{
#ifdef ENABLE_LOWPOWERMODE
// // stop_countdown();
// int seconds=900;
// auto scaninfo= js_config.GetScanInfo();
// if(scaninfo.SleepTime<0||scaninfo.SleepTime<180)
// seconds=180;
// else
// seconds=scaninfo.SleepTime;
// std::string str="sh /mnt/flash-disk/countdown.sh start 0 0 "+std::to_string(seconds) + " &";
// printf("start_enter_lowpwoer %s \n",str.c_str());
// int ret = system(str.c_str());
printf("system start_enter_lowpwoer :%d\r\n",true);
write_sleep_fifo(true);
write_sleep_fifo(true);
#endif
}
void stop_countdown()
{
#ifdef ENABLE_LOWPOWERMODE
// int ret = system("sh /mnt/flash-disk/killtimer.sh");
// printf("system stop_countdown :%d\r\n",ret);
//sleep(2);
printf("stop_countdown :%d\r\n",false);
write_sleep_fifo(false);
#endif
}
@ -420,7 +402,7 @@ int write_sleep_fifo(int status)
char buffer[12];
sprintf(buffer,"%d",status);
printf("status:%d\r\n",status);
//printf("status:%d\r\n",status);
int ret = write(sleep_fd_,buffer,strlen(buffer));
return ret;