#ifndef PUBLICFUNC_H_ #define PUBLICFUNC_H_ #include "stdafx.h" #include //#include "UI_INI.h" //#include "DirectshowCaptureVideo.h" //#include "DirectshowCaptureVideoUvc.h" using namespace std; /************************************ **扫描参数,json格式保存参数名称** *************************************/ #define PIXTYPE "iPixType" #define PAPARSIZE "iPaparSize" #define AUTOCROP "bAuotCrop" #define RESOLUTION "iResolution" #define DUPLEX "iDuplex" #define DISCARBLANK "bDiscardBlank" #define DISCARBLANKVINCE "bDiscardBlankVince" #define FLOD "bFlod" #define BRIGHTNESS "iBrightness" #define AUTOCONTRAST "bAutoContrast" #define CONTRAST "iContrast" #define GAMMA "dGamma" #define FILTERTYPE "iFilter" #define FILLBLACK "bFillBlcak" #define AUTODESCREW "bAutoDescrew" #define ULTRADETECT "bUltrasonicDetect" #define BINDINGDETECT "bBindingDetect" #define SCANCOUNT "ScanCount" #define DOCORIENTATION "bOrientation" #define BACKROTATE180 "iBackRotate180" #define SCREWDETECT "bScrewDetect" #define SCREWLEVEL "iScrewLevel" #define ITEMCAPTION "Caption" #define SAVEPATH "SavePath" #define MULTIOUTPUT "iMultiOutPut" #define OUTHOLE "bOutHole" #define OUTHOLERATIO "iOutHoleRatio" /****************** **参数保存结构体** *******************/ struct tagCONFIGPARAMS { /*基本选项卡参数*/ INT Pixtype; INT PaperSize; BOOL EnAutoCrop; INT Resolution; INT Duplex; BOOL EnDiscardBlank; BOOL EnDiscardBlankVince; BOOL EnFlod; /*亮度对比度选项卡参数*/ INT Brightness; BOOL EnAutoContrast; INT Contrast; INT Gamma; /*图像处理选项卡参数*/ INT Filter; BOOL EnFillBlack; BOOL EnAutoDescrew; //BOOL EnMulti BOOL EnOutHole; INT OutHoleRatio; BOOL EnMultiOutPutR; /*送纸部分选项卡参数*/ BOOL EnUltrasonicDetect; BOOL EnBindingDetect; INT ScanCount; INT Orentation; BOOL EnBackRotate180; BOOL EnScrewDetect; INT ScrewDetectLevel; /*保存信息*/ std::string Caption; std::string SavePath; }; typedef tagCONFIGPARAMS CONFIGPARAMS,*PCONFIGPARAMS; struct tagCONFIGINFO { std::string Caption; std::string SavePath; }; typedef struct tagCONFIGINFO CONFIGINFO,*PCONFIGINFO; struct tagOutHole { BOOL EnOutHole; INT OutHoleRatio; }; typedef tagOutHole OutHole,*pOutHole; typedef struct tag_USBCB { UINT32 u32_CMD; UINT32 u32_Data; UINT32 u32_Count; }USBCB, *PUSBCB; //u32_CMD enum tagUsbKeyWords :UINT32 { //无命令 NO_COMMAND = 0, //获取dsp 状态 GET_DSP_STATUS = 1, //取图 GET_IMAGE = 2, //销毁DSP中驻存的图 POP_IMAGE = 3, //开始扫描命令 START_COMMAND = 4, //停止扫描命令 STOP = 5, //获取扫描仪扫描模式 GET_SCAN_MODE = 6, //获取固件版本号 GET_FW_VERSION = 7, //返回PC端的状态 SEND_STATUS_PC = 8, //下发扫描配置参数 CONFIGURED_DATA = 9, //下发固件信息 SEND_FW = 10, //获取扫描参数 GET_CONFIG_DATA = 11, //获取扫描总张数 GET_SCANN_NUM = 12, //获取有无纸的状态 GET_PAPERFEEDER_STATUS = 13, //DSP初始化 INIT_HARDWARE_SYS = 14, //获取有无纸的状态 GET_PAPER_STATUS = 0x0d, //下发元器件配置参数(灰度,LED R曝光时间) SEND_COMPONENTS_GR = 15, //下发元器件配置参数(LED G/B曝光时间) SEND_COMPONENTS_GB = 16, //下发扫描模式 SEND_SCAN_MODE = 17, //开始进行平场矫正 START_FLAT = 18, //停止平场矫正 STOP_FLAT = 19, //下发200dpi彩色平场矫正参数 SEND_200_COLOR_FLAT_DATA = 20, //下发300dpi彩色平场矫正参数 SEND_300_COLOR_FLAT_DATA = 21, //获取200dpi彩色平场矫正参数 GET_200_COLOR_FLAT_DATA = 22, //获取300dpi彩色平场矫正参数 GET_300_COLOR_FLAT_DATA = 23, //下发200dpi灰度平场校正参数 SEND_200_GRAY_FLAT_DATA = 24, //下发300dpi灰度平场校正参数 SEND_300_GRAY_FLAT_DATA = 25, //获取200DPI灰度平场校正参数 GET_200_GRAY_FLAT_DATA = 26, //获取300DPI灰度平场校正参数 GET_300_GRAY_FLAT_DATA = 27, //下发序列号命令 SEND_SERIAL = 28, //获取序列号命令 GET_SERIAL = 29 }; typedef enum tagUsbKeyWords UsbKeyWords, *PUsbKeyWords; //u32_Data enum tagUsbSupported { //停止扫描 SCAN_STOP = -2, //异常 HAVE_ERROR = -1, //正常状态 NORMAL = 0, //开盖 OPEN_COVER = 1, // 无纸 NO_FEED = 2, // 搓纸失败 FEED_IN_ERROR = 4, // 卡纸 PAPER_JAM = 8, // 检测到双张 DETECT_DOUBLE_FEED = 16, // 检测到订书钉 DETECT_STAPLE = 32, // 纸张倾斜 PAPER_SKEW = 64, // 自动模式 AUTO_SCAN_MODE = 65, // 手动模式 MANAUL_SCAN_MODE = 66, // 计数模式 COUNT_MODE = 67, // 硬件错误 HARDWARE_ERROR = 68, // FPGA崩溃 FPGA_ERROR = 68, // 开始 START_SCAN = 69, //停止 STOP_SCAN = 70, //有图 HAVE_IMAGE = 71, // 更新扫描参数 UPDATE_SCAN_PARAMETER = 72, // PC繁忙或出错 PC_SCAN_BUSY_or_ERROR = 73 }; typedef enum tagUsbSupported UsbSupported, *PUsbSupported; #define CAPTION_LEN 256 #define TWAIN_IMAGE_FILE_LIST_NAME TEXT(".dat") #ifndef malloc_my #define malloc_my malloc #endif typedef struct tagTWAIN_IMAGE_FILE_LIST { INT n_item;// TCHAR sz_path[MAX_PATH]; DWORD dw_color_bit; DWORD dw_width; DWORD dw_height; DWORD dw_dpi; DWORD dw_image_size; BOOL b_del_flg;//文件时是否删除, 传送一个删除一个 }TWAIN_IMAGE_FILE_LIST,FAR*PTWAIN_IMAGE_FILE_LIST; typedef struct tagTWAIN_IMAGE_DATA_INFO { BOOL b_lock_flg;//是否在使用中 //BOOL b_flg; TCHAR sz_path_dir[MAX_PATH];//文件目录 //IMAGE_BMP_INFO st_bmp_info;//图像信息 PTWAIN_IMAGE_FILE_LIST p_wifl; INT n_wifl_count;//内存大小 INT n_wifl_cur_count;//当前使用内存个数 INT n_wifl_cur_pos;//当前传送内存位置 }TWAIN_IMAGE_DATA_INFO, FAR*PTWAIN_IMAGE_DATA_INFO; DWORD ReadTwianImageData(TCHAR *p_file_path); BOOL WriteTwianImageData(TCHAR *p_file_path, PBYTE p_data, DWORD dw_size); BOOL MallocTwainFileListMem(); VOID FreeTwainFileListMem(); //取得用户自定义目录,参数 窗口句柄,当前目录, 显示在浏览对话框上的字符串 TCHAR* GetUserCustomFilePath(HWND hWin, LPSTR lpFilePath, TCHAR *lp_head_text = NULL); //取得当前模块的文件路径, 参数,模块实列举并, 文件路径, 字符串的长度 TCHAR* GetCurExeFilePath(HINSTANCE hInstance, TCHAR* lpPath, DWORD dwSize); //取得路径中已经存在的路径,并返回 TCHAR* GetExistFileDir(TCHAR* p_file_path); //回调函数,取得用户自定义的文件路径 DWORD CALLBACK BrowserCallbackProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) ; std::string UtfToString(std::string strValue); std::string StringToUtf(std::string strValue); //检查,创建文件夹, 参数 文件路径, = 真,创建p_file_path不寻在文件路径 BOOL CheckAndCreateFileDir(TCHAR* p_file_path, BOOL flg); BOOL CheckDiskFreeBitM(HWND hWin, TCHAR *p_disk_name, DWORD dw_min_bit_m); HBITMAP SetButtonStaticBkBmp(HINSTANCE hInst, HWND hWin, UINT id, UINT iamge_id); DWORD MyMessageBox(TCHAR *p_str, TCHAR *p_str2, DWORD dw_id); extern TWAIN_IMAGE_DATA_INFO g_st_twain_bmp_info; //extern CDirectshowCaptureVideo g_dc_video; extern BOOL g_b_show_ui_flg; //extern WATER_PRO g_st_water_pro; extern BOOL g_add_water_flg; extern DWORD g_dw_white_bright_count; //extern CDirectshowCaptureVideoUvc g_dc_uvc_video; extern BOOL g_b_use_uvc_dev ; extern BOOL g_b_brigth_show_flg; extern HWND g_hwnd_dlg; //extern CSysMutex g_sys_mutex; typedef enum tagSYS_MUTEX_TYPE { SYSMUTEX_APP_RUN_TYPE,// ok SYSMUTEX_TWAIN_RUN_TYPE, SYSMUTEX_APP_SCANNER_RUN_TYPE, SYSMUTEX_TWAIN_SCANNER_RUN_TYPE }SYS_MUTEX_TYPE, FAR* PSYS_MUTEX_TYPE; BOOL g_InitSysMutexRun(); BOOL g_InitSysMutexScanRun(DWORD dwPid, DWORD dwUid); BOOL g_CloseSysMutexRun(); BOOL g_CloseOneSysMutexRun(); BOOL g_CreateSysMutex(); BOOL g_CheckSysMutex(); float GetContrast(int level); VOID XdPrint(_TCHAR* format, ...); extern BOOL g_not_user_sineng_dev; extern RGBQUAD g_default_map[256]; BOOL ReadDefaultMap(); #endif