资源简介
为了兼容常用品牌的扫描仪设备,使用了国际标准协议Twain Qt5 C++
代码片段和文件信息
#include “scaninterface.h“
#include “./ui/constants/constants.h“
#define ICAP_EXT_PAPERWIDTH (CAP_CUSTOMbase + 2)
#define ICAP_EXT_PAPERHEIGHT (CAP_CUSTOMbase + 3)
// 静态成员变量需要在类体的外面进行初始化
ScanInterface* ScanInterface::m_pScanInterface ;//= new ScanInterface();
ScanInterface* ScanInterface::GetInstance()
{
if(m_pScanInterface == NULL)
{
m_pScanInterface = new ScanInterface();
}
return m_pScanInterface;
}
void ScanInterface::ReleaseTwain()
{
qDebug()<<“ReleaseTwain:m_state=“<
if (m_state > 3)
{
CloseDS();
}
if (m_state > 2)
{
CloseDSM();
}
// Unload the Source Manager
if(m_hTwainDLL){
qDebug()<<“free libray “;
FreeLibrary(m_hTwainDLL);
m_hTwainDLL = NULL;
m_state = 1;
}
if (m_pScanInterface != NULL)
{
delete m_pScanInterface;
m_pScanInterface = NULL;
}
}
ScanInterface::ScanInterface(Qobject *parent) : Qobject(parent)
{
m_pngIndex = 0;
m_state = 0;
DSM_Entry = NULL;
m_hTwainDLL = NULL;
m_bDSMOpen = false;
m_bDSOpen = false;
m_bSourceEnabled = false;
m_bSourceSelected = false;
}
ScanInterface::~ScanInterface()
{
}
void ScanInterface::SetTwain(HWND winId)
{
m_winId = winId;
m_twUI.hParent = m_winId;
m_twUI.ShowUI = false;
}
int ScanInterface::InitTwain()
{
GetIdentity();
InitTwainDll();
OpenDSM();
return 0;
}
TW_UINT16 ScanInterface::SetCapOneValue(DSMENTRYPROC DSM_Entry pTW_IDENTITY pappid pTW_IDENTITY pdsid TW_UINT16 capid TW_UINT16 type TW_UINT32 val)
{
TW_UINT16 twRC = TWRC_FAILURE;
TW_CAPABILITY cap = {0};
pTW_ONEVALUE pOneValue = NULL;
memset(&cap 0 sizeof(TW_CAPABILITY));
cap.Cap = capid;
cap.ConType = TWON_ONEVALUE;
cap.hContainer = GlobalAlloc(GHND sizeof(TW_ONEVALUE));
if (cap.hContainer)
{
pOneValue = (pTW_ONEVALUE)GlobalLock(cap.hContainer);
pOneValue->ItemType = type;
pOneValue->Item = val;
GlobalUnlock(cap.hContainer);
twRC = DSM_Entry(pappid pdsid DG_CONTROL DAT_CAPABILITY MSG_SET &cap);
GlobalFree(cap.hContainer);
}
return twRC;
}
void ScanInterface::GetIdentity()
{
// Expects all the fields in m_AppId to be set except for the id field.
m_AppId.Id = 0; // Initialize to 0 (Source Manager
// will assign real value)
m_AppId.Version.MajorNum = 3; //Your app‘s version number
m_AppId.Version.MinorNum = 5;
m_AppId.Version.Language = TWLG_USA;
m_AppId.Version.Country = TWCY_USA;
strcpy_s (m_AppId.Version.Info “3.5“);
m_AppId.ProtocolMajor = TWON_PROTOCOLMAJOR;
m_AppId.ProtocolMinor = TWON_PROTOCOLMINOR;
m_AppId.SupportedGroups = DG_IMAGE | DG_CONTROL;
strcpy_s (m_AppId.Manufacturer “MICSS“);
strcpy_s (m_AppId.Product
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 21301 2019-04-25 17:22 Qt5Twain\scaninterface.cpp
文件 3643 2019-04-04 15:31 Qt5Twain\scaninterface.h
文件 944 2019-03-05 19:48 Qt5Twain\stdafx.h
文件 79803 2019-03-05 19:48 Qt5Twain\twain.h
目录 0 2019-05-09 15:28 Qt5Twain
----------- --------- ---------- ----- ----
105691 5
相关资源
- blender2.8.3c++源码工程打包10G.zip
- 分治策略算法设计寻找最邻近点对c
- C/C++实现FAT文件系统的读写
- C++制作加密解密系统
- C++实现回归算法(逻辑回归 线性回归
- Htran 0.22源码 c++
- C++读取access数据库代码
- NOIP2018普及组C++试题
- C++课程设计报告人事管理系统及全部
- GPS车辆监控系统源代码
- 编写一个程序统计文本文件英文字母
- VC++高精度媒体定时器的使用_MFC
- 酒店管理系统 c++的代码
- 等值线追踪与绘制(源代码).rar
- 牛顿法潮流计算C++语言编写
- VC++利用消息机制在两个EXE程序间通信
- RIP协议路由表调整算法的实现__c++编写
- 仓库管理系统 vc++
- RANSAC点集仿射变换匹配C++源代码
- 用c++编写的学生教师管理类
- vc++ 画图形,选中图形可以移动图形
- 旋转的风车,使用MFC编写
- C++ASCII文件练习的几个文件
- 电力系统潮流计算牛拉法C++程序代码
- 植物大战僵尸基于OpenCv和C++实现
- C++数据结构与算法(第4版) 完整版
- B样条曲面C++程序
- 算法题《武士巡逻》的C++代码
- 人工小波神经网络C++代码
- 自制C++矩阵计算器
评论
共有 条评论