检查扫描实施,扫描仪 [英] Cheque Scanning Implementation,Scanner

查看:76
本文介绍了检查扫描实施,扫描仪的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





有没有人在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆