public bool DeinitializeReceipt()
 {
     try
     {
         Log.WriteLog("DeinitializeReceipt started", "ReceiptPrinter");
         StopPrinterStatusMoniter();
         OPOSPOSPrinter1.DeviceEnabled = false;
         int ret = OPOSPOSPrinter1.ReleaseDevice();
         ret             = OPOSPOSPrinter1.Close();
         OPOSPOSPrinter1 = null;
         if (ret == 0)
         {
             Log.WriteLog("********************Deinitialization successful**************************", "ReceiptPrinter");
             return(true);
         }
         else
         {
             Log.WriteLog("Deinitialization failed. Error code:" + ret, "ReceiptPrinter");
             return(false);
         }
     }
     catch (Exception ex)
     {
         Log.WriteLog("Exception occur while deinitialization" + ex.Message, "ReceiptPrinter");
         return(false);
     }
 }
        public bool InitializeReceipt()
        {
            int ret = -1;

            try
            {
                Log.WriteLog("**************************Called InitializeReceipt()******************************", "ReceiptPrinter");

                Global.PrinterType = System.Configuration.ConfigurationManager.AppSettings["RPType"].ToString();
                Log.WriteLog("Receipt Printer Type - " + Global.PrinterType, "ReceiptPrinter");

                if (Global.PrinterType.ToLower() == "lipi")
                {
                    if (Global.objSerial == null)
                    {
                        Global.objSerial = new SerialComm(System.Configuration.ConfigurationManager.AppSettings["RPPort"].ToString(), 115200);
                    }

                    if (Global.objSerial.Open())
                    {
                        Global.RPStatus = "Printer Online";
                        Log.WriteLog("Receipt Printer Device Initialize Successfully", "ReceiptPrinter");
                        return(true);
                    }
                    else
                    {
                        Global.RPStatus = "Printer Offline";
                        Log.WriteLog("Receipt Printer Initialize Failed", "ReceiptPrinter");
                        return(false);
                    }
                }
                else  //BixLon Printer
                {
                    if (OPOSPOSPrinter1 == null)
                    {
                        OPOSPOSPrinter1 = new OposPOSPrinter_CCO.OPOSPOSPrinter();
                    }

                    if (OPOSPOSPrinter1 != null)
                    {
                        ret = OPOSPOSPrinter1.Open(Global.PrinterType);
                        if (ret == 111 || ret == 106)
                        {
                            OPOSPOSPrinter1.DeviceEnabled = false;
                            OPOSPOSPrinter1.ClearOutput();
                            OPOSPOSPrinter1.Close();
                            ret = OPOSPOSPrinter1.Open(Global.PrinterType);
                        }

                        if (ret == 0)
                        {
                            ret = OPOSPOSPrinter1.ClaimDevice(300);
                            if (ret == 0)
                            {
                                OPOSPOSPrinter1.DeviceEnabled      = true;
                                OPOSPOSPrinter1.StatusUpdateEvent += OPOSPOSPrinter1_StatusUpdateEvent;
                                Log.WriteLog("Receipt Printer Device Initialize Successfully", "ReceiptPrinter");
                            }
                            else
                            {
                                Log.WriteLog("Failed to Claim Receipt Printer Device. Error code return: " + ret, "ReceiptPrinter");
                            }
                        }
                        else
                        {
                            Log.WriteLog("Failed to open connection with Receipt Printer. Error code:" + ret, "ReceiptPrinter");
                        }
                    }
                    else
                    {
                        ret = -1;
                        Log.WriteLog("Failed to initialize receipt printer object", "ReceiptPrinter");
                    }

                    if (ret == 0)
                    {
                        GetPrinterStatus();
                        Global.RPStatus = "Printer Online";
                        return(true);
                    }
                    //else if(ret==102 || ret==106 || ret== 114)
                    //{
                    //    //zGetPrinterStatus();
                    //    Global.RPStatus = "Paper Out";
                    //    return false;
                    //}
                    else
                    {
                        Global.RPStatus = "Printer Offline";
                        return(false);
                    }
                }
            }
            catch (Exception ex)
            {
                Log.WriteLog("Exception occours while initializing printer: " + ex.Message, "ReceiptPrinter");
                return(false);
            }
        }