增加守护进程 增加摩尔纹模式,调整bug
This commit is contained in:
parent
947e525ce8
commit
91a5de2d13
|
@ -112,16 +112,16 @@ void CuoZhiMotor::speedRecover()
|
||||||
|
|
||||||
void CuoZhiMotor::speedConfig()
|
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 ",
|
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 ",
|
||||||
// m_cuoparamex.speed,
|
m_cuoparamex.speed,
|
||||||
// m_cuoparamex.dpi,
|
m_cuoparamex.dpi,
|
||||||
// m_cuoparamex.colormode,
|
m_cuoparamex.colormode,
|
||||||
// m_cuoparamex.mt_param.finalPeriod,
|
m_cuoparamex.mt_param.finalPeriod,
|
||||||
// m_cuoparamex.mt_param.Fmin,
|
m_cuoparamex.mt_param.Fmin,
|
||||||
// m_cuoparamex.mt_param.a,
|
m_cuoparamex.mt_param.a,
|
||||||
// m_cuoparamex.mt_param.offset,
|
m_cuoparamex.mt_param.offset,
|
||||||
// m_cuoparamex.mt_param.stepnum,
|
m_cuoparamex.mt_param.stepnum,
|
||||||
// m_cuoparamex.mt_param.finalDelay);
|
m_cuoparamex.mt_param.finalDelay);
|
||||||
|
|
||||||
delays_forward.clear();
|
delays_forward.clear();
|
||||||
delays_forward = speedup_cfg(m_cuoparamex.mt_param.finalPeriod, m_cuoparamex.mt_param.Fmin, m_cuoparamex.mt_param.stepnum, m_cuoparamex.mt_param.a,
|
delays_forward = speedup_cfg(m_cuoparamex.mt_param.finalPeriod, m_cuoparamex.mt_param.Fmin, m_cuoparamex.mt_param.stepnum, m_cuoparamex.mt_param.a,
|
||||||
|
|
|
@ -291,7 +291,6 @@ FsmState *ScanningState::on_event(ScanEvent event)
|
||||||
scanner->SetIsDoublePaper(true);
|
scanner->SetIsDoublePaper(true);
|
||||||
scanner->emergency_stop(1);
|
scanner->emergency_stop(1);
|
||||||
LOG("\nScanningState S_EVT_DOUBLEPAPER %s \n",GetCurrentTimeStamp(2).c_str());
|
LOG("\nScanningState S_EVT_DOUBLEPAPER %s \n",GetCurrentTimeStamp(2).c_str());
|
||||||
writesyslog(LOG_INFO,"double paper error\n");
|
|
||||||
return FsmStateManagerEx<ErrorJamState>::GetState();
|
return FsmStateManagerEx<ErrorJamState>::GetState();
|
||||||
}
|
}
|
||||||
else if (event == S_EVT_JAM_IN)
|
else if (event == S_EVT_JAM_IN)
|
||||||
|
|
|
@ -207,7 +207,7 @@ int HCamDevice::uninit_fpga()
|
||||||
|
|
||||||
int HCamDevice::open_device(int width , int height)
|
int HCamDevice::open_device(int width , int height)
|
||||||
{
|
{
|
||||||
|
close_device();
|
||||||
v4lWidth = width;//@300dpi 5184 @600dpi 5184*2
|
v4lWidth = width;//@300dpi 5184 @600dpi 5184*2
|
||||||
v4lHeight = height ;//* 3;//color_h/gray_h = 3 比如:目标复原图像高度为128 则灰度需要FPGA采集128 彩色采集128*3
|
v4lHeight = height ;//* 3;//color_h/gray_h = 3 比如:目标复原图像高度为128 则灰度需要FPGA采集128 彩色采集128*3
|
||||||
|
|
||||||
|
@ -673,7 +673,7 @@ int HCamDevice::init_capture()
|
||||||
camera_print(" fmt.fmt.pix.width = %d\n", fmt.fmt.pix_mp.width);
|
camera_print(" fmt.fmt.pix.width = %d\n", fmt.fmt.pix_mp.width);
|
||||||
camera_print(" fmt.fmt.pix.height = %d\n", fmt.fmt.pix_mp.height);
|
camera_print(" fmt.fmt.pix.height = %d\n", fmt.fmt.pix_mp.height);
|
||||||
camera_print(" fmt.fmt.pix.field = %d\n", fmt.fmt.pix_mp.field);
|
camera_print(" fmt.fmt.pix.field = %d\n", fmt.fmt.pix_mp.field);
|
||||||
// close(videofd);
|
close_device();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1363,7 +1363,7 @@ void HCamDevice::HtCamResizeBuffer(int width, int height, int number)
|
||||||
v4lHeight = height;
|
v4lHeight = height;
|
||||||
v4lBufferCount = number;
|
v4lBufferCount = number;
|
||||||
|
|
||||||
HtCamExitVideoCapturing();
|
close_device();
|
||||||
init_sample();
|
init_sample();
|
||||||
init_capture();
|
init_capture();
|
||||||
init_video_buffer();
|
init_video_buffer();
|
||||||
|
|
|
@ -80,6 +80,9 @@ void MultiFrameCapture::SetParent(void *scanner)
|
||||||
|
|
||||||
void MultiFrameCapture::open()
|
void MultiFrameCapture::open()
|
||||||
{
|
{
|
||||||
|
printf("open-------\r\n");
|
||||||
|
//stop_countdown();
|
||||||
|
printf("open close-------\r\n");
|
||||||
int ret = video->open_device(v4l2_width_,v4l2_height_);
|
int ret = video->open_device(v4l2_width_,v4l2_height_);
|
||||||
if(ret < -1)
|
if(ret < -1)
|
||||||
return;
|
return;
|
||||||
|
@ -176,6 +179,11 @@ SIZE MultiFrameCapture::GetPaperSize(PaperSize paper, int dpi)
|
||||||
void MultiFrameCapture::UpdateScanParam(HG_ScanConfiguration config)
|
void MultiFrameCapture::UpdateScanParam(HG_ScanConfiguration config)
|
||||||
{
|
{
|
||||||
m_config = config;
|
m_config = config;
|
||||||
|
printf("config.params.slow_moire:%d\r\n",config.params.slow_moire);
|
||||||
|
if(config.params.slow_moire && config.params.dpi != 3)
|
||||||
|
{
|
||||||
|
config.params.dpi = 2;
|
||||||
|
}
|
||||||
|
|
||||||
if (!video.get())
|
if (!video.get())
|
||||||
{
|
{
|
||||||
|
@ -213,6 +221,22 @@ void MultiFrameCapture::UpdateScanParam(HG_ScanConfiguration config)
|
||||||
{
|
{
|
||||||
int val = config.params.dpi == 3 ? 600 :(config.params.dpi == 2?300:200);
|
int val = config.params.dpi == 3 ? 600 :(config.params.dpi == 2?300:200);
|
||||||
printf("val = %d\r\n",val);
|
printf("val = %d\r\n",val);
|
||||||
|
//除摩尔纹模式
|
||||||
|
if(config.params.slow_moire && config.params.dpi != 3)
|
||||||
|
{
|
||||||
|
int sp = fpgaparam.Sp - 538;
|
||||||
|
val = 400;
|
||||||
|
video->HtCamSetSpTime(sp,49); // 2344 灰色 //2023-8-10 最新2650
|
||||||
|
if (color_mode_)
|
||||||
|
{
|
||||||
|
video->HtCamSetSpTime2(sp * 3);
|
||||||
|
}
|
||||||
|
printf("摩尔纹高度 = %d\r\n",val);
|
||||||
|
printf("灰度sp = %d\r\n",sp);
|
||||||
|
printf("彩色sp = %d\r\n",sp * 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
uint32_t cnt = compute_frame(paper_size_ , val) ;
|
uint32_t cnt = compute_frame(paper_size_ , val) ;
|
||||||
if (m_config.params.dpi == 2 && m_config.params.pageSize == (int)PaperSize::G400_A4)
|
if (m_config.params.dpi == 2 && m_config.params.pageSize == (int)PaperSize::G400_A4)
|
||||||
{
|
{
|
||||||
|
@ -763,7 +787,12 @@ bool MultiFrameCapture::saveLutImg(int dpi, int mode, bool black)
|
||||||
{
|
{
|
||||||
int k = (3 * s + x);
|
int k = (3 * s + x);
|
||||||
// int diff = LIGHT_DIFF(*((double *)values + k));
|
// int diff = LIGHT_DIFF(*((double *)values + k));
|
||||||
int diff = 210 - *((double *)values + k);;//param.MaxBright - *((double *)values + k);
|
int diff;//= 240 - *((double *)values + k);;//param.MaxBright - *((double *)values + k);
|
||||||
|
if(x==0)
|
||||||
|
diff = 190 - *((double *)values + k);
|
||||||
|
else
|
||||||
|
diff = 240 - *((double *)values + k);
|
||||||
|
|
||||||
log += " 明场:" + std::to_string(k) + ";diff:" + std::to_string(diff) + "\r\n";
|
log += " 明场:" + std::to_string(k) + ";diff:" + std::to_string(diff) + "\r\n";
|
||||||
|
|
||||||
double step = diff * radio;
|
double step = diff * radio;
|
||||||
|
|
49
Scanner.cpp
49
Scanner.cpp
|
@ -33,37 +33,26 @@ Scanner::Scanner(ScannerGlue glue)
|
||||||
capturer->SetParent(this);
|
capturer->SetParent(this);
|
||||||
//固件版本
|
//固件版本
|
||||||
int version=7010;
|
int version=7010;
|
||||||
fpgacontrol fc(version);
|
|
||||||
if (fc.ifneedupdatefpga())
|
|
||||||
{
|
|
||||||
if (fc.updatefpga())
|
|
||||||
{
|
|
||||||
system("poweroff");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LOG("error error update fpga error");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
auto btnevent = [this](const int eventtype)
|
auto btnevent = [this](const int eventtype)
|
||||||
{
|
{
|
||||||
if (!IsScanning()) //未扫描
|
if (!IsScanning()) //未扫描
|
||||||
{
|
{
|
||||||
if (eventtype == BTN_LOW_POWER)
|
switch (eventtype)
|
||||||
{
|
{
|
||||||
//system("echo mem > /sys/power/state");
|
case BTN_LOW_POWER:
|
||||||
//capturer->SetLowPower(0);
|
stop_countdown();
|
||||||
system("/mnt/flash-disk/low_power.sh 1");
|
system("sh /mnt/flash-disk/low_power.sh 1");
|
||||||
}
|
break;
|
||||||
else if (eventtype == BTN_START)
|
case BTN_NORMAL_POWER:
|
||||||
{
|
system("sh /mnt/flash-disk/low_power.sh 0");
|
||||||
// put(S_EVT_START_SCAN);
|
start_enter_lowpwoer();
|
||||||
}
|
break;
|
||||||
else if(eventtype == BTN_NORMAL_POWER)
|
case BTN_START:
|
||||||
{
|
/* code */
|
||||||
//capturer->SetLowPower(1);
|
break;
|
||||||
system("/mnt/flash-disk/low_power.sh 0");
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else //扫描中
|
else //扫描中
|
||||||
|
@ -71,7 +60,7 @@ Scanner::Scanner(ScannerGlue glue)
|
||||||
if (eventtype == BTN_STOP)
|
if (eventtype == BTN_STOP)
|
||||||
{
|
{
|
||||||
put(S_EVT_STOP_SCAN);
|
put(S_EVT_STOP_SCAN);
|
||||||
LOG("BTN_STOP put(S_EVT_STOP_SCAN)");
|
printf("keyboard cancel scan\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -117,8 +106,12 @@ void Scanner::updateSpeedMode(int speed)
|
||||||
unsigned int t_dpi = m_config.params.dpi;
|
unsigned int 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;
|
||||||
|
if (m_config.params.slow_moire) //摩尔纹使用300dpi进行采集
|
||||||
|
{
|
||||||
|
t_dpi = 2;
|
||||||
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
@ -129,6 +122,7 @@ void Scanner::startScan()
|
||||||
if (threadRunScan.joinable())
|
if (threadRunScan.joinable())
|
||||||
threadRunScan.join();
|
threadRunScan.join();
|
||||||
stop_countdown();
|
stop_countdown();
|
||||||
|
this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||||
updateSpeedMode(4);
|
updateSpeedMode(4);
|
||||||
// //开始进行扫描
|
// //开始进行扫描
|
||||||
threadRunScan = std::thread(&Scanner::runScan, this);
|
threadRunScan = std::thread(&Scanner::runScan, this);
|
||||||
|
@ -256,7 +250,6 @@ void Scanner::runScan()
|
||||||
m_jamIn = true;
|
m_jamIn = true;
|
||||||
put(S_EVT_JAM_IN);
|
put(S_EVT_JAM_IN);
|
||||||
m_scaninfo.JamInNum++;
|
m_scaninfo.JamInNum++;
|
||||||
//writesyslog(LOG_INFO, "paper jam in error \n");
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,7 +144,6 @@ UsbScanner::UsbScanner() : m_startscan(false),
|
||||||
if (eventID == (int)HG_ScannerStatus::STOP_SCAN)
|
if (eventID == (int)HG_ScannerStatus::STOP_SCAN)
|
||||||
{
|
{
|
||||||
m_startscan = false;
|
m_startscan = false;
|
||||||
writesyslog(LOG_INFO, getmeminfo());
|
|
||||||
}
|
}
|
||||||
if (eventID == (int)(HG_ScannerStatus::AUTO_FLAT_FINISHED))
|
if (eventID == (int)(HG_ScannerStatus::AUTO_FLAT_FINISHED))
|
||||||
{
|
{
|
||||||
|
@ -179,7 +178,7 @@ void UsbScanner::StartScan(int scancount)
|
||||||
{
|
{
|
||||||
ClearImages();
|
ClearImages();
|
||||||
ClearErrorEvents();
|
ClearErrorEvents();
|
||||||
m_hgScanner->SetDstScanNum(9999);//scancount <= 0 ? 1 : scancount);
|
m_hgScanner->SetDstScanNum(scancount <= 0 ? 1 : scancount);
|
||||||
m_hgScanner->put(S_EVT_START_SCAN);
|
m_hgScanner->put(S_EVT_START_SCAN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -400,7 +399,7 @@ void UsbScanner::UpdateScanInfo(int type, void *data)
|
||||||
info.SleepTime = *(unsigned int *)(data);
|
info.SleepTime = *(unsigned int *)(data);
|
||||||
printf("set sleep time = %d \n", info.SleepTime);
|
printf("set sleep time = %d \n", info.SleepTime);
|
||||||
SaveScaninfo(info);
|
SaveScaninfo(info);
|
||||||
stop_countdown();
|
//stop_countdown();
|
||||||
start_enter_lowpwoer();
|
start_enter_lowpwoer();
|
||||||
return;
|
return;
|
||||||
case USBCommand::SET_SPEED_MODE:
|
case USBCommand::SET_SPEED_MODE:
|
||||||
|
|
|
@ -32,16 +32,16 @@ void ZouZhiMotor::speedRecover()
|
||||||
|
|
||||||
void ZouZhiMotor::speedConfig()
|
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 ",
|
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 ",
|
||||||
// m_zouparamex.speed,
|
m_zouparamex.speed,
|
||||||
// m_zouparamex.dpi,
|
m_zouparamex.dpi,
|
||||||
// m_zouparamex.colormode,
|
m_zouparamex.colormode,
|
||||||
// m_zouparamex.mt_param.finalPeriod,
|
m_zouparamex.mt_param.finalPeriod,
|
||||||
// m_zouparamex.mt_param.Fmin,
|
m_zouparamex.mt_param.Fmin,
|
||||||
// m_zouparamex.mt_param.a,
|
m_zouparamex.mt_param.a,
|
||||||
// m_zouparamex.mt_param.offset,
|
m_zouparamex.mt_param.offset,
|
||||||
// m_zouparamex.mt_param.stepnum,
|
m_zouparamex.mt_param.stepnum,
|
||||||
// m_zouparamex.mt_param.finalDelay);
|
m_zouparamex.mt_param.finalDelay);
|
||||||
|
|
||||||
delays.clear();
|
delays.clear();
|
||||||
|
|
||||||
|
|
11
countdown.sh
11
countdown.sh
|
@ -31,15 +31,8 @@ start(){
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ $SEC -gt 0 ] ; then
|
if [ $SEC -gt 0 ] ; then
|
||||||
#echo freeze > /sys/power/state
|
sh /mnt/flash-disk/low_power.sh 1
|
||||||
echo sleep > /etc/kernel_state
|
|
||||||
pkill scanservice
|
|
||||||
/etc/usbmonitor &
|
|
||||||
/etc/pm_control off
|
|
||||||
echo 0 > /sys/class/leds/red/brightness
|
|
||||||
echo 0 > /sys/class/leds/white/brightness
|
|
||||||
echo 0 > /sys/class/leds/green/brightness
|
|
||||||
echo 1 > /sys/class/leds/green/brightness
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1 +1,11 @@
|
||||||
ps -efww|grep countdown |grep -v grep|cut -c 9-15|xargs kill -9
|
#!/bin/bash
|
||||||
|
|
||||||
|
ID=`PS -EF | grep countdown.sh | grep -v grep |awk '{printf $2}'`
|
||||||
|
|
||||||
|
echo $ID
|
||||||
|
|
||||||
|
for id in $ID
|
||||||
|
do
|
||||||
|
kill -9 $id
|
||||||
|
echo "kill $id"
|
||||||
|
done
|
73
main.cpp
73
main.cpp
|
@ -228,7 +228,7 @@ int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
creat_sleep_fifo();
|
||||||
init_get_CISType_GPIO();
|
init_get_CISType_GPIO();
|
||||||
initscanner();
|
initscanner();
|
||||||
start_enter_lowpwoer();
|
start_enter_lowpwoer();
|
||||||
|
@ -323,7 +323,6 @@ int main(int argc, char *argv[])
|
||||||
auto data = m_scanner->GetEvent();
|
auto data = m_scanner->GetEvent();
|
||||||
if (data.code == (int)(HG_ScannerStatus::STOP_SCAN))
|
if (data.code == (int)(HG_ScannerStatus::STOP_SCAN))
|
||||||
{
|
{
|
||||||
system("cpufreq-set -g ondemand");
|
|
||||||
printf("关闭V4L2 4444\r\n");
|
printf("关闭V4L2 4444\r\n");
|
||||||
m_scanner->close_v4l2();
|
m_scanner->close_v4l2();
|
||||||
}
|
}
|
||||||
|
@ -355,16 +354,6 @@ int main(int argc, char *argv[])
|
||||||
if (info.pJpegData != nullptr && info.DataLength != 0)
|
if (info.pJpegData != nullptr && info.DataLength != 0)
|
||||||
{
|
{
|
||||||
int tt = m_scanner->write_bulk((void *)&info, sizeof(int) * 8);
|
int tt = m_scanner->write_bulk((void *)&info, sizeof(int) * 8);
|
||||||
//printf("USB传输第一次write_bulk时间 :%f \r\n",sw.elapsed_ms());
|
|
||||||
// tt = m_scanner->write_bulk(info.pJpegData, info.DataLength);
|
|
||||||
// //free(info.pJpegData);
|
|
||||||
// printf("USB传输第二次write_bulk时间 :%f \r\n",sw.elapsed_ms());
|
|
||||||
// break;
|
|
||||||
|
|
||||||
// tt = m_scanner->write_bulk(info.mat.data, info.DataLength);
|
|
||||||
// free(info.pJpegData);
|
|
||||||
// break;
|
|
||||||
// LOG("GET_IMAGE info.pJpegData =%p info.DataLength=%d \n", info.pJpegData, info.DataLength);
|
|
||||||
int index = 0;
|
int index = 0;
|
||||||
int total = info.DataLength;
|
int total = info.DataLength;
|
||||||
while (total > 0)
|
while (total > 0)
|
||||||
|
@ -376,30 +365,18 @@ int main(int argc, char *argv[])
|
||||||
total = 0; // jpeg图像小于1MB 则一次传输
|
total = 0; // jpeg图像小于1MB 则一次传输
|
||||||
}
|
}
|
||||||
else // 压缩大于1MB的图像 分包传输
|
else // 压缩大于1MB的图像 分包传输
|
||||||
{
|
|
||||||
total -= dstlength;
|
total -= dstlength;
|
||||||
}
|
|
||||||
|
|
||||||
int tt = m_scanner->write_bulk(info.pJpegData + index, dstlength);
|
int tt = m_scanner->write_bulk(info.pJpegData + index, dstlength);
|
||||||
//printf("USB传输第二次write_bulk时间 :%f \r\n",sw.elapsed_ms());
|
|
||||||
|
|
||||||
// printf("write_bulk info.pJpegData+index = %p index = %d dstlength =%d tt = %d \n", info.pJpegData + index, index, dstlength, tt);
|
|
||||||
if (tt <= -1)
|
if (tt <= -1)
|
||||||
{
|
{
|
||||||
LOG("FAIL GET_IMAGE write bulk data error\n");
|
LOG("FAIL GET_IMAGE write bulk data error\n");
|
||||||
// writesyslog(LOG_WARNING, "usb write_bulk error,lost image!");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
index += tt;
|
index += tt;
|
||||||
}
|
}
|
||||||
//dnasfree(info.pJpegData);
|
|
||||||
//tjFree(info.pJpegData);
|
|
||||||
//LOG("Free info.pJpegData done\n");
|
|
||||||
if (info.dpi)
|
|
||||||
{
|
|
||||||
free(info.pJpegData);
|
|
||||||
}
|
|
||||||
|
|
||||||
sw1.reset();
|
sw1.reset();
|
||||||
printf("USB传输一帧第[%d]次时间 :%f \r\n",indx,sw.elapsed_ms());
|
printf("USB传输一帧第[%d]次时间 :%f \r\n",indx,sw.elapsed_ms());
|
||||||
|
@ -409,11 +386,8 @@ int main(int argc, char *argv[])
|
||||||
break;
|
break;
|
||||||
case USBCommand::START_COMMAND:
|
case USBCommand::START_COMMAND:
|
||||||
{
|
{
|
||||||
system("cpufreq-set -g performance");
|
|
||||||
LOG("start scan scancount = %d\n", usbcb.Data);
|
LOG("start scan scancount = %d\n", usbcb.Data);
|
||||||
m_scanner->StartScan(usbcb.Data);
|
m_scanner->StartScan(usbcb.Data);
|
||||||
std::string loginfo = "start scan dst scan num = " + to_string(usbcb.Data) + "\n";
|
|
||||||
writesyslog(LOG_INFO, loginfo);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case USBCommand::STOP:
|
case USBCommand::STOP:
|
||||||
|
@ -434,7 +408,6 @@ int main(int argc, char *argv[])
|
||||||
config.value = usbcb.Data;
|
config.value = usbcb.Data;
|
||||||
m_scanner->ConfigScanParam(config);
|
m_scanner->ConfigScanParam(config);
|
||||||
std::string loginfo = "config scanner config data = " + to_string(usbcb.Data) + "\n";
|
std::string loginfo = "config scanner config data = " + to_string(usbcb.Data) + "\n";
|
||||||
writesyslog(LOG_INFO, loginfo);
|
|
||||||
LOG("CONFIGURED_DATA data = %d \n", config.value);
|
LOG("CONFIGURED_DATA data = %d \n", config.value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -534,9 +507,8 @@ int main(int argc, char *argv[])
|
||||||
// break;
|
// break;
|
||||||
case USBCommand::PRE_UPGRADE:
|
case USBCommand::PRE_UPGRADE:
|
||||||
{
|
{
|
||||||
writesyslog(LOG_INFO, "start updating system\n");
|
|
||||||
LOG("start PRE_UPGRADE \n");
|
LOG("start PRE_UPGRADE \n");
|
||||||
updatePkg.open("/usr/local/update.zip", ios::out | ios::binary);
|
updatePkg.open("/home/root/update.zip", ios::out | ios::binary);
|
||||||
m_scanner->SetLEDStatus(LedStatus::Updating);
|
m_scanner->SetLEDStatus(LedStatus::Updating);
|
||||||
total_length = usbcb.Length;
|
total_length = usbcb.Length;
|
||||||
}
|
}
|
||||||
|
@ -569,18 +541,12 @@ int main(int argc, char *argv[])
|
||||||
this_thread::sleep_for(std::chrono::seconds(10));
|
this_thread::sleep_for(std::chrono::seconds(10));
|
||||||
m_scanner->SetLEDStatus(LedStatus::UpdateDone);
|
m_scanner->SetLEDStatus(LedStatus::UpdateDone);
|
||||||
updatePkg.close();
|
updatePkg.close();
|
||||||
system("cp /usr/local/update.zip /userdata/update.zip -f");
|
system("sh /mnt/flash-disk/upgrade_firmware.sh");
|
||||||
system("rm -rf /usr/local/update.zip");
|
|
||||||
// m_scanner->SetLEDStatus(LedStatus::Ready);
|
|
||||||
// this_thread::sleep_for(std::chrono::seconds(3));
|
|
||||||
// total_length = 0;
|
|
||||||
// writesyslog(LOG_INFO, "update system finished\n");
|
|
||||||
// system("reboot");
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case USBCommand::REBOOT:
|
case USBCommand::REBOOT:
|
||||||
{
|
{
|
||||||
writesyslog(LOG_INFO, "scanservices aquired reboot\n");
|
|
||||||
if (usbcb.Data == 0)
|
if (usbcb.Data == 0)
|
||||||
system("reboot");
|
system("reboot");
|
||||||
else
|
else
|
||||||
|
@ -622,7 +588,6 @@ int main(int argc, char *argv[])
|
||||||
if (tt == -1)
|
if (tt == -1)
|
||||||
{
|
{
|
||||||
LOG("GET_LOG_FILES_INFO write bulk data error\n");
|
LOG("GET_LOG_FILES_INFO write bulk data error\n");
|
||||||
writesyslog(LOG_WARNING, "usb write_bulk error,lost log data!");
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -635,7 +600,7 @@ int main(int argc, char *argv[])
|
||||||
break;
|
break;
|
||||||
case USBCommand::GET_UPDATE_RESULT:
|
case USBCommand::GET_UPDATE_RESULT:
|
||||||
{
|
{
|
||||||
fstream updateResult("/userdata/md5_result.log");
|
fstream updateResult("/mnt/flash-disk/updata_status.txt");
|
||||||
if (!updateResult.is_open())
|
if (!updateResult.is_open())
|
||||||
usbcb.Data = 0;
|
usbcb.Data = 0;
|
||||||
else
|
else
|
||||||
|
@ -643,19 +608,18 @@ int main(int argc, char *argv[])
|
||||||
updateResult >> usbcb.Data;
|
updateResult >> usbcb.Data;
|
||||||
updateResult.close();
|
updateResult.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("usbcb.Data:%d\r\n",usbcb.Data);
|
||||||
m_scanner->write_bulk(&usbcb, sizeof(usbcb));
|
m_scanner->write_bulk(&usbcb, sizeof(usbcb));
|
||||||
this_thread::sleep_for(std::chrono::milliseconds(1000));
|
this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||||
|
|
||||||
if (usbcb.Data == 2)
|
if (usbcb.Data == 0)
|
||||||
system("reboot");
|
system("reboot");
|
||||||
else if (usbcb.Data == 3)
|
|
||||||
system("update ota /userdata/updatefile/update.img");
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case USBCommand::CLEAR_LOG_FILES:
|
case USBCommand::CLEAR_LOG_FILES:
|
||||||
{
|
{
|
||||||
system("echo \"\" > /var/log/syslog");
|
system("echo \"\" > /var/log/syslog");
|
||||||
writesyslog(LOG_WARNING, "clear /var/log/syslog contents!");
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case USBCommand::GET_SCANN_NUM:
|
case USBCommand::GET_SCANN_NUM:
|
||||||
|
@ -700,8 +664,15 @@ int main(int argc, char *argv[])
|
||||||
break;
|
break;
|
||||||
case USBCommand::ACTIVE_SCANNER:
|
case USBCommand::ACTIVE_SCANNER:
|
||||||
{
|
{
|
||||||
usbcb.Data = 0x10;
|
int ret = get_devs_status(SLEEP_STATUS_PATH);
|
||||||
|
|
||||||
|
printf("sleep status :%d\r\n",ret);
|
||||||
|
usbcb.Data = ret == SCANNER_ERR_SLEEP ? 0x100 : 0x10;
|
||||||
m_scanner->write_bulk(&usbcb, sizeof(usbcb));
|
m_scanner->write_bulk(&usbcb, sizeof(usbcb));
|
||||||
|
if (ret == SCANNER_ERR_SLEEP)
|
||||||
|
{
|
||||||
|
system("sh /mnt/flash-disk/low_power.sh 0");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case USBCommand::SET_USB_INFOR_VIDPID:
|
case USBCommand::SET_USB_INFOR_VIDPID:
|
||||||
|
@ -712,9 +683,6 @@ int main(int argc, char *argv[])
|
||||||
info.VID = t_vidpid.VID;
|
info.VID = t_vidpid.VID;
|
||||||
info.PID = t_vidpid.PID;
|
info.PID = t_vidpid.PID;
|
||||||
SaveScaninfo(info);
|
SaveScaninfo(info);
|
||||||
string usbvidpid = "/etc/mdfusbconfig " + to_string(t_vidpid.VID) + " " + to_string(t_vidpid.PID);
|
|
||||||
LOG("SET_USB_INFOR_VIDPID + %s \n", usbvidpid.c_str());
|
|
||||||
system(usbvidpid.c_str());
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case USBCommand::GET_USB_INFOR_VIDPID:
|
case USBCommand::GET_USB_INFOR_VIDPID:
|
||||||
|
@ -791,7 +759,6 @@ int main(int argc, char *argv[])
|
||||||
std::string lut_path = "/mnt/flash-disk/huago/lut" + std::to_string(dpi) + mode + is_white_lut + ".bmp";
|
std::string lut_path = "/mnt/flash-disk/huago/lut" + std::to_string(dpi) + mode + is_white_lut + ".bmp";
|
||||||
lut_item.open(lut_path, std::ios_base::in | std::ios_base::binary);
|
lut_item.open(lut_path, std::ios_base::in | std::ios_base::binary);
|
||||||
|
|
||||||
|
|
||||||
if (!lut_item.is_open())
|
if (!lut_item.is_open())
|
||||||
{
|
{
|
||||||
flatinfo.params.datalen = 0;
|
flatinfo.params.datalen = 0;
|
||||||
|
@ -825,9 +792,10 @@ int main(int argc, char *argv[])
|
||||||
flatinfo.params.datalen = 0;
|
flatinfo.params.datalen = 0;
|
||||||
flatinfo.params.status = 3; // 未知dpi
|
flatinfo.params.status = 3; // 未知dpi
|
||||||
}
|
}
|
||||||
|
|
||||||
usbcb.Data = flatinfo.value;
|
usbcb.Data = flatinfo.value;
|
||||||
printf("flatinfo.params.status:%d flatinfo.params.datalen:%d flatinfo.value:%d\r\n",flatinfo.params.status,flatinfo.params.datalen,flatinfo.value);
|
printf("flatinfo.params.status:%d\r\n" ,flatinfo.params.status);
|
||||||
|
printf("flatinfo.params.datalen:%d\r\n" ,flatinfo.params.datalen);
|
||||||
|
printf("flatinfo.value:%d\r\n",flatinfo.value);
|
||||||
m_scanner->write_bulk(&usbcb, sizeof(usbcb));
|
m_scanner->write_bulk(&usbcb, sizeof(usbcb));
|
||||||
|
|
||||||
if (lut_buffer)
|
if (lut_buffer)
|
||||||
|
@ -852,6 +820,5 @@ int main(int argc, char *argv[])
|
||||||
LOG("reset scanner \n");
|
LOG("reset scanner \n");
|
||||||
LOG("reset usb \n");
|
LOG("reset usb \n");
|
||||||
LOG("scanservice exit \n");
|
LOG("scanservice exit \n");
|
||||||
writesyslog(LOG_INFO, "usb disconnect! scanservices exit now");
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
|
@ -236,7 +236,7 @@ static std::map<PaperSize,int> paperHeight={
|
||||||
|
|
||||||
union HG_ScanConfiguration
|
union HG_ScanConfiguration
|
||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
unsigned int pageSize : 5;
|
unsigned int pageSize : 5;
|
||||||
unsigned int isColor : 1;
|
unsigned int isColor : 1;
|
||||||
|
@ -246,7 +246,8 @@ union HG_ScanConfiguration
|
||||||
unsigned int enableLed : 1;
|
unsigned int enableLed : 1;
|
||||||
unsigned int enableSizeDetect : 1;
|
unsigned int enableSizeDetect : 1;
|
||||||
unsigned int lutmode : 1 ;
|
unsigned int lutmode : 1 ;
|
||||||
unsigned int reversed1 : 4;
|
unsigned int slow_moire : 1;
|
||||||
|
unsigned int reversed1 : 3;
|
||||||
unsigned int isCorrect : 1;
|
unsigned int isCorrect : 1;
|
||||||
unsigned int dstHeight : 8;
|
unsigned int dstHeight : 8;
|
||||||
unsigned int reversed2 : 6;
|
unsigned int reversed2 : 6;
|
||||||
|
@ -358,3 +359,16 @@ union FLAT_INFO
|
||||||
}params;
|
}params;
|
||||||
unsigned int value;
|
unsigned int value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define SLEEP_STATUS_PATH "/mnt/flash-disk/sleep_status.txt"
|
||||||
|
#define UPDATE_STATUS_PATH "/mnt/flash-disk/update_status.txt"
|
||||||
|
enum scanner_err
|
||||||
|
{
|
||||||
|
SCANNER_ERR_OK = 0, //设备正常状态
|
||||||
|
SCANNER_ERR_SLEEP, //设备处于休眠当中
|
||||||
|
SCANNER_ERR_UPDATE_OK, //设备更新:成功
|
||||||
|
SCANNER_ERR_UPDATE_UPDATAING, //设备更新:进行中
|
||||||
|
SCANNER_ERR_UPDATE_CHECK_VAL_ERROR, //设备更新:校验检测错误
|
||||||
|
SCANNER_ERR_UPDATE_CHECK_FILE_LOST, //设备更新:文件丢失
|
||||||
|
SCANNER_ERR_UPDATE_UNZIP_FAIL, //设备更新:解压失败
|
||||||
|
};
|
|
@ -17,6 +17,9 @@
|
||||||
#define LUT_COLOR_LUT_PATH "/usr/local/huago/color_lut.bmp"
|
#define LUT_COLOR_LUT_PATH "/usr/local/huago/color_lut.bmp"
|
||||||
#define LUT_GRAY_LUT_PATH "/usr/local/huago/gray_lut.bmp"
|
#define LUT_GRAY_LUT_PATH "/usr/local/huago/gray_lut.bmp"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static std::unique_ptr<TypeIO> g_sTypeio;
|
static std::unique_ptr<TypeIO> g_sTypeio;
|
||||||
|
|
||||||
//using namespace cv;
|
//using namespace cv;
|
||||||
|
@ -358,22 +361,32 @@ std::string getmeminfo()
|
||||||
void start_enter_lowpwoer()
|
void start_enter_lowpwoer()
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_LOWPOWERMODE
|
#ifdef ENABLE_LOWPOWERMODE
|
||||||
// int seconds=900;
|
// // stop_countdown();
|
||||||
// auto scaninfo= js_config.GetScanInfo();
|
// int seconds=900;
|
||||||
// if(scaninfo.SleepTime<0||scaninfo.SleepTime<180)
|
// auto scaninfo= js_config.GetScanInfo();
|
||||||
// seconds=180;
|
// if(scaninfo.SleepTime<0||scaninfo.SleepTime<180)
|
||||||
// else
|
// seconds=180;
|
||||||
// seconds=scaninfo.SleepTime;
|
// else
|
||||||
// std::string str="sh /etc/countdown.sh start 0 0 "+std::to_string(seconds)+" &";
|
// seconds=scaninfo.SleepTime;
|
||||||
// LOG("start_enter_lowpwoer %s \n",str.c_str());
|
// std::string str="sh /mnt/flash-disk/countdown.sh start 0 0 "+std::to_string(seconds) + " &";
|
||||||
// system(str.c_str());
|
// 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);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void stop_countdown()
|
void stop_countdown()
|
||||||
{
|
{
|
||||||
#ifdef ENABLE_LOWPOWERMODE
|
#ifdef ENABLE_LOWPOWERMODE
|
||||||
system("sh /etc/hgkilltimer.sh");
|
// 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
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -402,3 +415,53 @@ SMBType GetSMBType()
|
||||||
g_sTypeio = std::make_unique<TypeIO>(CIS_T_S0, CIS_T_S1, CIS_T_S2, CIS_T_S3);
|
g_sTypeio = std::make_unique<TypeIO>(CIS_T_S0, CIS_T_S1, CIS_T_S2, CIS_T_S3);
|
||||||
return g_sTypeio->GetMotorType();
|
return g_sTypeio->GetMotorType();
|
||||||
}
|
}
|
||||||
|
int creat_sleep_fifo()
|
||||||
|
{
|
||||||
|
if (access("/home/root/dev/", F_OK) == -1)
|
||||||
|
{
|
||||||
|
system("mkdir /home/root/dev/");
|
||||||
|
}
|
||||||
|
int ret = mkfifo("/home/root/dev/sleep", 0666);
|
||||||
|
if (!ret)
|
||||||
|
{
|
||||||
|
perror("mkfifo");
|
||||||
|
}
|
||||||
|
|
||||||
|
sleep_fd_ = open("/home/root/dev/sleep", O_WRONLY);
|
||||||
|
if(sleep_fd_ < 0)
|
||||||
|
{
|
||||||
|
perror("open fifo fail");
|
||||||
|
}
|
||||||
|
return sleep_fd_;
|
||||||
|
}
|
||||||
|
|
||||||
|
int write_sleep_fifo(int status)
|
||||||
|
{
|
||||||
|
if(sleep_fd_ < 0)
|
||||||
|
{
|
||||||
|
perror("write_sleep_fifo open fifo fail");
|
||||||
|
return sleep_fd_;
|
||||||
|
}
|
||||||
|
|
||||||
|
char buffer[12];
|
||||||
|
sprintf(buffer,"%d",status);
|
||||||
|
printf("status:%d\r\n",status);
|
||||||
|
int ret = write(sleep_fd_,buffer,strlen(buffer));
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
//睡眠状态 //更新状态 等等
|
||||||
|
int get_devs_status(std::string filename)
|
||||||
|
{
|
||||||
|
std::ifstream in;
|
||||||
|
in.open(filename.c_str(),ios::in);
|
||||||
|
if (!in.is_open())
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
char buf[1024] = { 0 };
|
||||||
|
in >> buf;
|
||||||
|
return atoi(buf);
|
||||||
|
}
|
|
@ -9,6 +9,7 @@
|
||||||
//static cv::Mat lutoldGrayMat; //灰色校正值
|
//static cv::Mat lutoldGrayMat; //灰色校正值
|
||||||
//static cv::Mat lutoldColorMat; //彩色校正值
|
//static cv::Mat lutoldColorMat; //彩色校正值
|
||||||
static JsonConfig js_config;
|
static JsonConfig js_config;
|
||||||
|
static int sleep_fd_ = 0;
|
||||||
|
|
||||||
|
|
||||||
//cv::Mat extractRepresentRow(const cv::Mat& src);
|
//cv::Mat extractRepresentRow(const cv::Mat& src);
|
||||||
|
@ -48,3 +49,7 @@ CISVendor GetCisType();
|
||||||
|
|
||||||
/*获取扫描板类型*/
|
/*获取扫描板类型*/
|
||||||
SMBType GetSMBType();
|
SMBType GetSMBType();
|
||||||
|
|
||||||
|
int creat_sleep_fifo();
|
||||||
|
int write_sleep_fifo(int status);
|
||||||
|
int get_devs_status(std::string filename);
|
Loading…
Reference in New Issue