调整代码归还
This commit is contained in:
parent
095f175529
commit
f60edbd565
|
@ -1,78 +0,0 @@
|
|||
cmake_minimum_required(VERSION 3.0.0)
|
||||
project(scanservice)
|
||||
add_compile_options(-std=c++14)
|
||||
#set (CMAKE_GENERATOR "/home/holdtecs/zzm-linux/rk3288-linux/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++")
|
||||
|
||||
|
||||
|
||||
|
||||
#交叉编译配置
|
||||
# set(CMAKE_SYSTEM_NAME Linux)
|
||||
# set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
|
||||
#可选,配置roofs和安装路径如果存在
|
||||
#set(linux_sdk_path /home/holdtecs/zzm-linux/rk3288-linux)
|
||||
#set(linux_sdk_path /mnt/disk2/linux-rhx/rk3288-linux)
|
||||
#set(CMAKE_SYSROOT ${linux_sdk_path}/buildroot/output/rockchip_rk3288/host/arm-buildroot-linux-gnueabihf/sysroot)
|
||||
# set(CMAKE_STAGING_PREFIX ${PROJECT_SOURCE_DIR}/install)
|
||||
|
||||
#编译工具配置
|
||||
#set(tools ${linux_sdk_path}/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf)
|
||||
# set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
|
||||
# set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
|
||||
# set(CMAKE_LIBRARY_ARCHITECTURE arm)
|
||||
add_subdirectory(fpga)
|
||||
set(-mfloat-abi=hard)
|
||||
|
||||
# set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
# set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
# set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
# set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O1 -fvectorize")
|
||||
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fvectorize")
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
|
||||
|
||||
set(OpenCV_DIR /home/modehua/sdk/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi/usr/include/opencv4/)
|
||||
#set(OpenCV_DIR /home/holdtecs/zzm-linux/fs/usr/lib)
|
||||
#find_package( OpenCV 3 REQUIRED )
|
||||
include_directories( ${OpenCV_INCLUDE_DIRS} )
|
||||
|
||||
FILE(GLOB SRC "*.cpp" "*.h" "*.c")
|
||||
FILE(GLOB IMAGEPRO "imageprocess/*.h" "imageprocess/*.cpp" )
|
||||
FILE(GLOB FPGA "fpga/*.h" "fpga/*.cpp" )
|
||||
# message(STATUS "SRC:" ${SRC})
|
||||
# message(STATUS "IMAGEPRO:" ${IMAGEPRO})
|
||||
#message(STATUS "FPGA:" ${FPGA})
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
|
||||
include_directories(
|
||||
fpga
|
||||
imageprocess
|
||||
imageprocess/include
|
||||
#/home/modehua/sdk/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi/usr/include/opencv4/
|
||||
)
|
||||
|
||||
|
||||
add_executable(${PROJECT_NAME} ${SRC})
|
||||
|
||||
#优化代码大小
|
||||
SET(-CMAKE_BUILD_TYPE "Release")
|
||||
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
|
||||
|
||||
|
||||
add_custom_command(TARGET ${PROJECT_NAME}
|
||||
POST_BUILD
|
||||
COMMAND $ENV{STRIP} -s ${PROJECT_NAME})
|
||||
|
||||
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "-s")
|
||||
target_link_libraries(${PROJECT_NAME} ${PROJECT_BINARY_DIR}/bin/libfpgaupdate.a)
|
||||
target_link_libraries(${PROJECT_NAME} opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs turbojpeg pthread )
|
||||
target_link_libraries(${PROJECT_NAME} pthread )
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_SOURCE_DIR}/fpga
|
||||
/home/modehua/sdk/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi/usr/include/opencv4/
|
||||
)
|
282
JsonConfig.cpp
282
JsonConfig.cpp
|
@ -1,282 +0,0 @@
|
|||
#include "JsonConfig.h"
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <fstream>
|
||||
#include <iomanip>
|
||||
#define SCAN_INFO_TITLE "ScanInfo"
|
||||
#define SCAN_TOTAL "TotalScanned"
|
||||
#define SCAN_ROLLERNUM "RollerNum"
|
||||
#define SCAN_CUONUM "CuoNum"
|
||||
#define SCAN_JAMINNUM "JamInNum"
|
||||
#define SCAN_JAMOUTNUM "JamOutNum"
|
||||
#define SCAN_DOUNUM "DoubleNum"
|
||||
#define SCAN_ERRORNUM "ErrorNum"
|
||||
#define SCAN_SERIALNUM "SerialNum"
|
||||
#define SCAN_FWVERSION "FWVersion"
|
||||
#define SCAN_HRATIO "HRatio"
|
||||
#define SCAN_VRATIO "VRatio"
|
||||
#define SCAN_SLEEPTIME "SleepTime"
|
||||
#define SCAN_TOKEN "ScannerToken"
|
||||
#define SCAN_SPEEDMODE "SpeedMode"
|
||||
#define SCAN_VID "VID"
|
||||
#define SCAN_PID "PID"
|
||||
|
||||
#define TOKEN_DEFAULT " "
|
||||
JsonConfig::JsonConfig()
|
||||
{
|
||||
if (access(SCANNER_SCAN_INFO_PATH, F_OK) == -1) //不存在
|
||||
{
|
||||
ScannerScanInfo defaultinfo = CreateDefaultScanInfo();
|
||||
SaveScanInfo(defaultinfo);
|
||||
}
|
||||
}
|
||||
JsonConfig::JsonConfig(ConfigType type) : m_cfgType(type)
|
||||
{
|
||||
}
|
||||
|
||||
JsonConfig::~JsonConfig()
|
||||
{
|
||||
}
|
||||
|
||||
// bool JsonConfig::ReadParam(FPGAConfigParam ¶m)
|
||||
// {
|
||||
// bool ret = false;
|
||||
// if (access(cfgPaths[m_cfgType].c_str(), F_OK) == -1)
|
||||
// {
|
||||
// return ret;
|
||||
// }
|
||||
// std::ifstream i(cfgPaths[m_cfgType]);
|
||||
// json j;
|
||||
// i >> j;
|
||||
// auto &jobject = j[cfgPrefix[m_cfgType]];
|
||||
// jobject[cfgPrefix[m_cfgType] + "ExposureF"].get_to(param.ExposureF);
|
||||
// jobject[cfgPrefix[m_cfgType] + "ExposureB"].get_to(param.ExposureB);
|
||||
// jobject[cfgPrefix[m_cfgType] + "GainF"].get_to(param.GainF);
|
||||
// jobject[cfgPrefix[m_cfgType] + "GainB"].get_to(param.GainB);
|
||||
// jobject[cfgPrefix[m_cfgType] + "OffsetF"].get_to(param.OffsetF);
|
||||
// jobject[cfgPrefix[m_cfgType] + "OffsetB"].get_to(param.OffsetB);
|
||||
// return ret;
|
||||
// }
|
||||
|
||||
// void JsonConfig::WriteParam(FPGAConfigParam &t_param)
|
||||
// {
|
||||
// FPGAConfigParam param;
|
||||
// if (access(cfgPaths[m_cfgType].c_str(), F_OK) == -1)
|
||||
// {
|
||||
// LOG("Not found config %s \n", cfgPaths[m_cfgType].c_str());
|
||||
// param = CreateDefault();
|
||||
// }
|
||||
// else
|
||||
// param = t_param;
|
||||
|
||||
// LOG("start save %s \n", cfgPaths[m_cfgType].c_str());
|
||||
// json m_json;
|
||||
// auto &jobject = m_json[cfgPrefix[m_cfgType]];
|
||||
// jobject[cfgPrefix[m_cfgType] + "ExposureF"] = {param.ExposureF[0], param.ExposureF[1], param.ExposureF[2]};
|
||||
// jobject[cfgPrefix[m_cfgType] + "ExposureB"] = {param.ExposureB[0], param.ExposureB[1], param.ExposureB[2]};
|
||||
// jobject[cfgPrefix[m_cfgType] + "GainF"] = {param.GainF[0], param.GainF[1], param.GainF[2], param.GainF[3], param.GainF[4], param.GainF[5]};
|
||||
// jobject[cfgPrefix[m_cfgType] + "GainB"] = {param.GainB[0], param.GainB[1], param.GainB[2], param.GainB[3], param.GainB[4], param.GainB[5]};
|
||||
// jobject[cfgPrefix[m_cfgType] + "OffsetF"] = {param.OffsetF[0], param.OffsetF[1], param.OffsetF[2], param.OffsetF[3], param.OffsetF[4], param.OffsetF[5]};
|
||||
// jobject[cfgPrefix[m_cfgType] + "OffsetB"] = {param.OffsetB[0], param.OffsetB[1], param.OffsetB[2], param.OffsetB[3], param.OffsetB[4], param.OffsetB[5]};
|
||||
// std::ofstream o(cfgPaths[m_cfgType]);
|
||||
// o << std::setw(4) << m_json << std::endl;
|
||||
// LOG("save config %s down \n", cfgPaths[m_cfgType].c_str());
|
||||
// }
|
||||
|
||||
// FPGAConfigParam JsonConfig::CreateDefault()
|
||||
// {
|
||||
// std::string savePath = cfgPaths[m_cfgType];
|
||||
// FPGAConfigParam param = {0};
|
||||
// for (size_t i = 0; i < 3; i++)
|
||||
// {
|
||||
// param.ExposureF[i] = 259;
|
||||
// param.ExposureB[i] = 238;
|
||||
// }
|
||||
|
||||
// for (size_t i = 0; i < 6; i++)
|
||||
// {
|
||||
// param.GainB[i] = 30;
|
||||
// param.GainF[i] = 30;
|
||||
// param.OffsetB[i] = param.OffsetF[i] = 119;
|
||||
// }
|
||||
// return param;
|
||||
// }
|
||||
|
||||
ScannerScanInfo JsonConfig::CreateDefaultScanInfo()
|
||||
{
|
||||
ScannerScanInfo info;
|
||||
info.CuoNum = 0;
|
||||
info.DoubleNum = 0;
|
||||
info.ErrorNum = 0;
|
||||
info.JamInNum = 0;
|
||||
info.JamOutNum = 0;
|
||||
info.FWVersion = FWVERSION;
|
||||
info.SerialNum = SERIALNUM;
|
||||
info.TotalScanned = 0;
|
||||
info.RollerNum = 0;
|
||||
info.HRatio = 1065353216;//(=(float)1.0)
|
||||
info.VRatio = 1065353216;
|
||||
info.SleepTime=3600;
|
||||
info.Token=TOKEN_DEFAULT;
|
||||
info.SpeedMode = 4;
|
||||
l_it = mapFradme_SP.find(info.SpeedMode);
|
||||
info.FWVersion = l_it->second.FWVERSIO;
|
||||
|
||||
info.VID = 0x3072;
|
||||
info.PID = 0x0300;
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
ScannerScanInfo JsonConfig::GetScanInfo()
|
||||
{
|
||||
ScannerScanInfo info;
|
||||
if (access(SCANNER_SCAN_INFO_PATH, F_OK) != 0)
|
||||
{
|
||||
printf("/mnt/flash-disk/huago/jsonconfig.json do not exist!\n");
|
||||
info = CreateDefaultScanInfo();
|
||||
SaveScanInfo(info);
|
||||
return info;
|
||||
}
|
||||
std::ifstream i(SCANNER_SCAN_INFO_PATH);
|
||||
auto pos = i.tellg();
|
||||
i.seekg(0, ios::end);
|
||||
if(i.tellg()<=2)
|
||||
{
|
||||
printf("/mnt/flash-disk/huago/jsonconfig.json file size < 2!\n");
|
||||
info = CreateDefaultScanInfo();
|
||||
SaveScanInfo(info);
|
||||
return info;
|
||||
}
|
||||
json j;
|
||||
i.seekg(pos);
|
||||
{
|
||||
std::lock_guard<std::mutex> m_c(m_lock);
|
||||
i >> j;
|
||||
i.close();
|
||||
}
|
||||
|
||||
auto &jobject = j[SCAN_INFO_TITLE];
|
||||
|
||||
if (jobject.contains(SCAN_TOTAL))
|
||||
jobject[SCAN_TOTAL].get_to(info.TotalScanned);
|
||||
else
|
||||
info.TotalScanned = 0;
|
||||
|
||||
if (jobject.contains(SCAN_ROLLERNUM))
|
||||
jobject[SCAN_ROLLERNUM].get_to(info.RollerNum);
|
||||
else
|
||||
info.RollerNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_CUONUM))
|
||||
jobject[SCAN_CUONUM].get_to(info.CuoNum);
|
||||
else
|
||||
info.CuoNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_JAMINNUM))
|
||||
jobject[SCAN_JAMINNUM].get_to(info.JamInNum);
|
||||
else
|
||||
info.JamInNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_JAMOUTNUM))
|
||||
jobject[SCAN_JAMOUTNUM].get_to(info.JamOutNum);
|
||||
else
|
||||
info.JamOutNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_DOUNUM))
|
||||
jobject[SCAN_DOUNUM].get_to(info.DoubleNum);
|
||||
else
|
||||
info.DoubleNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_ERRORNUM))
|
||||
jobject[SCAN_ERRORNUM].get_to(info.ErrorNum);
|
||||
else
|
||||
info.ErrorNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_SERIALNUM))
|
||||
jobject[SCAN_SERIALNUM].get_to(info.SerialNum);
|
||||
else
|
||||
info.SerialNum = SERIALNUM;
|
||||
|
||||
if (jobject.contains(SCAN_FWVERSION))
|
||||
jobject[SCAN_FWVERSION].get_to(info.FWVersion);
|
||||
else
|
||||
info.FWVersion = l_it->second.FWVERSIO;
|
||||
|
||||
if (jobject.contains(SCAN_HRATIO))
|
||||
jobject[SCAN_HRATIO].get_to(info.HRatio);
|
||||
else
|
||||
info.HRatio = 1065353216;//默认 1.0f
|
||||
|
||||
if (jobject.contains(SCAN_VRATIO))
|
||||
jobject[SCAN_VRATIO].get_to(info.VRatio);
|
||||
else
|
||||
info.VRatio = 1065353216;//默认 1.0f
|
||||
|
||||
if (jobject.contains(SCAN_SLEEPTIME))
|
||||
jobject[SCAN_SLEEPTIME].get_to(info.SleepTime);
|
||||
else
|
||||
info.SleepTime = 3600;//默认 1.0f
|
||||
|
||||
if(jobject.contains(SCAN_TOKEN))
|
||||
jobject[SCAN_TOKEN].get_to(info.Token);
|
||||
else
|
||||
{
|
||||
info.Token=TOKEN_DEFAULT;
|
||||
}
|
||||
|
||||
if(jobject.contains(SCAN_SPEEDMODE))
|
||||
jobject[SCAN_SPEEDMODE].get_to(info.SpeedMode);
|
||||
else
|
||||
{
|
||||
info.SpeedMode = 4;
|
||||
}
|
||||
|
||||
if(jobject.contains(SCAN_VID))
|
||||
jobject[SCAN_VID].get_to(info.VID);
|
||||
else
|
||||
{
|
||||
info.VID = 0x3072;
|
||||
}
|
||||
|
||||
|
||||
if(jobject.contains(SCAN_PID))
|
||||
jobject[SCAN_PID].get_to(info.PID);
|
||||
else
|
||||
{
|
||||
#ifdef G400
|
||||
info.PID = 0x0400;
|
||||
#else
|
||||
info.PID = 0x0300;
|
||||
#endif
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
void JsonConfig::SaveScanInfo(const ScannerScanInfo &info)
|
||||
{
|
||||
json m_json;
|
||||
auto &jobject = m_json[SCAN_INFO_TITLE];
|
||||
jobject[SCAN_TOTAL] = info.TotalScanned;
|
||||
jobject[SCAN_ROLLERNUM] = info.RollerNum;
|
||||
jobject[SCAN_CUONUM] = info.CuoNum;
|
||||
jobject[SCAN_JAMINNUM] = info.JamInNum;
|
||||
jobject[SCAN_JAMOUTNUM] = info.JamOutNum;
|
||||
jobject[SCAN_DOUNUM] = info.DoubleNum;
|
||||
jobject[SCAN_ERRORNUM] = info.ErrorNum;
|
||||
jobject[SCAN_SERIALNUM] = info.SerialNum;
|
||||
jobject[SCAN_FWVERSION] = info.FWVersion;
|
||||
jobject[SCAN_HRATIO]= info.HRatio;
|
||||
jobject[SCAN_VRATIO] = info.VRatio;
|
||||
jobject[SCAN_SLEEPTIME] = info.SleepTime;
|
||||
jobject[SCAN_TOKEN] = info.Token;
|
||||
jobject[SCAN_SPEEDMODE] = info.SpeedMode;
|
||||
jobject[SCAN_VID] = info.VID;
|
||||
jobject[SCAN_PID] = info.PID;
|
||||
std::lock_guard<std::mutex> m_c(m_lock);
|
||||
std::ofstream o(SCANNER_SCAN_INFO_PATH);
|
||||
//std::cout<<m_json<<std::endl;
|
||||
o << std::setw(4) << m_json << std::endl;
|
||||
o.close();
|
||||
o.flush();
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
cmake_minimum_required(VERSION 3.0.0)
|
||||
project(test_s)
|
||||
add_compile_options(-std=c++14)
|
||||
#set (CMAKE_GENERATOR "/home/holdtecs/zzm-linux/rk3288-linux/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
|
||||
|
||||
|
||||
|
||||
FILE(GLOB SRC "*.cpp" "*.h" "*.c")
|
||||
FILE(GLOB IMAGEPRO "imageprocess/*.h" "imageprocess/*.cpp" )
|
||||
FILE(GLOB FPGA "fpga/*.h" "fpga/*.cpp" )
|
||||
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
|
||||
|
||||
|
||||
add_executable(${PROJECT_NAME} ${SRC})
|
||||
|
||||
#优化代码大小
|
||||
SET(-CMAKE_BUILD_TYPE "Release")
|
||||
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
|
||||
|
||||
|
||||
add_custom_command(TARGET ${PROJECT_NAME}
|
||||
POST_BUILD
|
||||
COMMAND $ENV{STRIP} -s ${PROJECT_NAME})
|
||||
|
||||
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "-s")
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs turbojpeg pthread )
|
||||
target_link_libraries(${PROJECT_NAME} pthread )
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int fd;
|
||||
int ret;
|
||||
|
||||
ret = mkfifo("my_fifo", 0666);
|
||||
if(ret != 0)
|
||||
{
|
||||
perror("mkfifo");
|
||||
}
|
||||
|
||||
printf("before open\n");
|
||||
fd = open("my_fifo", O_WRONLY); //等着只读
|
||||
if(fd < 0)
|
||||
{
|
||||
perror("open fifo");
|
||||
}
|
||||
|
||||
printf("after open\n");
|
||||
|
||||
|
||||
sleep(5);
|
||||
char send[100] = "100";
|
||||
write(fd, send, strlen(send));
|
||||
printf("write to my_fifo buf=%s\n", send);
|
||||
while (1)
|
||||
{
|
||||
/* code */
|
||||
}
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
cmake_minimum_required(VERSION 3.0.0)
|
||||
project(sleep_processes)
|
||||
add_compile_options(-std=c++14)
|
||||
#set (CMAKE_GENERATOR "/home/holdtecs/zzm-linux/rk3288-linux/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
|
||||
|
||||
|
||||
|
||||
FILE(GLOB SRC "*.cpp" "*.h" "*.c")
|
||||
FILE(GLOB IMAGEPRO "imageprocess/*.h" "imageprocess/*.cpp" )
|
||||
FILE(GLOB FPGA "fpga/*.h" "fpga/*.cpp" )
|
||||
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
|
||||
|
||||
|
||||
add_executable(${PROJECT_NAME} ${SRC})
|
||||
|
||||
#优化代码大小
|
||||
SET(-CMAKE_BUILD_TYPE "Release")
|
||||
install(TARGETS ${PROJECT_NAME} DESTINATION bin)
|
||||
|
||||
|
||||
add_custom_command(TARGET ${PROJECT_NAME}
|
||||
POST_BUILD
|
||||
COMMAND $ENV{STRIP} -s ${PROJECT_NAME})
|
||||
|
||||
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "-s")
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs turbojpeg pthread )
|
||||
target_link_libraries(${PROJECT_NAME} pthread )
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
#include "JsonConfig.h"
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <fstream>
|
||||
#include <iomanip>
|
||||
#define SCAN_INFO_TITLE "ScanInfo"
|
||||
#define SCAN_TOTAL "TotalScanned"
|
||||
#define SCAN_ROLLERNUM "RollerNum"
|
||||
#define SCAN_CUONUM "CuoNum"
|
||||
#define SCAN_JAMINNUM "JamInNum"
|
||||
#define SCAN_JAMOUTNUM "JamOutNum"
|
||||
#define SCAN_DOUNUM "DoubleNum"
|
||||
#define SCAN_ERRORNUM "ErrorNum"
|
||||
#define SCAN_SERIALNUM "SerialNum"
|
||||
#define SCAN_FWVERSION "FWVersion"
|
||||
#define SCAN_HRATIO "HRatio"
|
||||
#define SCAN_VRATIO "VRatio"
|
||||
#define SCAN_SLEEPTIME "SleepTime"
|
||||
#define SCAN_TOKEN "ScannerToken"
|
||||
#define SCAN_SPEEDMODE "SpeedMode"
|
||||
#define SCAN_VID "VID"
|
||||
#define SCAN_PID "PID"
|
||||
|
||||
#define TOKEN_DEFAULT " "
|
||||
#define FWVERSION "G345230918"
|
||||
#define SERIALNUM "HS6010A38001P1"
|
||||
JsonConfig::JsonConfig()
|
||||
{
|
||||
if (access(SCANNER_SCAN_INFO_PATH, F_OK) == -1) //不存在
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
JsonConfig::JsonConfig(ConfigType type) : m_cfgType(type)
|
||||
{
|
||||
}
|
||||
|
||||
JsonConfig::~JsonConfig()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
ScannerScanInfo JsonConfig::GetScanInfo()
|
||||
{
|
||||
ScannerScanInfo info;
|
||||
if (access(SCANNER_SCAN_INFO_PATH, F_OK) != 0)
|
||||
{
|
||||
return info;
|
||||
}
|
||||
std::ifstream i(SCANNER_SCAN_INFO_PATH);
|
||||
auto pos = i.tellg();
|
||||
i.seekg(0, ios::end);
|
||||
if(i.tellg()<=2)
|
||||
{
|
||||
return info;
|
||||
}
|
||||
json j;
|
||||
i.seekg(pos);
|
||||
{
|
||||
std::lock_guard<std::mutex> m_c(m_lock);
|
||||
i >> j;
|
||||
i.close();
|
||||
}
|
||||
|
||||
auto &jobject = j[SCAN_INFO_TITLE];
|
||||
|
||||
if (jobject.contains(SCAN_TOTAL))
|
||||
jobject[SCAN_TOTAL].get_to(info.TotalScanned);
|
||||
else
|
||||
info.TotalScanned = 0;
|
||||
|
||||
if (jobject.contains(SCAN_ROLLERNUM))
|
||||
jobject[SCAN_ROLLERNUM].get_to(info.RollerNum);
|
||||
else
|
||||
info.RollerNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_CUONUM))
|
||||
jobject[SCAN_CUONUM].get_to(info.CuoNum);
|
||||
else
|
||||
info.CuoNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_JAMINNUM))
|
||||
jobject[SCAN_JAMINNUM].get_to(info.JamInNum);
|
||||
else
|
||||
info.JamInNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_JAMOUTNUM))
|
||||
jobject[SCAN_JAMOUTNUM].get_to(info.JamOutNum);
|
||||
else
|
||||
info.JamOutNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_DOUNUM))
|
||||
jobject[SCAN_DOUNUM].get_to(info.DoubleNum);
|
||||
else
|
||||
info.DoubleNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_ERRORNUM))
|
||||
jobject[SCAN_ERRORNUM].get_to(info.ErrorNum);
|
||||
else
|
||||
info.ErrorNum = 0;
|
||||
|
||||
if (jobject.contains(SCAN_SERIALNUM))
|
||||
jobject[SCAN_SERIALNUM].get_to(info.SerialNum);
|
||||
else
|
||||
info.SerialNum = SERIALNUM;
|
||||
|
||||
if (jobject.contains(SCAN_FWVERSION))
|
||||
jobject[SCAN_FWVERSION].get_to(info.FWVersion);
|
||||
|
||||
|
||||
if (jobject.contains(SCAN_HRATIO))
|
||||
jobject[SCAN_HRATIO].get_to(info.HRatio);
|
||||
else
|
||||
info.HRatio = 1065353216;//默认 1.0f
|
||||
|
||||
if (jobject.contains(SCAN_VRATIO))
|
||||
jobject[SCAN_VRATIO].get_to(info.VRatio);
|
||||
else
|
||||
info.VRatio = 1065353216;//默认 1.0f
|
||||
|
||||
if (jobject.contains(SCAN_SLEEPTIME))
|
||||
jobject[SCAN_SLEEPTIME].get_to(info.SleepTime);
|
||||
else
|
||||
info.SleepTime = 3600;//默认 1.0f
|
||||
|
||||
if(jobject.contains(SCAN_TOKEN))
|
||||
jobject[SCAN_TOKEN].get_to(info.Token);
|
||||
else
|
||||
{
|
||||
info.Token=TOKEN_DEFAULT;
|
||||
}
|
||||
|
||||
if(jobject.contains(SCAN_SPEEDMODE))
|
||||
jobject[SCAN_SPEEDMODE].get_to(info.SpeedMode);
|
||||
else
|
||||
{
|
||||
info.SpeedMode = 4;
|
||||
}
|
||||
|
||||
if(jobject.contains(SCAN_VID))
|
||||
jobject[SCAN_VID].get_to(info.VID);
|
||||
else
|
||||
{
|
||||
info.VID = 0x3072;
|
||||
}
|
||||
|
||||
|
||||
if(jobject.contains(SCAN_PID))
|
||||
jobject[SCAN_PID].get_to(info.PID);
|
||||
else
|
||||
{
|
||||
#ifdef G400
|
||||
info.PID = 0x0400;
|
||||
#else
|
||||
info.PID = 0x0300;
|
||||
#endif
|
||||
}
|
||||
return info;
|
||||
}
|
|
@ -1,10 +1,28 @@
|
|||
#pragma once
|
||||
#include <unistd.h>
|
||||
#include "json.hpp"
|
||||
#include "scanservices_utils.h"
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <mutex>
|
||||
struct ScannerScanInfo
|
||||
{
|
||||
unsigned int TotalScanned; //扫描总页数
|
||||
unsigned int RollerNum;
|
||||
unsigned int CuoNum; //搓纸总数
|
||||
unsigned int JamInNum; //搓纸失败次数
|
||||
unsigned int JamOutNum; //卡纸次数
|
||||
unsigned int DoubleNum; //双张次数
|
||||
unsigned int ErrorNum; //其他异常次数
|
||||
unsigned int HRatio; //横向校正系数
|
||||
unsigned int VRatio; //纵向校正系数
|
||||
unsigned int SleepTime; //休眠时间 单位s
|
||||
unsigned int SpeedMode; //速率模式
|
||||
unsigned int VID; //vid
|
||||
unsigned short PID; //pid
|
||||
std::string SerialNum; //序列号
|
||||
std::string FWVersion; //固件版本号
|
||||
std::string Token; //token 令牌
|
||||
};
|
||||
|
||||
#define SCANNER_SCAN_INFO_PATH "/mnt/flash-disk/huago/jsonconfig.json"
|
||||
using namespace std;
|
||||
|
@ -38,18 +56,10 @@ public:
|
|||
JsonConfig();
|
||||
JsonConfig(ConfigType type);
|
||||
~JsonConfig();
|
||||
/*
|
||||
*若返回false 则表示文件不存在或文件读取失败
|
||||
*/
|
||||
// bool ReadParam(FPGAConfigParam& param);
|
||||
|
||||
// void WriteParam(FPGAConfigParam& t_param);
|
||||
|
||||
ScannerScanInfo GetScanInfo();
|
||||
map<int, sp_COLOR_or_GRAY >::iterator l_it;
|
||||
void SaveScanInfo(const ScannerScanInfo& info);
|
||||
|
||||
private:
|
||||
//FPGAConfigParam CreateDefault();
|
||||
std::mutex m_lock;
|
||||
ScannerScanInfo CreateDefaultScanInfo();
|
||||
};
|
|
@ -0,0 +1,101 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <poll.h>
|
||||
#include <thread>
|
||||
#include"JsonConfig.h"
|
||||
#define erroe_status -1
|
||||
#define start_sleep 1
|
||||
#define close_sleep 0
|
||||
|
||||
int readfile(int fd, char* buf,int num )
|
||||
{
|
||||
lseek(fd, 0, SEEK_SET);
|
||||
int ret = read(fd, buf, num);
|
||||
if (ret == -1)
|
||||
{
|
||||
printf("readfile error:%s\r\n",strerror(ret));
|
||||
return erroe_status;
|
||||
}
|
||||
if (ret == 0)
|
||||
{
|
||||
printf("readfile error:%s\r\n","service connection is lost");
|
||||
return erroe_status;
|
||||
}
|
||||
printf("sleep processes len :%d\r\n",ret);
|
||||
return atoi(buf);
|
||||
}
|
||||
void start_enter_lowpwoer(int time)
|
||||
{
|
||||
int seconds = time;
|
||||
|
||||
if(time < 0 || time < 180)
|
||||
seconds = 180;
|
||||
else
|
||||
seconds = time;
|
||||
|
||||
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());
|
||||
}
|
||||
void stop_countdown()
|
||||
{
|
||||
int ret = system("sh /mnt/flash-disk/killtimer.sh");
|
||||
printf("system stop_countdown :%d\r\n",ret);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int fd = -1;
|
||||
int ret = 0;
|
||||
pollfd pfd;
|
||||
ret = mkfifo("/home/root/dev/sleep", 0666);
|
||||
if(ret != 0)
|
||||
{
|
||||
perror("/home/root/dev/sleep");
|
||||
}
|
||||
|
||||
printf("before open\n");
|
||||
fd = open("/home/root/dev/sleep", O_RDONLY);//等着只写
|
||||
if(fd < 0)
|
||||
{
|
||||
perror("open fifo");
|
||||
}
|
||||
|
||||
printf("after open\n");
|
||||
|
||||
char buffer[12];
|
||||
JsonConfig js;
|
||||
|
||||
|
||||
while (true)
|
||||
{
|
||||
ret = readfile(fd,buffer,sizeof(buffer));
|
||||
printf("while read buf:[%d]\n", ret);
|
||||
if (ret == -1)
|
||||
{
|
||||
system("sh /mnt/flash-disk/leds.sh 1");
|
||||
sleep(3);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ret == 1)
|
||||
{
|
||||
ScannerScanInfo info = js.GetScanInfo();
|
||||
stop_countdown();
|
||||
sleep(3);
|
||||
start_enter_lowpwoer(info.SleepTime);
|
||||
}
|
||||
else
|
||||
stop_countdown();
|
||||
|
||||
}
|
||||
close(fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
64
test.cpp
64
test.cpp
|
@ -1,64 +0,0 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define VIDPID_PATH "/usr/local/bin/mtpd.sh"
|
||||
|
||||
/*
|
||||
* FunctionName: main
|
||||
* Description:
|
||||
*/
|
||||
int main01(int argc, char *argv[])
|
||||
{
|
||||
int ret = 0;
|
||||
printf("argc = %d \n", argc);
|
||||
if (argc != 3)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
unsigned int i_vid = atoi(argv[1]);
|
||||
unsigned int i_pid = atoi(argv[2]);
|
||||
printf("arg0 = %d arg1=%d \n", i_vid, i_pid);
|
||||
char buf_vid[5] ={0};
|
||||
char buf_pid[5] ={0};
|
||||
buf_vid[4]='\0';
|
||||
buf_pid[4]='\0';
|
||||
sprintf(buf_vid,"%04x",i_vid);
|
||||
sprintf(buf_pid,"%04x",i_pid);
|
||||
printf("buf_vid = %s buf_pid=%s \n", buf_vid, buf_pid);
|
||||
if (i_pid > 0 && i_vid > 0)
|
||||
{
|
||||
FILE *fd;
|
||||
|
||||
fd = fopen(VIDPID_PATH, "rb+");
|
||||
if (!fd) {
|
||||
printf( "error open /usr/local/bin/mtp.sh...\n");
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
printf( "open %s scuess.fd = %d\n", VIDPID_PATH,fd);
|
||||
}
|
||||
|
||||
/*set vid*/
|
||||
fseek(fd , 0x18e , SEEK_SET);
|
||||
ret = fwrite(buf_vid, 1, 4, fd);
|
||||
|
||||
/*set pid*/
|
||||
fseek(fd , 0x1c8 , SEEK_SET);
|
||||
ret = fwrite(buf_pid, 1, 4, fd);
|
||||
|
||||
fclose(fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -1;
|
||||
} /* ---------- end of function main ---------- */
|
|
@ -1,26 +1,58 @@
|
|||
cmake_minimum_required(VERSION 3.0.0)
|
||||
project(sleep_processes)
|
||||
project(scanservice)
|
||||
add_compile_options(-std=c++14)
|
||||
#set (CMAKE_GENERATOR "/home/holdtecs/zzm-linux/rk3288-linux/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++")
|
||||
|
||||
|
||||
|
||||
|
||||
#交叉编译配置
|
||||
# set(CMAKE_SYSTEM_NAME Linux)
|
||||
# set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
|
||||
#可选,配置roofs和安装路径如果存在
|
||||
#set(linux_sdk_path /home/holdtecs/zzm-linux/rk3288-linux)
|
||||
#set(linux_sdk_path /mnt/disk2/linux-rhx/rk3288-linux)
|
||||
#set(CMAKE_SYSROOT ${linux_sdk_path}/buildroot/output/rockchip_rk3288/host/arm-buildroot-linux-gnueabihf/sysroot)
|
||||
# set(CMAKE_STAGING_PREFIX ${PROJECT_SOURCE_DIR}/install)
|
||||
|
||||
#编译工具配置
|
||||
#set(tools ${linux_sdk_path}/prebuilts/gcc/linux-x86/arm/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf)
|
||||
# set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
|
||||
# set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
|
||||
# set(CMAKE_LIBRARY_ARCHITECTURE arm)
|
||||
add_subdirectory(fpga)
|
||||
set(-mfloat-abi=hard)
|
||||
|
||||
# set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
# set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
# set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
# set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O1 -fvectorize")
|
||||
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -fvectorize")
|
||||
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
|
||||
|
||||
|
||||
set(OpenCV_DIR /home/modehua/sdk/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi/usr/include/opencv4/)
|
||||
#set(OpenCV_DIR /home/holdtecs/zzm-linux/fs/usr/lib)
|
||||
#find_package( OpenCV 3 REQUIRED )
|
||||
include_directories( ${OpenCV_INCLUDE_DIRS} )
|
||||
|
||||
FILE(GLOB SRC "*.cpp" "*.h" "*.c")
|
||||
FILE(GLOB IMAGEPRO "imageprocess/*.h" "imageprocess/*.cpp" )
|
||||
FILE(GLOB FPGA "fpga/*.h" "fpga/*.cpp" )
|
||||
|
||||
# message(STATUS "SRC:" ${SRC})
|
||||
# message(STATUS "IMAGEPRO:" ${IMAGEPRO})
|
||||
#message(STATUS "FPGA:" ${FPGA})
|
||||
set(CMAKE_BUILD_TYPE "Release")
|
||||
|
||||
include_directories(
|
||||
fpga
|
||||
imageprocess
|
||||
imageprocess/include
|
||||
#/home/modehua/sdk/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi/usr/include/opencv4/
|
||||
)
|
||||
|
||||
|
||||
add_executable(${PROJECT_NAME} ${SRC})
|
||||
|
@ -36,7 +68,11 @@ add_custom_command(TARGET ${PROJECT_NAME}
|
|||
|
||||
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS_RELEASE "-s")
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} ${PROJECT_BINARY_DIR}/bin/libfpgaupdate.a)
|
||||
target_link_libraries(${PROJECT_NAME} opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs turbojpeg pthread )
|
||||
target_link_libraries(${PROJECT_NAME} pthread )
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}
|
||||
${PROJECT_SOURCE_DIR}/fpga
|
||||
/home/modehua/sdk/sysroots/cortexa9t2hf-neon-xilinx-linux-gnueabi/usr/include/opencv4/
|
||||
)
|
|
@ -22,13 +22,12 @@
|
|||
#define SCAN_PID "PID"
|
||||
|
||||
#define TOKEN_DEFAULT " "
|
||||
#define FWVERSION "G345230918"
|
||||
#define SERIALNUM "HS6010A38001P1"
|
||||
JsonConfig::JsonConfig()
|
||||
{
|
||||
if (access(SCANNER_SCAN_INFO_PATH, F_OK) == -1) //不存在
|
||||
{
|
||||
|
||||
ScannerScanInfo defaultinfo = CreateDefaultScanInfo();
|
||||
SaveScanInfo(defaultinfo);
|
||||
}
|
||||
}
|
||||
JsonConfig::JsonConfig(ConfigType type) : m_cfgType(type)
|
||||
|
@ -39,14 +38,104 @@ JsonConfig::~JsonConfig()
|
|||
{
|
||||
}
|
||||
|
||||
// bool JsonConfig::ReadParam(FPGAConfigParam ¶m)
|
||||
// {
|
||||
// bool ret = false;
|
||||
// if (access(cfgPaths[m_cfgType].c_str(), F_OK) == -1)
|
||||
// {
|
||||
// return ret;
|
||||
// }
|
||||
// std::ifstream i(cfgPaths[m_cfgType]);
|
||||
// json j;
|
||||
// i >> j;
|
||||
// auto &jobject = j[cfgPrefix[m_cfgType]];
|
||||
// jobject[cfgPrefix[m_cfgType] + "ExposureF"].get_to(param.ExposureF);
|
||||
// jobject[cfgPrefix[m_cfgType] + "ExposureB"].get_to(param.ExposureB);
|
||||
// jobject[cfgPrefix[m_cfgType] + "GainF"].get_to(param.GainF);
|
||||
// jobject[cfgPrefix[m_cfgType] + "GainB"].get_to(param.GainB);
|
||||
// jobject[cfgPrefix[m_cfgType] + "OffsetF"].get_to(param.OffsetF);
|
||||
// jobject[cfgPrefix[m_cfgType] + "OffsetB"].get_to(param.OffsetB);
|
||||
// return ret;
|
||||
// }
|
||||
|
||||
// void JsonConfig::WriteParam(FPGAConfigParam &t_param)
|
||||
// {
|
||||
// FPGAConfigParam param;
|
||||
// if (access(cfgPaths[m_cfgType].c_str(), F_OK) == -1)
|
||||
// {
|
||||
// LOG("Not found config %s \n", cfgPaths[m_cfgType].c_str());
|
||||
// param = CreateDefault();
|
||||
// }
|
||||
// else
|
||||
// param = t_param;
|
||||
|
||||
// LOG("start save %s \n", cfgPaths[m_cfgType].c_str());
|
||||
// json m_json;
|
||||
// auto &jobject = m_json[cfgPrefix[m_cfgType]];
|
||||
// jobject[cfgPrefix[m_cfgType] + "ExposureF"] = {param.ExposureF[0], param.ExposureF[1], param.ExposureF[2]};
|
||||
// jobject[cfgPrefix[m_cfgType] + "ExposureB"] = {param.ExposureB[0], param.ExposureB[1], param.ExposureB[2]};
|
||||
// jobject[cfgPrefix[m_cfgType] + "GainF"] = {param.GainF[0], param.GainF[1], param.GainF[2], param.GainF[3], param.GainF[4], param.GainF[5]};
|
||||
// jobject[cfgPrefix[m_cfgType] + "GainB"] = {param.GainB[0], param.GainB[1], param.GainB[2], param.GainB[3], param.GainB[4], param.GainB[5]};
|
||||
// jobject[cfgPrefix[m_cfgType] + "OffsetF"] = {param.OffsetF[0], param.OffsetF[1], param.OffsetF[2], param.OffsetF[3], param.OffsetF[4], param.OffsetF[5]};
|
||||
// jobject[cfgPrefix[m_cfgType] + "OffsetB"] = {param.OffsetB[0], param.OffsetB[1], param.OffsetB[2], param.OffsetB[3], param.OffsetB[4], param.OffsetB[5]};
|
||||
// std::ofstream o(cfgPaths[m_cfgType]);
|
||||
// o << std::setw(4) << m_json << std::endl;
|
||||
// LOG("save config %s down \n", cfgPaths[m_cfgType].c_str());
|
||||
// }
|
||||
|
||||
// FPGAConfigParam JsonConfig::CreateDefault()
|
||||
// {
|
||||
// std::string savePath = cfgPaths[m_cfgType];
|
||||
// FPGAConfigParam param = {0};
|
||||
// for (size_t i = 0; i < 3; i++)
|
||||
// {
|
||||
// param.ExposureF[i] = 259;
|
||||
// param.ExposureB[i] = 238;
|
||||
// }
|
||||
|
||||
// for (size_t i = 0; i < 6; i++)
|
||||
// {
|
||||
// param.GainB[i] = 30;
|
||||
// param.GainF[i] = 30;
|
||||
// param.OffsetB[i] = param.OffsetF[i] = 119;
|
||||
// }
|
||||
// return param;
|
||||
// }
|
||||
|
||||
ScannerScanInfo JsonConfig::CreateDefaultScanInfo()
|
||||
{
|
||||
ScannerScanInfo info;
|
||||
info.CuoNum = 0;
|
||||
info.DoubleNum = 0;
|
||||
info.ErrorNum = 0;
|
||||
info.JamInNum = 0;
|
||||
info.JamOutNum = 0;
|
||||
info.FWVersion = FWVERSION;
|
||||
info.SerialNum = SERIALNUM;
|
||||
info.TotalScanned = 0;
|
||||
info.RollerNum = 0;
|
||||
info.HRatio = 1065353216;//(=(float)1.0)
|
||||
info.VRatio = 1065353216;
|
||||
info.SleepTime=3600;
|
||||
info.Token=TOKEN_DEFAULT;
|
||||
info.SpeedMode = 4;
|
||||
l_it = mapFradme_SP.find(info.SpeedMode);
|
||||
info.FWVersion = l_it->second.FWVERSIO;
|
||||
|
||||
info.VID = 0x3072;
|
||||
info.PID = 0x0300;
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
ScannerScanInfo JsonConfig::GetScanInfo()
|
||||
{
|
||||
ScannerScanInfo info;
|
||||
if (access(SCANNER_SCAN_INFO_PATH, F_OK) != 0)
|
||||
{
|
||||
printf("/mnt/flash-disk/huago/jsonconfig.json do not exist!\n");
|
||||
info = CreateDefaultScanInfo();
|
||||
SaveScanInfo(info);
|
||||
return info;
|
||||
}
|
||||
std::ifstream i(SCANNER_SCAN_INFO_PATH);
|
||||
|
@ -54,6 +143,9 @@ ScannerScanInfo JsonConfig::GetScanInfo()
|
|||
i.seekg(0, ios::end);
|
||||
if(i.tellg()<=2)
|
||||
{
|
||||
printf("/mnt/flash-disk/huago/jsonconfig.json file size < 2!\n");
|
||||
info = CreateDefaultScanInfo();
|
||||
SaveScanInfo(info);
|
||||
return info;
|
||||
}
|
||||
json j;
|
||||
|
@ -108,7 +200,8 @@ ScannerScanInfo JsonConfig::GetScanInfo()
|
|||
|
||||
if (jobject.contains(SCAN_FWVERSION))
|
||||
jobject[SCAN_FWVERSION].get_to(info.FWVersion);
|
||||
|
||||
else
|
||||
info.FWVersion = l_it->second.FWVERSIO;
|
||||
|
||||
if (jobject.contains(SCAN_HRATIO))
|
||||
jobject[SCAN_HRATIO].get_to(info.HRatio);
|
||||
|
@ -159,3 +252,31 @@ ScannerScanInfo JsonConfig::GetScanInfo()
|
|||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
void JsonConfig::SaveScanInfo(const ScannerScanInfo &info)
|
||||
{
|
||||
json m_json;
|
||||
auto &jobject = m_json[SCAN_INFO_TITLE];
|
||||
jobject[SCAN_TOTAL] = info.TotalScanned;
|
||||
jobject[SCAN_ROLLERNUM] = info.RollerNum;
|
||||
jobject[SCAN_CUONUM] = info.CuoNum;
|
||||
jobject[SCAN_JAMINNUM] = info.JamInNum;
|
||||
jobject[SCAN_JAMOUTNUM] = info.JamOutNum;
|
||||
jobject[SCAN_DOUNUM] = info.DoubleNum;
|
||||
jobject[SCAN_ERRORNUM] = info.ErrorNum;
|
||||
jobject[SCAN_SERIALNUM] = info.SerialNum;
|
||||
jobject[SCAN_FWVERSION] = info.FWVersion;
|
||||
jobject[SCAN_HRATIO]= info.HRatio;
|
||||
jobject[SCAN_VRATIO] = info.VRatio;
|
||||
jobject[SCAN_SLEEPTIME] = info.SleepTime;
|
||||
jobject[SCAN_TOKEN] = info.Token;
|
||||
jobject[SCAN_SPEEDMODE] = info.SpeedMode;
|
||||
jobject[SCAN_VID] = info.VID;
|
||||
jobject[SCAN_PID] = info.PID;
|
||||
std::lock_guard<std::mutex> m_c(m_lock);
|
||||
std::ofstream o(SCANNER_SCAN_INFO_PATH);
|
||||
//std::cout<<m_json<<std::endl;
|
||||
o << std::setw(4) << m_json << std::endl;
|
||||
o.close();
|
||||
o.flush();
|
||||
}
|
|
@ -1,28 +1,10 @@
|
|||
#pragma once
|
||||
#include <unistd.h>
|
||||
#include "json.hpp"
|
||||
#include "scanservices_utils.h"
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <mutex>
|
||||
struct ScannerScanInfo
|
||||
{
|
||||
unsigned int TotalScanned; //扫描总页数
|
||||
unsigned int RollerNum;
|
||||
unsigned int CuoNum; //搓纸总数
|
||||
unsigned int JamInNum; //搓纸失败次数
|
||||
unsigned int JamOutNum; //卡纸次数
|
||||
unsigned int DoubleNum; //双张次数
|
||||
unsigned int ErrorNum; //其他异常次数
|
||||
unsigned int HRatio; //横向校正系数
|
||||
unsigned int VRatio; //纵向校正系数
|
||||
unsigned int SleepTime; //休眠时间 单位s
|
||||
unsigned int SpeedMode; //速率模式
|
||||
unsigned int VID; //vid
|
||||
unsigned short PID; //pid
|
||||
std::string SerialNum; //序列号
|
||||
std::string FWVersion; //固件版本号
|
||||
std::string Token; //token 令牌
|
||||
};
|
||||
|
||||
#define SCANNER_SCAN_INFO_PATH "/mnt/flash-disk/huago/jsonconfig.json"
|
||||
using namespace std;
|
||||
|
@ -56,10 +38,18 @@ public:
|
|||
JsonConfig();
|
||||
JsonConfig(ConfigType type);
|
||||
~JsonConfig();
|
||||
/*
|
||||
*若返回false 则表示文件不存在或文件读取失败
|
||||
*/
|
||||
// bool ReadParam(FPGAConfigParam& param);
|
||||
|
||||
// void WriteParam(FPGAConfigParam& t_param);
|
||||
|
||||
ScannerScanInfo GetScanInfo();
|
||||
|
||||
map<int, sp_COLOR_or_GRAY >::iterator l_it;
|
||||
void SaveScanInfo(const ScannerScanInfo& info);
|
||||
private:
|
||||
//FPGAConfigParam CreateDefault();
|
||||
std::mutex m_lock;
|
||||
ScannerScanInfo CreateDefaultScanInfo();
|
||||
};
|
||||
|
|
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue