⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rangermanager.cpp

📁 支票扫描仪协议Ranger的应用.使用vc7.1
💻 CPP
📖 第 1 页 / 共 3 页
字号:

	}


}
//----------------------------------------------------------------------------------------
void CRangerManager::OnTransportSetItemOutput(long ItemId) 
{
	ASSERT(m_pRanger != NULL);

	if (CanRetrieveOnOutput())
		m_pRanger->SuspendItem(); 
}

//----------------------------------------------------------------------------------------
void CRangerManager::OnTransportItemSuspended(long ItemId)
{
	ASSERT(m_pRanger != NULL);

	if (CanRetrieveOnOutput())
	{
		_GetAllImages();
	}
	m_pRanger->ContinueItem();

}
//----------------------------------------------------------------------------------------
void CRangerManager::OnTransportTrackIsClear () 
{
	ASSERT(m_pRanger != NULL);

	if (m_dwPageID > 0)
	{
		// Session End
		if (m_pObserver && m_bProcessingSession)	
		{
			RANGER_SESSION_END_INFO info;
			m_pObserver->OnSessionEnd(info);

		}

		g_asyncResult_StopCapture.SetResult( GetCurrentState()); 
		g_asyncResult_EnableShutdown.SetResult(GetCurrentState());

		// indicate that scan session is End
		m_bProcessingSession = FALSE;
	}

}
//----------------------------------------------------------------------------------------
void CRangerManager::OnTransportItemInPocket(long ItemId) 
{
	ASSERT(m_pRanger != NULL);

	m_dwPageID++;

	if (m_pObserver && m_bProcessingSession)
	{
		// Get All Image
		if (CanRetrieveOnInPocket())
			_GetAllImages();

		// finish page
		RANGER_PAGE_END_INFO info;

		_GetMICRs(info.lstMICR);
		info.itemState = (Transport_ItemState)m_pRanger->GetItemState(); 
		m_pObserver->OnPageEnd(info);
	}

}


void CRangerManager::_GetTransportInformation()
{
	ASSERT(m_pRanger != NULL);

	// General
//	m_curTransportInfo.General.ID = m_pRanger->GetTransportID();
	m_curTransportInfo.General.Make = m_pRanger->GetTransportInfo("General", "Make");
	m_curTransportInfo.General.Model = m_pRanger->GetTransportInfo("General", "Model");
	m_curTransportInfo.General.NativeAPI = m_pRanger->GetTransportInfo("General", "NativeAPI");
	m_curTransportInfo.General.bMainHopperPresent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "MainHopperPresent"));
	m_curTransportInfo.General.bMergeHopperPresent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "MergeHopperPresent"));
	m_curTransportInfo.General.bDropStationPresent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "DropStationPresent"));
	m_curTransportInfo.General.bViewStationPresent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "ViewStationPresent"));
	m_curTransportInfo.General.bMicrEncoderPresen = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "MicrEncoderPresen"));
	m_curTransportInfo.General.bFrontEndorserPresent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "FrontEndorserPresent"));
	m_curTransportInfo.General.bRearEndorserPresent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "RearEndorserPresent"));
	m_curTransportInfo.General.bFrontStampPresent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "FrontStampPresent"));
	m_curTransportInfo.General.bRearStampPresent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "RearStampPresent"));
	m_curTransportInfo.General.bMicrofilmerPresent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "MicrofilmerPresent"));
	m_curTransportInfo.General.nMicrReaderCount = SRangerDataTypeHelper::StringToINT(m_pRanger->GetTransportInfo("General", "MicrReaderCount"));
	m_curTransportInfo.General.nOcrReaderCount = SRangerDataTypeHelper::StringToINT(m_pRanger->GetTransportInfo("General", "OcrReaderCount"));
	m_curTransportInfo.General.nFrontImageCount = SRangerDataTypeHelper::StringToINT(m_pRanger->GetTransportInfo("General", "FrontImageCount"));
	m_curTransportInfo.General.nRearImageCount = SRangerDataTypeHelper::StringToINT(m_pRanger->GetTransportInfo("General", "RearImageCount"));
	m_curTransportInfo.General.nMaxStorableFrontImages = SRangerDataTypeHelper::StringToINT(m_pRanger->GetTransportInfo("General", "MaxStorableFrontImages"));
	m_curTransportInfo.General.nMaxStorableRearImages = SRangerDataTypeHelper::StringToINT(m_pRanger->GetTransportInfo("General", "MaxStorableRearImages"));
	m_curTransportInfo.General.bImagesAvailableDuringOutputEvent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "ImagesAvailableDuringOutputEvent"));
	m_curTransportInfo.General.bImagesAvailableDuringPocketEvent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "ImagesAvailableDuringPocketEvent"));
	m_curTransportInfo.General.bCanSetImageRootDir = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "CanSetImageRootDir"));
	m_curTransportInfo.General.bCanSuspendItems = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "CanSuspendItems"));
	m_curTransportInfo.General.nPocketCount = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "PocketCount"));
	m_curTransportInfo.General.nHardwareRejectPocket = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "HardwareRejectPocket"));
	m_curTransportInfo.General.eExceptionManager = SRangerDataTypeHelper::StringToExceptionManager(m_pRanger->GetTransportInfo("General", "ExceptionManager"));
	m_curTransportInfo.General.bIQAPresent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "IQAPresent"));
	m_curTransportInfo.General.bIQAAvailableDuringOutputEvent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "IQAAvailableDuringOutputEvent"));
	m_curTransportInfo.General.bIQAAvailableDuringPocketEvent = SRangerDataTypeHelper::StringToBOOL(m_pRanger->GetTransportInfo("General", "IQAAvailableDuringPocketEvent"));

	// encoder
	m_curTransportInfo.Encoder.font = SRangerDataTypeHelper::StringToEncoderFont(m_pRanger->GetTransportInfo("Encoder", "Font"));
	
	//FrontEndorser
	m_curTransportInfo.FrontEndorser.nMaxLines = SRangerDataTypeHelper::StringToINT(m_pRanger->GetTransportInfo("FrontEndorser", "MaxLines"));

	// RearEndorser
	m_curTransportInfo.RearEndorser.nMaxLines = SRangerDataTypeHelper::StringToINT(m_pRanger->GetTransportInfo("RearEndorser", "MaxLines"));

	// FrontStamp 
	m_curTransportInfo.FrontStamp.stampType = SRangerDataTypeHelper::StringToStampType(m_pRanger->GetTransportInfo("FrontStamp", "StampType"));
	m_curTransportInfo.FrontStamp.positionType = SRangerDataTypeHelper::StringToPositionType(m_pRanger->GetTransportInfo("FrontStamp", "PositionType"));

	// RearStamp
	m_curTransportInfo.RearStamp.stampType = SRangerDataTypeHelper::StringToStampType(m_pRanger->GetTransportInfo("RearStamp", "StampType"));
	m_curTransportInfo.RearStamp.positionType = SRangerDataTypeHelper::StringToPositionType(m_pRanger->GetTransportInfo("RearStamp", "PositionType"));

	// Microfilmer
	m_curTransportInfo.MicroFilmer.nMaxLineLength =  SRangerDataTypeHelper::StringToINT(m_pRanger->GetTransportInfo("Microfilmer", "MaxLineLength"));

	// MicrReaderN
	for (int i = 0;i < m_curTransportInfo.General.nMicrReaderCount;i++)
	{
		TANSPORTINFO_MICRREADER micrReader;
		micrReader.Index = i+1;

		CString strMicrReader;
		strMicrReader.Format("MicrReader%d",micrReader.Index);
		micrReader.Font = SRangerDataTypeHelper::StringToMICRFont(m_pRanger->GetTransportInfo(strMicrReader,"Font"));

		m_curTransportInfo.MicrReaders.push_back(micrReader);
	}

	// OcrReaderN
	for (int i = 0;i < m_curTransportInfo.General.nOcrReaderCount;i++)
	{
		TANSPORTINFO_OCRREADER OcrReader;
		OcrReader.Index = i+1;

		CString strOcrReader;
		strOcrReader.Format("OcrReader%d",OcrReader.Index);
		OcrReader.Font = SRangerDataTypeHelper::StringToOCRFont(m_pRanger->GetTransportInfo(strOcrReader,"Font"));

		m_curTransportInfo.OCRReaders.push_back(OcrReader);
	}

	// FrontImageN
	for (int i = 0;i < m_curTransportInfo.General.nFrontImageCount;i++)
	{
		TANSPORTINFO_FRONTIMAGE FrontImage;
		FrontImage.Index = i+1;

		CString strImage;
		strImage.Format("FrontImage%d",FrontImage.Index);
		FrontImage.ColorType = SRangerDataTypeHelper::StringToImageColorType(m_pRanger->GetTransportInfo(strImage,"ColorType"));
		FrontImage.Portion = SRangerDataTypeHelper::StringToImagePortion(m_pRanger->GetTransportInfo(strImage,"ImagePortion"));
		FrontImage.Location = SRangerDataTypeHelper::StringToImageLocation(m_pRanger->GetTransportInfo(strImage,"Location"));

		m_curTransportInfo.FrontImages.push_back(FrontImage);
	}

	// RearImageN
	for (int i = 0;i < m_curTransportInfo.General.nRearImageCount;i++)
	{
		TANSPORTINFO_REARIMAGE RearImage;
		RearImage.Index = i+1;

		CString strImage;
		strImage.Format("RearImage%d",RearImage.Index);
		RearImage.ColorType = SRangerDataTypeHelper::StringToImageColorType(m_pRanger->GetTransportInfo(strImage,"ColorType"));
		RearImage.Portion = SRangerDataTypeHelper::StringToImagePortion(m_pRanger->GetTransportInfo(strImage,"ImagePortion"));
		RearImage.Location = SRangerDataTypeHelper::StringToImageLocation(m_pRanger->GetTransportInfo(strImage,"Location"));

		m_curTransportInfo.RearImages.push_back(RearImage);
	}

}
 
void CRangerManager::_GetAllImages()
{
	ASSERT(m_pRanger != NULL);
	if (m_pObserver == NULL) return;

	RANGER_IMAGE_DATA_INFO info;
	void* pImage ;
	int nCount;

// Front Image
 	// BW
	pImage = (void *)m_pRanger->GetImageAddress(TransportFront, ImageColorTypeBitonal);
	nCount = m_pRanger->GetImageByteCount(TransportFront, ImageColorTypeBitonal);
	if (pImage != NULL && nCount > 0)
	{
		info.lpImageAddress = pImage;
		info.dwImageSize = nCount;
		info.dwPageID = m_dwPageID;
		info.eImageSide = TIS_Front;
		info.eColorMode = TI_CT_Bitonal;
		m_pObserver->OnImageData(info);

	}

 	// GrayScale
	pImage = (void *)m_pRanger->GetImageAddress(TransportFront, ImageColorTypeGrayscale);
	nCount = m_pRanger->GetImageByteCount(TransportFront, ImageColorTypeGrayscale);
	if (pImage != NULL && nCount > 0)
	{
		info.lpImageAddress = pImage;
		info.dwImageSize = nCount;
		info.dwPageID = m_dwPageID;
		info.eImageSide = TIS_Front;
		info.eColorMode = TI_CT_Grayscale;
		m_pObserver->OnImageData(info);
	}

 	// Color
	pImage = (void *)m_pRanger->GetImageAddress(TransportFront, ImageColorTypeColor);
	nCount = m_pRanger->GetImageByteCount(TransportFront, ImageColorTypeColor);
	if (pImage != NULL && nCount > 0)
	{
		info.lpImageAddress = pImage;
		info.dwImageSize = nCount;
		info.dwPageID = m_dwPageID;
		info.eImageSide = TIS_Front;
		info.eColorMode = TI_CT_Color;
		m_pObserver->OnImageData(info);
	}

// Rear Image
 	// BW
	pImage = (void *)m_pRanger->GetImageAddress(TransportRear, ImageColorTypeBitonal);
	nCount = m_pRanger->GetImageByteCount(TransportRear, ImageColorTypeBitonal);
	if (pImage != NULL && nCount > 0)
	{
		info.lpImageAddress = pImage;
		info.dwImageSize = nCount;
		info.dwPageID = m_dwPageID;
		info.eImageSide = TIS_Rear;
		info.eColorMode = TI_CT_Bitonal;
		m_pObserver->OnImageData(info);

	}

 	// GrayScale
	pImage = (void *)m_pRanger->GetImageAddress(TransportRear, ImageColorTypeGrayscale);
	nCount = m_pRanger->GetImageByteCount(TransportRear, ImageColorTypeGrayscale);
	if (pImage != NULL && nCount > 0)
	{
		info.lpImageAddress = pImage;
		info.dwImageSize = nCount;
		info.dwPageID = m_dwPageID;
		info.eImageSide = TIS_Rear;
		info.eColorMode = TI_CT_Grayscale;
		m_pObserver->OnImageData(info);
	}

 	// Color
	pImage = (void *)m_pRanger->GetImageAddress(TransportRear, ImageColorTypeColor);
	nCount = m_pRanger->GetImageByteCount(TransportRear, ImageColorTypeColor);
	if (pImage != NULL && nCount > 0)
	{
		info.lpImageAddress = pImage;
		info.dwImageSize = nCount;
		info.dwPageID = m_dwPageID;
		info.eImageSide = TIS_Rear;
		info.eColorMode = TI_CT_Color;
		m_pObserver->OnImageData(info);
	}	
 
}

void CRangerManager::_GetMICRs(std::vector<CString>&	lstMICR)
{
	std::vector<TANSPORTINFO_MICRREADER>::iterator it;
	std::vector<TANSPORTINFO_MICRREADER>::iterator it_begin = m_curTransportInfo.MicrReaders.begin();
	std::vector<TANSPORTINFO_MICRREADER>::iterator it_end = m_curTransportInfo.MicrReaders.end();

	for (it = it_begin; it != it_end; ++it)
	{
		TANSPORTINFO_MICRREADER& micrReader = *it;
		CString strMICR;
		_GetOneMICR(strMICR,micrReader);
		lstMICR.push_back(strMICR);
	}

}

void CRangerManager::_GetOneMICR(CString& strMICR,TANSPORTINFO_MICRREADER& reader)
{
	strMICR = m_pRanger->GetMicrText(reader.Index);

	// Maybe translate some symbol
}

void CRangerManager::_EnableOption()
{
	ASSERT(m_pRanger != NULL);
	
	m_pRanger->PrepareToChangeOptions();


	// write job option
	// ... 
	if (m_pRangerParams) m_pRangerParams->SetScannerSetting();

	// set job option
	if(m_pObserver)
	{
		// can set driver option
		m_pObserver->OnPrepareFeeding();
	}


	
	// enable
	m_pRanger->EnableOptions();
}

BOOL CRangerManager::CanRetrieveOnOutput()
{
	if (m_curTransportInfo.General.bImagesAvailableDuringOutputEvent &&
		m_curTransportInfo.General.bCanSuspendItems&&
		!m_curTransportInfo.General.bImagesAvailableDuringPocketEvent )
		return TRUE;
	return FALSE;
}

BOOL CRangerManager::CanRetrieveOnInPocket()
{
	if (m_curTransportInfo.General.bImagesAvailableDuringPocketEvent) return TRUE;
	else return FALSE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -