增加守护进程 增加摩尔纹模式,调整bug
This commit is contained in:
parent
947e525ce8
commit
91a5de2d13
|
@ -112,16 +112,16 @@ 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 ",
|
||||
// m_cuoparamex.speed,
|
||||
// m_cuoparamex.dpi,
|
||||
// m_cuoparamex.colormode,
|
||||
// m_cuoparamex.mt_param.finalPeriod,
|
||||
// m_cuoparamex.mt_param.Fmin,
|
||||
// m_cuoparamex.mt_param.a,
|
||||
// m_cuoparamex.mt_param.offset,
|
||||
// m_cuoparamex.mt_param.stepnum,
|
||||
// m_cuoparamex.mt_param.finalDelay);
|
||||
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.dpi,
|
||||
m_cuoparamex.colormode,
|
||||
m_cuoparamex.mt_param.finalPeriod,
|
||||
m_cuoparamex.mt_param.Fmin,
|
||||
m_cuoparamex.mt_param.a,
|
||||
m_cuoparamex.mt_param.offset,
|
||||
m_cuoparamex.mt_param.stepnum,
|
||||
m_cuoparamex.mt_param.finalDelay);
|
||||
|
||||
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,
|
||||
|
|
|
@ -291,7 +291,6 @@ FsmState *ScanningState::on_event(ScanEvent event)
|
|||
scanner->SetIsDoublePaper(true);
|
||||
scanner->emergency_stop(1);
|
||||
LOG("\nScanningState S_EVT_DOUBLEPAPER %s \n",GetCurrentTimeStamp(2).c_str());
|
||||
writesyslog(LOG_INFO,"double paper error\n");
|
||||
return FsmStateManagerEx<ErrorJamState>::GetState();
|
||||
}
|
||||
else if (event == S_EVT_JAM_IN)
|
||||
|
|
|
@ -207,7 +207,7 @@ int HCamDevice::uninit_fpga()
|
|||
|
||||
int HCamDevice::open_device(int width , int height)
|
||||
{
|
||||
|
||||
close_device();
|
||||
v4lWidth = width;//@300dpi 5184 @600dpi 5184*2
|
||||
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.height = %d\n", fmt.fmt.pix_mp.height);
|
||||
camera_print(" fmt.fmt.pix.field = %d\n", fmt.fmt.pix_mp.field);
|
||||
// close(videofd);
|
||||
close_device();
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -1363,7 +1363,7 @@ void HCamDevice::HtCamResizeBuffer(int width, int height, int number)
|
|||
v4lHeight = height;
|
||||
v4lBufferCount = number;
|
||||
|
||||
HtCamExitVideoCapturing();
|
||||
close_device();
|
||||
init_sample();
|
||||
init_capture();
|
||||
init_video_buffer();
|
||||
|
|
|
@ -80,6 +80,9 @@ void MultiFrameCapture::SetParent(void *scanner)
|
|||
|
||||
void MultiFrameCapture::open()
|
||||
{
|
||||
printf("open-------\r\n");
|
||||
//stop_countdown();
|
||||
printf("open close-------\r\n");
|
||||
int ret = video->open_device(v4l2_width_,v4l2_height_);
|
||||
if(ret < -1)
|
||||
return;
|
||||
|
@ -176,6 +179,11 @@ SIZE MultiFrameCapture::GetPaperSize(PaperSize paper, int dpi)
|
|||
void MultiFrameCapture::UpdateScanParam(HG_ScanConfiguration 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())
|
||||
{
|
||||
|
@ -213,6 +221,22 @@ void MultiFrameCapture::UpdateScanParam(HG_ScanConfiguration config)
|
|||
{
|
||||
int val = config.params.dpi == 3 ? 600 :(config.params.dpi == 2?300:200);
|
||||
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) ;
|
||||
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 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";
|
||||
|
||||
double step = diff * radio;
|
||||
|
|
51
Scanner.cpp
51
Scanner.cpp
|
@ -33,37 +33,26 @@ Scanner::Scanner(ScannerGlue glue)
|
|||
capturer->SetParent(this);
|
||||
//固件版本
|
||||
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)
|
||||
{
|
||||
if (!IsScanning()) //未扫描
|
||||
{
|
||||
if (eventtype == BTN_LOW_POWER)
|
||||
switch (eventtype)
|
||||
{
|
||||
//system("echo mem > /sys/power/state");
|
||||
//capturer->SetLowPower(0);
|
||||
system("/mnt/flash-disk/low_power.sh 1");
|
||||
}
|
||||
else if (eventtype == BTN_START)
|
||||
{
|
||||
// put(S_EVT_START_SCAN);
|
||||
}
|
||||
else if(eventtype == BTN_NORMAL_POWER)
|
||||
{
|
||||
//capturer->SetLowPower(1);
|
||||
system("/mnt/flash-disk/low_power.sh 0");
|
||||
case BTN_LOW_POWER:
|
||||
stop_countdown();
|
||||
system("sh /mnt/flash-disk/low_power.sh 1");
|
||||
break;
|
||||
case BTN_NORMAL_POWER:
|
||||
system("sh /mnt/flash-disk/low_power.sh 0");
|
||||
start_enter_lowpwoer();
|
||||
break;
|
||||
case BTN_START:
|
||||
/* code */
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else //扫描中
|
||||
|
@ -71,7 +60,7 @@ Scanner::Scanner(ScannerGlue glue)
|
|||
if (eventtype == BTN_STOP)
|
||||
{
|
||||
put(S_EVT_STOP_SCAN);
|
||||
LOG("BTN_STOP put(S_EVT_STOP_SCAN)");
|
||||
printf("keyboard cancel scan\r\n");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -117,9 +106,13 @@ void Scanner::updateSpeedMode(int speed)
|
|||
unsigned int t_dpi = m_config.params.dpi;
|
||||
|
||||
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;
|
||||
|
||||
if (m_config.params.slow_moire) //摩尔纹使用300dpi进行采集
|
||||
{
|
||||
t_dpi = 2;
|
||||
}
|
||||
|
||||
motorCuozhi.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())
|
||||
threadRunScan.join();
|
||||
stop_countdown();
|
||||
this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||
updateSpeedMode(4);
|
||||
// //开始进行扫描
|
||||
threadRunScan = std::thread(&Scanner::runScan, this);
|
||||
|
@ -256,7 +250,6 @@ void Scanner::runScan()
|
|||
m_jamIn = true;
|
||||
put(S_EVT_JAM_IN);
|
||||
m_scaninfo.JamInNum++;
|
||||
//writesyslog(LOG_INFO, "paper jam in error \n");
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -144,7 +144,6 @@ UsbScanner::UsbScanner() : m_startscan(false),
|
|||
if (eventID == (int)HG_ScannerStatus::STOP_SCAN)
|
||||
{
|
||||
m_startscan = false;
|
||||
writesyslog(LOG_INFO, getmeminfo());
|
||||
}
|
||||
if (eventID == (int)(HG_ScannerStatus::AUTO_FLAT_FINISHED))
|
||||
{
|
||||
|
@ -179,7 +178,7 @@ void UsbScanner::StartScan(int scancount)
|
|||
{
|
||||
ClearImages();
|
||||
ClearErrorEvents();
|
||||
m_hgScanner->SetDstScanNum(9999);//scancount <= 0 ? 1 : scancount);
|
||||
m_hgScanner->SetDstScanNum(scancount <= 0 ? 1 : scancount);
|
||||
m_hgScanner->put(S_EVT_START_SCAN);
|
||||
}
|
||||
|
||||
|
@ -400,7 +399,7 @@ void UsbScanner::UpdateScanInfo(int type, void *data)
|
|||
info.SleepTime = *(unsigned int *)(data);
|
||||
printf("set sleep time = %d \n", info.SleepTime);
|
||||
SaveScaninfo(info);
|
||||
stop_countdown();
|
||||
//stop_countdown();
|
||||
start_enter_lowpwoer();
|
||||
return;
|
||||
case USBCommand::SET_SPEED_MODE:
|
||||
|
|
|
@ -32,16 +32,16 @@ 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 ",
|
||||
// m_zouparamex.speed,
|
||||
// m_zouparamex.dpi,
|
||||
// m_zouparamex.colormode,
|
||||
// m_zouparamex.mt_param.finalPeriod,
|
||||
// m_zouparamex.mt_param.Fmin,
|
||||
// m_zouparamex.mt_param.a,
|
||||
// m_zouparamex.mt_param.offset,
|
||||
// m_zouparamex.mt_param.stepnum,
|
||||
// m_zouparamex.mt_param.finalDelay);
|
||||
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.dpi,
|
||||
m_zouparamex.colormode,
|
||||
m_zouparamex.mt_param.finalPeriod,
|
||||
m_zouparamex.mt_param.Fmin,
|
||||
m_zouparamex.mt_param.a,
|
||||
m_zouparamex.mt_param.offset,
|
||||
m_zouparamex.mt_param.stepnum,
|
||||
m_zouparamex.mt_param.finalDelay);
|
||||
|
||||
delays.clear();
|
||||
|
||||
|
|
11
countdown.sh
11
countdown.sh
|
@ -31,15 +31,8 @@ start(){
|
|||
done
|
||||
|
||||
if [ $SEC -gt 0 ] ; then
|
||||
#echo freeze > /sys/power/state
|
||||
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
|
||||
sh /mnt/flash-disk/low_power.sh 1
|
||||
|
||||
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
|
75
main.cpp
75
main.cpp
|
@ -228,7 +228,7 @@ int main(int argc, char *argv[])
|
|||
{
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
creat_sleep_fifo();
|
||||
init_get_CISType_GPIO();
|
||||
initscanner();
|
||||
start_enter_lowpwoer();
|
||||
|
@ -323,7 +323,6 @@ int main(int argc, char *argv[])
|
|||
auto data = m_scanner->GetEvent();
|
||||
if (data.code == (int)(HG_ScannerStatus::STOP_SCAN))
|
||||
{
|
||||
system("cpufreq-set -g ondemand");
|
||||
printf("关闭V4L2 4444\r\n");
|
||||
m_scanner->close_v4l2();
|
||||
}
|
||||
|
@ -355,16 +354,6 @@ int main(int argc, char *argv[])
|
|||
if (info.pJpegData != nullptr && info.DataLength != 0)
|
||||
{
|
||||
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 total = info.DataLength;
|
||||
while (total > 0)
|
||||
|
@ -376,31 +365,19 @@ int main(int argc, char *argv[])
|
|||
total = 0; // jpeg图像小于1MB 则一次传输
|
||||
}
|
||||
else // 压缩大于1MB的图像 分包传输
|
||||
{
|
||||
total -= 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)
|
||||
{
|
||||
LOG("FAIL GET_IMAGE write bulk data error\n");
|
||||
// writesyslog(LOG_WARNING, "usb write_bulk error,lost image!");
|
||||
break;
|
||||
}
|
||||
else
|
||||
index += tt;
|
||||
}
|
||||
//dnasfree(info.pJpegData);
|
||||
//tjFree(info.pJpegData);
|
||||
//LOG("Free info.pJpegData done\n");
|
||||
if (info.dpi)
|
||||
{
|
||||
free(info.pJpegData);
|
||||
}
|
||||
|
||||
|
||||
|
||||
sw1.reset();
|
||||
printf("USB传输一帧第[%d]次时间 :%f \r\n",indx,sw.elapsed_ms());
|
||||
indx++;
|
||||
|
@ -409,11 +386,8 @@ int main(int argc, char *argv[])
|
|||
break;
|
||||
case USBCommand::START_COMMAND:
|
||||
{
|
||||
system("cpufreq-set -g performance");
|
||||
LOG("start scan scancount = %d\n", 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;
|
||||
case USBCommand::STOP:
|
||||
|
@ -434,7 +408,6 @@ int main(int argc, char *argv[])
|
|||
config.value = usbcb.Data;
|
||||
m_scanner->ConfigScanParam(config);
|
||||
std::string loginfo = "config scanner config data = " + to_string(usbcb.Data) + "\n";
|
||||
writesyslog(LOG_INFO, loginfo);
|
||||
LOG("CONFIGURED_DATA data = %d \n", config.value);
|
||||
}
|
||||
break;
|
||||
|
@ -534,9 +507,8 @@ int main(int argc, char *argv[])
|
|||
// break;
|
||||
case USBCommand::PRE_UPGRADE:
|
||||
{
|
||||
writesyslog(LOG_INFO, "start updating system\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);
|
||||
total_length = usbcb.Length;
|
||||
}
|
||||
|
@ -569,18 +541,12 @@ int main(int argc, char *argv[])
|
|||
this_thread::sleep_for(std::chrono::seconds(10));
|
||||
m_scanner->SetLEDStatus(LedStatus::UpdateDone);
|
||||
updatePkg.close();
|
||||
system("cp /usr/local/update.zip /userdata/update.zip -f");
|
||||
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");
|
||||
system("sh /mnt/flash-disk/upgrade_firmware.sh");
|
||||
|
||||
}
|
||||
break;
|
||||
case USBCommand::REBOOT:
|
||||
{
|
||||
writesyslog(LOG_INFO, "scanservices aquired reboot\n");
|
||||
if (usbcb.Data == 0)
|
||||
system("reboot");
|
||||
else
|
||||
|
@ -622,7 +588,6 @@ int main(int argc, char *argv[])
|
|||
if (tt == -1)
|
||||
{
|
||||
LOG("GET_LOG_FILES_INFO write bulk data error\n");
|
||||
writesyslog(LOG_WARNING, "usb write_bulk error,lost log data!");
|
||||
break;
|
||||
}
|
||||
else
|
||||
|
@ -635,7 +600,7 @@ int main(int argc, char *argv[])
|
|||
break;
|
||||
case USBCommand::GET_UPDATE_RESULT:
|
||||
{
|
||||
fstream updateResult("/userdata/md5_result.log");
|
||||
fstream updateResult("/mnt/flash-disk/updata_status.txt");
|
||||
if (!updateResult.is_open())
|
||||
usbcb.Data = 0;
|
||||
else
|
||||
|
@ -643,19 +608,18 @@ int main(int argc, char *argv[])
|
|||
updateResult >> usbcb.Data;
|
||||
updateResult.close();
|
||||
}
|
||||
|
||||
printf("usbcb.Data:%d\r\n",usbcb.Data);
|
||||
m_scanner->write_bulk(&usbcb, sizeof(usbcb));
|
||||
this_thread::sleep_for(std::chrono::milliseconds(1000));
|
||||
|
||||
if (usbcb.Data == 2)
|
||||
if (usbcb.Data == 0)
|
||||
system("reboot");
|
||||
else if (usbcb.Data == 3)
|
||||
system("update ota /userdata/updatefile/update.img");
|
||||
}
|
||||
break;
|
||||
case USBCommand::CLEAR_LOG_FILES:
|
||||
{
|
||||
system("echo \"\" > /var/log/syslog");
|
||||
writesyslog(LOG_WARNING, "clear /var/log/syslog contents!");
|
||||
}
|
||||
break;
|
||||
case USBCommand::GET_SCANN_NUM:
|
||||
|
@ -700,8 +664,15 @@ int main(int argc, char *argv[])
|
|||
break;
|
||||
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));
|
||||
if (ret == SCANNER_ERR_SLEEP)
|
||||
{
|
||||
system("sh /mnt/flash-disk/low_power.sh 0");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case USBCommand::SET_USB_INFOR_VIDPID:
|
||||
|
@ -712,9 +683,6 @@ int main(int argc, char *argv[])
|
|||
info.VID = t_vidpid.VID;
|
||||
info.PID = t_vidpid.PID;
|
||||
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;
|
||||
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";
|
||||
lut_item.open(lut_path, std::ios_base::in | std::ios_base::binary);
|
||||
|
||||
|
||||
if (!lut_item.is_open())
|
||||
{
|
||||
flatinfo.params.datalen = 0;
|
||||
|
@ -825,9 +792,10 @@ int main(int argc, char *argv[])
|
|||
flatinfo.params.datalen = 0;
|
||||
flatinfo.params.status = 3; // 未知dpi
|
||||
}
|
||||
|
||||
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));
|
||||
|
||||
if (lut_buffer)
|
||||
|
@ -852,6 +820,5 @@ int main(int argc, char *argv[])
|
|||
LOG("reset scanner \n");
|
||||
LOG("reset usb \n");
|
||||
LOG("scanservice exit \n");
|
||||
writesyslog(LOG_INFO, "usb disconnect! scanservices exit now");
|
||||
return 0;
|
||||
}
|
|
@ -236,7 +236,7 @@ static std::map<PaperSize,int> paperHeight={
|
|||
|
||||
union HG_ScanConfiguration
|
||||
{
|
||||
struct
|
||||
struct
|
||||
{
|
||||
unsigned int pageSize : 5;
|
||||
unsigned int isColor : 1;
|
||||
|
@ -246,7 +246,8 @@ union HG_ScanConfiguration
|
|||
unsigned int enableLed : 1;
|
||||
unsigned int enableSizeDetect : 1;
|
||||
unsigned int lutmode : 1 ;
|
||||
unsigned int reversed1 : 4;
|
||||
unsigned int slow_moire : 1;
|
||||
unsigned int reversed1 : 3;
|
||||
unsigned int isCorrect : 1;
|
||||
unsigned int dstHeight : 8;
|
||||
unsigned int reversed2 : 6;
|
||||
|
@ -358,3 +359,16 @@ union FLAT_INFO
|
|||
}params;
|
||||
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_GRAY_LUT_PATH "/usr/local/huago/gray_lut.bmp"
|
||||
|
||||
|
||||
|
||||
|
||||
static std::unique_ptr<TypeIO> g_sTypeio;
|
||||
|
||||
//using namespace cv;
|
||||
|
@ -358,22 +361,32 @@ std::string getmeminfo()
|
|||
void start_enter_lowpwoer()
|
||||
{
|
||||
#ifdef ENABLE_LOWPOWERMODE
|
||||
// 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 /etc/countdown.sh start 0 0 "+std::to_string(seconds)+" &";
|
||||
// LOG("start_enter_lowpwoer %s \n",str.c_str());
|
||||
// system(str.c_str());
|
||||
// // 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);
|
||||
#endif
|
||||
}
|
||||
|
||||
void stop_countdown()
|
||||
{
|
||||
#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
|
||||
}
|
||||
|
||||
|
@ -401,4 +414,54 @@ SMBType GetSMBType()
|
|||
{ if(!g_sTypeio.get())
|
||||
g_sTypeio = std::make_unique<TypeIO>(CIS_T_S0, CIS_T_S1, CIS_T_S2, CIS_T_S3);
|
||||
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 lutoldColorMat; //彩色校正值
|
||||
static JsonConfig js_config;
|
||||
static int sleep_fd_ = 0;
|
||||
|
||||
|
||||
//cv::Mat extractRepresentRow(const cv::Mat& src);
|
||||
|
@ -48,3 +49,7 @@ CISVendor GetCisType();
|
|||
|
||||
/*获取扫描板类型*/
|
||||
SMBType GetSMBType();
|
||||
|
||||
int creat_sleep_fifo();
|
||||
int write_sleep_fifo(int status);
|
||||
int get_devs_status(std::string filename);
|
Loading…
Reference in New Issue