示例#1
0
        private int ConfigureSmart50(int nres)
        {
            SmartComm2.SMART_DEVMODE smdm;
            IntPtr smdm_ptr;

            // alloc
            smdm_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SmartComm2.SMART_DEVMODE)));

            // get current printer settings...
            if (nres == SmartComm2.SM_SUCCESS)
            {
                nres = SmartComm2.SmartComm_GetPrinterSettings((long)hsmartprinterid, (int)smdm_ptr);
            }
            // set to both printing...
            smdm = (SmartComm2.SMART_DEVMODE)Marshal.PtrToStructure(smdm_ptr, typeof(SmartComm2.SMART_DEVMODE));
            smdm.dmDevmode.dmOrientation = DMORIENT_LANDSCAPE;       // set landscape printing...
            smdm.dmOemdev.dwDocPrintSide = SmartComm2.SMART_PRINTSIDE_BOTH;
            Marshal.StructureToPtr(smdm, smdm_ptr, true);
            // change printer settings...
            if (nres == SmartComm2.SM_SUCCESS)
            {
                nres = SmartComm2.SmartComm_SetPrinterSettings((long)hsmartprinterid, (int)smdm_ptr);
            }

            // free smart printer
            Marshal.FreeHGlobal(smdm_ptr);
            return(nres);
        }
示例#2
0
        /// <summary>
        /// Get List of Available Card Printers
        /// </summary>
        private string getDeviceList()
        {
            // get device list
            deviceList_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SmartComm2.SMART_PRINTER_LIST)));
            int convertedPointer = (int)deviceList_ptr.ToInt64();

            printerresponse = SmartComm2.SmartComm_GetDeviceList2((long)deviceList_ptr);
            object listUndefined = Marshal.PtrToStructure(deviceList_ptr, typeof(SmartComm2.SMART_PRINTER_LIST));

            deviceList = (SmartComm2.SMART_PRINTER_LIST)listUndefined;

            if (printerresponse != SmartComm2.SM_SUCCESS)
            {
                Marshal.FreeHGlobal(deviceList_ptr);
            }

            int i;

            SmartComm2.SMART_PRINTER_ITEM smartItem = deviceList.item[0];

            for (i = 0; i <= deviceList.n - 1; i++)
            {
                printerStrDescription = new string(deviceList.item[i].desc);
            }

            Marshal.FreeHGlobal(deviceList_ptr);
            return(printerStrDescription);
        }
示例#3
0
        private int PrepareCardText(int nres)
        {
            // drawing routines are followed....
            // draw image to front page
            string strImg;
            IntPtr strImg_ptr;

            SmartComm2.RECT rcDraws;
            IntPtr          rcDraws_ptr;

            // draw text to front page
            string strText;
            IntPtr strText_ptr;
            string strFont;
            IntPtr strFont_ptr;

            strText     = textToPrintOnCard;
            strText_ptr = Marshal.StringToHGlobalUni(strText);
            strFont     = "Tahoma";
            strFont_ptr = Marshal.StringToHGlobalUni(strFont);
            rcDraws_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SmartComm2.RECT)));
            if (nres == SmartComm2.SM_SUCCESS)
            {
                nres = SmartComm2.SmartComm_DrawText((long)hsmartprinterid, System.Convert.ToByte(SmartComm2.PAGE_FRONT), System.Convert.ToByte(SmartComm2.PANEL_BLACK), 90, 480, (long)strFont_ptr, 11, SmartComm2.FONT_BOLD, (long)strText_ptr, (long)rcDraws_ptr);
            }
            Marshal.FreeHGlobal(strText_ptr);
            Marshal.FreeHGlobal(strFont_ptr);
            Marshal.FreeHGlobal(rcDraws_ptr);
            return(nres);
        }
示例#4
0
        private static void AquireDeviceInformation(string strDesc, out IntPtr strDesc_ptr, out int nres, out SmartComm2.SMART_PRINTER_INFO DevInfo, out IntPtr DevInfo_ptr, out int devGroup)
        {
            // acquire destination device information
            strDesc_ptr = Marshal.StringToHGlobalUni(strDesc);
            DevInfo_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SmartComm2.SMART_PRINTER_INFO)));
            nres        = SmartComm2.SmartComm_GetDeviceInfo2((long)DevInfo_ptr, (long)strDesc_ptr, SmartComm2.SMART_OPENDEVICE_BYDESC);
            DevInfo     = (SmartComm2.SMART_PRINTER_INFO)Marshal.PtrToStructure(DevInfo_ptr, typeof(SmartComm2.SMART_PRINTER_INFO));
            Marshal.FreeHGlobal(DevInfo_ptr);

            devGroup = 0;
            switch ((DevInfo.std.pid >> 4))
            {
            case 0x385:
            {
                devGroup = SmartComm2.GROUP_SMART50;           // PRINTER_50
                break;
            }

            case 0x386:
            {
                devGroup = SmartComm2.GROUP_SMART50;           // PRINTER_50
                break;
            }

            case 0x387:
            {
                devGroup = SmartComm2.GROUP_SMART50;           // PRINTER_30
                break;
            }

            case 0x388:
            {
                devGroup = SmartComm2.GROUP_SMART50;           // PRINTER_30
                break;
            }

            case 0x370:
            {
                devGroup = SmartComm2.GROUP_SMART70;           // PRINTER_70
                break;
            }

            case 0x351:
            {
                devGroup = SmartComm2.GROUP_SMART51;           // PRINTER_51
                break;
            }

            case 0x331:
            {
                devGroup = SmartComm2.GROUP_SMART51;           // PRINTER_31
                break;
            }
            }
        }
示例#5
0
        private int CompleteFrontPrint(int nres)
        {
            // print front page
            if (nres == SmartComm2.SM_SUCCESS)
            {
                printerStatus = "Print Ready";
                nres          = SmartComm2.SmartComm_DoPrint((long)hsmartprinterid);
            }

            return(nres);
        }
示例#6
0
        private int PrepareCardforPrinting(int nres)
        {
            if (nres == SmartComm2.SM_F_CARDISINSIDE)
            {
                isCardPresent = true;
                printerStatus = "Preparing card for print";
                nres          = SmartComm2.SM_SUCCESS;
                nres          = SmartComm2.SmartComm_Move((long)hsmartprinterid, SmartComm2.CARDPOS_PRINT);
            }

            return(nres);
        }
示例#7
0
        public int OperateStepMotor()
        {
            int  nres;
            int  ncmdlen = 13;
            byte pcmd    = 0x40;

            nres = SmartComm2.SmartCommEx_CmdSend((long)hsmartprinterid, pcmd, ncmdlen);
            if (nres == SmartComm2.SM_SUCCESS)
            {
            }
            return(nres);
        }
示例#8
0
        private int EnterSBSMode(int nres)
        {
            // enter sbs mode
            if (nres == SmartComm2.SM_SUCCESS)
            {
                printerStatus = "SBS Start";
                nres          = 111;
                nres          = SmartComm2.SmartComm_SBSStart((long)hsmartprinterid);
            }

            return(nres);
        }
示例#9
0
        private int RotateCardifPossible(int nres, SmartComm2.SMART_PRINTER_INFO DevInfo)
        {
            // print back pageand rotator is installed
            if (nres == SmartComm2.SM_SUCCESS & DevInfo.opt.is_dual == SmartComm2.VC_TRUE)
            {
                printerStatus   = "Printing";
                nres            = SmartComm2.SmartComm_DoPrint((long)hsmartprinterid);
                isCardPrintDone = true;
                printerStatus   = "Print Complete";
            }

            return(nres);
        }
示例#10
0
        private int PullCardIntoCardprinter(int nres)
        {
            // card in
            if (nres == SmartComm2.SM_SUCCESS)
            {
                printerStatus = "Moving Card into Tray";
                nres          = 111;
                nres          = SmartComm2.SmartComm_CardIn((long)hsmartprinterid);
                isCardPresent = true;
            }

            return(nres);
        }
示例#11
0
        private void OpenCardprinter(IntPtr strDesc_ptr, out int nres, out IntPtr hsmart_ptr)
        {
            // open device
            hsmart_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Int64)));
            nres       = SmartComm2.SmartDCL_OpenDevice2((long)hsmart_ptr, (long)strDesc_ptr, SmartComm2.SMART_OPENDEVICE_BYDESC, DMORIENT_LANDSCAPE);
            if (nres == SmartComm2.SM_SUCCESS)
            {
                hsmartprinterid = Marshal.ReadInt64(hsmart_ptr);
            }
            Marshal.FreeHGlobal(hsmart_ptr);
            Marshal.FreeHGlobal(strDesc_ptr);

            SetPrinterStatus(nres);
        }
示例#12
0
        private int CloseCardPrinter(int nres)
        {
            // close card printer...
            if (nres == SmartComm2.SM_SUCCESS)
            {
                nres = SmartComm2.SmartComm_CloseDevice((long)hsmartprinterid);
            }
            else
            {
                _eventLogger.LogError("Unable to close printer : " + nres);
            }

            return(nres);
        }
示例#13
0
 /// <summary>
 /// Presents card out back of card Printer
 /// </summary>
 public void PrinterCardOutBack()
 {
     //Move Card Out
     if (hsmartprinterid != 0 && printerHasCard)
     {
         Int32 nres2;
         nres2 = SmartComm2.SmartComm_CardOutBack(hsmartprinterid);
         if (printerresponse == SmartComm2.SM_SUCCESS)
         {
             printerStatus   = "Card in back";
             printerresponse = nres2;
         }
     }
 }
示例#14
0
        private int ClosePrintDocument(int nres)
        {
            // close document...
            if (nres == SmartComm2.SM_SUCCESS)
            {
                nres = SmartComm2.SmartComm_CloseDocument((long)hsmartprinterid);
            }
            else
            {
                _eventLogger.LogError("Unable to close printer : " + nres);
            }

            return(nres);
        }
示例#15
0
        private int LeaveSBSMode(int nres)
        {
            // leave sbs-mode
            if (hsmartprinterid != 0)
            {
                Int32 nres2;
                nres2 = SmartComm2.SmartComm_SBSEnd((long)hsmartprinterid);
                if (nres == SmartComm2.SM_SUCCESS)
                {
                    nres = nres2;
                }
            }

            return(nres);
        }
示例#16
0
        /// <summary>
        /// Moves card to card bin
        /// </summary>
        public void PrinterBinCard()
        {
            if (hsmartprinterid != 0)
            {
                Int32 nres2;
                nres2 = SmartComm2.SmartComm_CardOut(hsmartprinterid);
                if (printerresponse == SmartComm2.SM_SUCCESS)
                {
                    printerresponse = nres2;
                }

                printerStatus = "Card has been Binned";
                SetPrinterStatus(nres2);
            }
        }
示例#17
0
        private int AllocateCardprinter()
        {
            printerStatus = "initializing printer";
            // get device list
            int nres;

            deviceList_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SmartComm2.SMART_PRINTER_LIST)));
            int convertedPointer = (int)deviceList_ptr.ToInt64();

            nres = SmartComm2.SmartComm_GetDeviceList2((long)deviceList_ptr);
            object listUndefined = Marshal.PtrToStructure(deviceList_ptr, typeof(SmartComm2.SMART_PRINTER_LIST));

            deviceList = (SmartComm2.SMART_PRINTER_LIST)listUndefined;
            return(nres);
        }
示例#18
0
        /// <summary>
        /// Opens first Card printer on card printer device list
        /// </summary>
        private void openCardPrinter()
        {
            getDeviceList();
            // open device
            hsmartprinter_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Int64)));
            printerresponse   = SmartComm2.SmartDCL_OpenDevice2((long)hsmartprinter_ptr, (long)printerStrDescription_ptr, SmartComm2.SMART_OPENDEVICE_BYDESC, DMORIENT_LANDSCAPE);
            if (printerresponse == SmartComm2.SM_SUCCESS)
            {
                hsmartprinterid = Marshal.ReadInt64(hsmartprinter_ptr);
            }
            Marshal.FreeHGlobal(hsmartprinter_ptr);
            Marshal.FreeHGlobal(printerStrDescription_ptr);

            moveCardIntoPrinter();
        }
示例#19
0
 /// <summary>
 /// Moves card back into tray
 /// </summary>
 public void PrinterMoveCardMegnetic()
 {
     //Move Card Out
     if (hsmartprinterid != 0 && printerHasCard)
     {
         Int32 nres2;
         nres2 = SmartComm2.SmartComm_Move(hsmartprinterid, SmartComm2.CARDPOS_MAGNETIC);
         if (printerresponse == SmartComm2.SM_SUCCESS)
         {
             printerStatus = "Card in Tray";
             SetPrinterStatus(nres2);
             printerresponse = nres2;
         }
     }
 }
示例#20
0
        public int EnterTestMode()
        {
            int nres;

            nres = SmartComm2.SmartComm_GetStatus((long)hsmartprinterid, m_nTestModeSet);
            if (nres == SmartComm2.SM_SUCCESS)
            {
                m_nTestModeSet &= SmartComm2.SMSC_S_TESTMODE;
                if (m_nTestModeSet == 0x00)
                {
                    nres = SmartComm2.SmartCommEx_ToggleTestMode((long)hsmartprinterid);
                }
            }

            return(nres);
        }
示例#21
0
        private int PresetCard(int nres)
        {
            // card out
            if (hsmartprinterid != 0 && nres == SmartComm2.SM_SUCCESS)
            {
                Int32 nres2;
                nres2 = SmartComm2.SmartComm_CardOutBack((long)hsmartprinterid);
                if (nres == SmartComm2.SM_SUCCESS)
                {
                    nres = nres2;
                }

                printerStatus = "Card in back";
            }

            return(nres);
        }
示例#22
0
        private int PrintCard(int nres, SmartComm2.SMART_PRINTER_INFO DevInfo)
        {
            // print
            if (nres == SmartComm2.SM_SUCCESS)
            {
                if (DevInfo.opt.is_dual == SmartComm2.VC_FALSE)
                {
                    nres = SmartComm2.SmartDCL_Print((long)hsmartprinterid, SmartComm2.SMART_PRINTSIDE_FRONT);
                }
                else
                {
                    nres = SmartComm2.SmartDCL_Print((long)hsmartprinterid, SmartComm2.SMART_PRINTSIDE_BOTH);
                }
            }

            return(nres);
        }
示例#23
0
        public int ExitTestMode()
        {
            int   nres;
            Int64 uis = SMSC_S_TESTMODE;

            nres = SmartComm2.SmartComm_GetStatus((long)hsmartprinterid, (long)uis);
            if (nres == SmartComm2.SM_SUCCESS)
            {
                uis &= SmartComm2.SMSC_S_TESTMODE;
                if (m_nTestModeSet != uis)
                {
                    nres = SmartComm2.SmartCommEx_ToggleTestMode((long)hsmartprinterid);
                }
            }

            return(nres);
        }
示例#24
0
        /// <summary>
        /// Moves card into card printer from card stock
        /// </summary>
        private void moveCardIntoPrinter()
        {
            string strDesc = "";
            IntPtr strDesc_ptr;
            int    nres;
            IntPtr hsmart_ptr;

            SmartComm2.SMART_PRINTER_INFO DevInfo;
            IntPtr DevInfo_ptr;


            getDeviceList();

            // acquire destination device information
            strDesc_ptr = Marshal.StringToHGlobalUni(strDesc);
            DevInfo_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(SmartComm2.SMART_PRINTER_INFO)));
            nres        = SmartComm2.SmartComm_GetDeviceInfo2((long)DevInfo_ptr, (long)strDesc_ptr, SmartComm2.SMART_OPENDEVICE_BYDESC);
            DevInfo     = (SmartComm2.SMART_PRINTER_INFO)Marshal.PtrToStructure(DevInfo_ptr, typeof(SmartComm2.SMART_PRINTER_INFO));
            Marshal.FreeHGlobal(DevInfo_ptr);

            Int32 devGroup = 0;

            switch ((DevInfo.std.pid >> 4))
            {
            case 0x385:
            {
                devGroup = SmartComm2.GROUP_SMART50;           // PRINTER_50
                break;
            }

            case 0x386:
            {
                devGroup = SmartComm2.GROUP_SMART50;           // PRINTER_50
                break;
            }

            case 0x387:
            {
                devGroup = SmartComm2.GROUP_SMART50;           // PRINTER_30
                break;
            }

            case 0x388:
            {
                devGroup = SmartComm2.GROUP_SMART50;           // PRINTER_30
                break;
            }

            case 0x370:
            {
                devGroup = SmartComm2.GROUP_SMART70;           // PRINTER_70
                break;
            }

            case 0x351:
            {
                devGroup = SmartComm2.GROUP_SMART51;           // PRINTER_51
                break;
            }

            case 0x331:
            {
                devGroup = SmartComm2.GROUP_SMART51;           // PRINTER_31
                break;
            }
            }

            // open device
            hsmart_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Int64)));
            nres       = SmartComm2.SmartDCL_OpenDevice2((long)hsmart_ptr, (long)strDesc_ptr, SmartComm2.SMART_OPENDEVICE_BYDESC, DMORIENT_LANDSCAPE);
            if (nres == SmartComm2.SM_SUCCESS)
            {
                hsmartprinterid = Marshal.ReadInt64(hsmart_ptr);
            }
            Marshal.FreeHGlobal(hsmart_ptr);
            Marshal.FreeHGlobal(strDesc_ptr);


            // enter sbs mode
            if (nres == SmartComm2.SM_SUCCESS)
            {
                nres = 111;
                nres = SmartComm2.SmartComm_SBSStart((long)hsmartprinterid);
            }

            // card in
            if (nres == SmartComm2.SM_SUCCESS)
            {
                nres = 111;
                nres = SmartComm2.SmartComm_CardIn((long)hsmartprinterid);
            }
        }