检查扫描实施,扫描仪 [英] Cheque Scanning Implementation,Scanner
本文介绍了检查扫描实施,扫描仪的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有人在Windows应用程序中实施Magtek Excella设备dll?
我试图使用MTMICRProcessCheck()方法一次处理n次检查。
在我的安装选项中,我将DocFeed保持为AUTOFEED仍需要两次检查处理而不是n次检查。
我的结果是我得到的XML字符串只有第一次扫描检查的信息。
如果有人实现了同样的,善意的帮助!
解决方案
这是我的代码,供参考
< pre lang =c#> public string ProcessDocument()
{
< span class =code-keyword> string 输出= 字符串 .Empty;
int Count = 2 ;
string [] strData = null ;
尝试
{
int nRet = -1;
string strLog;
string strTmp;
MessageBox.Show( ProcessInit Start);
ProcessInit(); // 初始化
MessageBox.Show( SetupOptions Start);
nRet = SetupOptions(); // 设置
if (nRet!= MICR_ST_OK)
{
strLog = 设置选项FAILED。 ..跨度>;
MessageBox.Show(strLog);
}
else
{
strLog = 设置选项SUCCESS ...;
MessageBox.Show(strLog);
StringBuilder strResponse = new StringBuilder();
strResponse.Capacity = 8192 ; // 8192;
int nResponseLength = 8192 ; // = 4096;
m_strDocInfo = ;
nRet = MTMICRProcessCheck(m_strCurrentDeviceName,m_strOptions,strResponse, ref nResponseLength); // 流程
if (nRet == MICR_ST_OK)
{
m_strDocInfo = strResponse.ToString();
输出= m_strDocInfo;
nRet = MTMICRGetValue(m_strDocInfo, CommandStatus, ReturnCode,strResponse, ref nResponseLength);
strTmp = strResponse.ToString();
#region Front Image
int nReti;
StringBuilder strResponsei = new StringBuilder();
strResponsei.Capacity = 4096 ;
int nResponseLengthi = 4096 ;
int nImageSize;
string strTmpi;
string strImageID;
nReti = MTMICRGetIndexValue(m_strDocInfo, ImageInfo, ImageSize, 1 ,strResponsei, ref nResponseLengthi);
strTmpi = strResponsei.ToString();
nImageSize = Convert.ToInt32(strTmpi);
if (nImageSize > 0 )
{
nReti = MTMICRGetIndexValue(m_strDocInfo, ImageInfo, ImageURL, 1 ,strResponsei, ref nResponseLengthi);
strImageID = strResponsei.ToString();
strLog = 图像大小= + nImageSize + ImageID = + strImageID;
// MessageBox.Show(strLog);
byte [] imageBuf = new byte 跨度> [nImageSize];
nRet = MTMICRGetImage(m_strCurrentDeviceName,strImageID,imageBuf, ref nImageSize);
if (nRet == MICR_ST_OK)
{
System.IO.FileStream fileWriter = new System.IO.FileStream( @ c:\ test.jpg ,System.IO.FileMode.Create);
fileWriter.Write(imageBuf, 0 ,imageBuf.Length);
image_Buf = imageBuf;
fileWriter.Close();
int nActualSize = nImageSize;
string strImageFile = g_strAppPath + \ \ _docimage + ++ nTotalDocProcessed + 。jpg;
int hFile = -1;
hFile = CreateFile(strImageFile,GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, 0 ,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL, 0 跨度>);
if (hFile > 0 )
{
strLog = NumOfBytes to write = + nActualSize ;
// MessageBox.Show(strLog);
< span class =code-sdkkeyword> IntPtr pOverlapped = IntPtr .Zero;
bool bRet = WriteFile(hFile,imageBuf,nImageSize, ref nActualSize,pOverlapped);
}
}
}
#endregion
#region Back Image
int nRetb;
StringBuilder strResponseb = new StringBuilder();
strResponseb.Capacity = 4096 ;
int nResponseLengthb = 4096 ;
int nImageSizeb;
string strTmpb;
string strImageIDb;
nRetb = MTMICRGetIndexValue(m_strDocInfo, ImageInfo, ImageSize, 2 ,strResponseb, ref nResponseLengthb);
strTmpb = strResponseb.ToString();
nImageSizeb = Convert.ToInt32(strTmpb);
if (nImageSizeb > 0 )
{
nRetb = MTMICRGetIndexValue(m_strDocInfo, ImageInfo, ImageURL, 2 ,strResponseb, ref nResponseLengthb);
strImageIDb = strResponseb.ToString();
strLog = B Image size = + nImageSizeb + B ImageID = + strImageIDb;
// MessageBox.Show(strLog);
byte [] imageBuf = new byte [nImageSizeb];
nRet = MTMICRGetImage(m_strCurrentDeviceName,strImageIDb,imageBuf, ref nImageSizeb);
if (nRet == MICR_ST_OK)
{
System.IO.FileStream fileWriter = new System.IO.FileStream( @ c:\ test_b.jpg ,System.IO.FileMode.Create);
fileWriter.Write(imageBuf, 0 ,imageBuf.Length);
image_Buf_B = imageBuf;
fileWriter.Close();
int nActualSize = nImageSizeb;
string strImageFile = g_strAppPath + \ \ _docimage + ++ nTotalDocProcessed + 。jpg;
int hFile = -1;
hFile = CreateFile(strImageFile,GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, 0 ,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL, 0 跨度>);
if (hFile > 0 )
{
strLog = B NumOfBytes to write = + nActualSize;
// MessageBox.Show(strLog);
IntPtr pOverlapped = IntPtr .Zero;
bool bRet = WriteFile(hFile,imageBuf,nImageSizeb, ref nActualSize,pOverlapped);
}
}
}
#endregion
}
else
{
strLog = MTMICRProcessCheck返回代码 + Convert.ToString(nRet);
MessageBox.Show(strLog);
// PrintStatus(strLog);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex。消息+ 行号 + ex.StackTrace);
}
最后
{
如果(m_bDeviceOpened)
CloseCurrentDevice();
}
return 输出;
}
Hi,
Have anyone worked in implementation of Magtek Excella device dll in Windows application ?
I am trying to Process n number of cheques at a time using MTMICRProcessCheck() Method.
In my Setup options i have kept DocFeed as AUTOFEED still it takes two cheques for processing and not n number of cheques.
As my result i get a XML string having info for 1st scanned cheque only.
If someone has implemented the same,kindly help !
解决方案
Here is my code,For reference
public string ProcessDocument() { string Output = string.Empty; int Count = 2; string[] strData = null; try { int nRet = -1; string strLog; string strTmp; MessageBox.Show("ProcessInit Start"); ProcessInit(); // Initialisation MessageBox.Show("SetupOptions Start"); nRet = SetupOptions(); //Setup if (nRet != MICR_ST_OK) { strLog = "Setup Options FAILED..."; MessageBox.Show(strLog); } else { strLog = "Setup Options SUCCESS..."; MessageBox.Show(strLog); StringBuilder strResponse = new StringBuilder(); strResponse.Capacity = 8192; //8192; int nResponseLength = 8192;//= 4096; m_strDocInfo = ""; nRet = MTMICRProcessCheck(m_strCurrentDeviceName, m_strOptions, strResponse, ref nResponseLength); // Process if (nRet == MICR_ST_OK) { m_strDocInfo = strResponse.ToString(); Output = m_strDocInfo; nRet = MTMICRGetValue(m_strDocInfo, "CommandStatus", "ReturnCode", strResponse, ref nResponseLength); strTmp = strResponse.ToString(); #region Front Image int nReti; StringBuilder strResponsei = new StringBuilder(); strResponsei.Capacity = 4096; int nResponseLengthi = 4096; int nImageSize; string strTmpi; string strImageID; nReti = MTMICRGetIndexValue(m_strDocInfo, "ImageInfo", "ImageSize", 1, strResponsei, ref nResponseLengthi); strTmpi = strResponsei.ToString(); nImageSize = Convert.ToInt32(strTmpi); if (nImageSize > 0) { nReti = MTMICRGetIndexValue(m_strDocInfo, "ImageInfo", "ImageURL", 1, strResponsei, ref nResponseLengthi); strImageID = strResponsei.ToString(); strLog = "Image size =" + nImageSize + "ImageID = " + strImageID; //MessageBox.Show(strLog); byte[] imageBuf = new byte[nImageSize]; nRet = MTMICRGetImage(m_strCurrentDeviceName, strImageID, imageBuf, ref nImageSize); if (nRet == MICR_ST_OK) { System.IO.FileStream fileWriter = new System.IO.FileStream(@"c:\test.jpg", System.IO.FileMode.Create); fileWriter.Write(imageBuf, 0, imageBuf.Length); image_Buf = imageBuf; fileWriter.Close(); int nActualSize = nImageSize; string strImageFile = g_strAppPath + "\\docimage" + ++nTotalDocProcessed + ".jpg"; int hFile = -1; hFile = CreateFile(strImageFile, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (hFile > 0) { strLog = "NumOfBytes to write =" + nActualSize; //MessageBox.Show(strLog); IntPtr pOverlapped = IntPtr.Zero; bool bRet = WriteFile(hFile, imageBuf, nImageSize, ref nActualSize, pOverlapped); } } } #endregion #region Back Image int nRetb; StringBuilder strResponseb = new StringBuilder(); strResponseb.Capacity = 4096; int nResponseLengthb = 4096; int nImageSizeb; string strTmpb; string strImageIDb; nRetb = MTMICRGetIndexValue(m_strDocInfo, "ImageInfo", "ImageSize", 2, strResponseb, ref nResponseLengthb); strTmpb = strResponseb.ToString(); nImageSizeb = Convert.ToInt32(strTmpb); if (nImageSizeb > 0) { nRetb = MTMICRGetIndexValue(m_strDocInfo, "ImageInfo", "ImageURL", 2, strResponseb, ref nResponseLengthb); strImageIDb = strResponseb.ToString(); strLog = "B Image size =" + nImageSizeb + "B ImageID = " + strImageIDb; // MessageBox.Show(strLog); byte[] imageBuf = new byte[nImageSizeb]; nRet = MTMICRGetImage(m_strCurrentDeviceName, strImageIDb, imageBuf, ref nImageSizeb); if (nRet == MICR_ST_OK) { System.IO.FileStream fileWriter = new System.IO.FileStream(@"c:\test_b.jpg", System.IO.FileMode.Create); fileWriter.Write(imageBuf, 0, imageBuf.Length); image_Buf_B = imageBuf; fileWriter.Close(); int nActualSize = nImageSizeb; string strImageFile = g_strAppPath + "\\docimage" + ++nTotalDocProcessed + ".jpg"; int hFile = -1; hFile = CreateFile(strImageFile, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (hFile > 0) { strLog = "B NumOfBytes to write =" + nActualSize; // MessageBox.Show(strLog); IntPtr pOverlapped = IntPtr.Zero; bool bRet = WriteFile(hFile, imageBuf, nImageSizeb, ref nActualSize, pOverlapped); } } } #endregion } else { strLog = "MTMICRProcessCheck return code " + Convert.ToString(nRet); MessageBox.Show(strLog); //PrintStatus(strLog); } } } catch (Exception ex) { MessageBox.Show(ex.Message + " Line Number " + ex.StackTrace); } finally { if (m_bDeviceOpened) CloseCurrentDevice(); } return Output; }
这篇关于检查扫描实施,扫描仪的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文