public static void StartCashOut()
        {
            FCCSrv2.DenominationType[] Dt = new FCCSrv2.DenominationType[1];
            Dt[0]        = new FCCSrv2.DenominationType();
            Dt[0].devid  = "1";
            Dt[0].fv     = "100000";
            Dt[0].cc     = "RUB";
            Dt[0].Piece  = "2";
            Dt[0].rev    = "0";
            Dt[0].Status = "2";
            CFCCApi FCC = new CFCCApi();

            FCC.CashOut(Dt);
        }
        // CFCCApi FCCApiEvents = new CFCCApi();
        //CFCCApi  FCCApi = new CFCCApi();
        public static void InitDevice()
        {
            Utils.LogDirCreate();
            Setting = ReadSettings();
            CFCCApi.InitDevice();
            CFCCApi.OnSetStatus           += new EventHandleClass.SetStatusEventHandler(FCCApi_OnSetStatus);
            CFCCApi.OnSendError           += new EventHandleClass.SendErrorEventHandler(CFCCApi_OnSendError);
            CurentOrderfrm                 = new WPFControls.frmCassir();
            CurentOrderfrm.OnCancelChange += new WPFControls.frmCassir.ChangeCancelEventHandler(CurentOrderfrm_OnCancelChange);
            myAdminForm = new WPFControls.frmFCCAdminDialog();
            myAdminForm.OnHideAdminfrm += new HideFrmEventHandler(myAdminForm_OnHideAdminfrm);

            //WriteSettings(Setting);
            //  CFCCApi.InitDevice();
            DeviceRevisionAsinc();
        }
        internal static void RaiseOnCancelChange(int Inserted, int Despens, string ErrorMsg)
        {
            ChangeProcess = false;
            if (OnErrorChange != null)
            {
                string  Mess      = "Ошибка выполнения команды StartChange " + ErrorMsg + Environment.NewLine;
                CFCCApi FCCApi    = new CFCCApi();
                string  DevStatus = "";
                FCCApi.GetStatus(out DevStatus);
                Mess += DevStatus;

                Utils.ToLog("Event OnCancelChange");
                int Change = Math.Max(0, Inserted - Despens);

                OnErrorChange(Change, CurrentCheck, Mess);
            }
        }
        public static bool StartChangeMoney(FCCCheck Chk, out string Status)
        {
            CFCCApi FCCApi = new CFCCApi();

            Status = FCCApi.GetStatusStringRus(LastCI10StatusChange);
            if (LastCI10StatusChange != 1)
            {
                return(false);
            }

            CurentOrderfrm.RenameCancelBtn("Отменить оплату");
            CheckNeedCanceled = false;
            CheckCanceled     = false;

            //string StatusStr = "";
            //int StatusId = FCCApi.GetStatus(out StatusStr);
            //Status = StatusStr;

            CurentOrderfrm.SetCancelButtonEnabled(true);

            /*
             * if ((StatusId != 1) && (StatusId != 18) && (StatusId != 3) && (StatusId != 4))
             * {
             *  return false;
             * }
             */
            CurrentCheck = Chk;



            Total = Chk.RoundedAmount;
            Utils.ToMoneyCountLog(MoneyChangeCommands.StartPayment, (int)Total, 0, 0, 0, CurrentCheck.AlohNumber);
            ChangeProcess      = true;
            FixedDepositRaised = false;
            FCCApi.StartChangeAsync((int)(Total));

            if (IsSync)
            {
                ShowCassirFrm();
            }
            return(true);
        }
        static CFCCApi FCCApi;// = new CFCCApi();

        /*
         * private static int  DeviceRevision(out string Status)
         * {
         *
         *  FCCApi = new CFCCApi();
         *  int res = FCCApi.GetStatusAsync(DeviceRevisionResponse);
         *
         *  if (res == 0)
         *  {
         *      if (CurrentfrmMessAsync != null)
         *      {
         *          CurrentfrmMessAsync.Hide();
         *
         *      }
         *
         *      CurrentfrmMessAsync = new WPFControls.frmMessageAsync("Соединение с устройством приема наличных средств.", 1000);
         *      //CurrentfrmMessAsync.Topmost = true;
         *      // CurrentfrmMessAsync.Show();
         *  }
         *  else
         *  {
         *      WPFControls.frmMessage frmMsg = new WPFControls.frmMessage("Ошибка соединения с устройством приема денежных средств.");
         *      frmMsg.ShowDialog();
         *  }
         *
         *
         * }
         */

        private static void DeviceRevisionAsinc()
        {
            FCCApi = new CFCCApi();
            int res = FCCApi.GetStatusAsync(DeviceRevisionResponse);

            if (res == 0)
            {
                if (CurrentfrmMessAsync != null)
                {
                    CurrentfrmMessAsync.Hide();
                }

                CurrentfrmMessAsync = new WPFControls.frmMessageAsync("Соединение с устройством приема наличных средств.", 1000);
                //CurrentfrmMessAsync.Topmost = true;
                // CurrentfrmMessAsync.Show();
            }
            else
            {
                WPFControls.frmMessage frmMsg = new WPFControls.frmMessage("Ошибка соединения с устройством приема денежных средств.");
                frmMsg.ShowDialog();
            }
        }
        static public void Reset()
        {
            CFCCApi FCCApi = new CFCCApi();

            FCCApi.Reset();
        }
        private static void DeviceRevisionResponse(int ResId, int StatusId, int RBWState, int RCWState, string StatusStr)
        {
            try
            {
                if (ResId != CFCCApi.FCC_SUCCESS)
                {
                    CurrentfrmMessAsync.StopWait(StatusStr);
                }
                else
                {
                    //CFCCApi FApi = new CFCCApi();

                    //EmptyCassetRevision();

                    LastCI10StatusChange = StatusId;

                    if (StatusId == CFCCApi.STATUS_CODE_IDLE)
                    {
                        CurrentfrmMessAsync.HideFrm();
                    }
                    else if (StatusId == CFCCApi.STATUS_CODE_INIT)
                    {
                        if ((RBWState < 1001) && (RCWState < 1001))
                        {
                        }
                        else
                        {
                            if (RBWState > 1000)
                            {
                                CurrentfrmMessAsync.StopWait("Инициализация. Ошибка устройств: " + CFCCApi.GetDiviceStateByCode(RBWState, 1));
                            }
                            else if (RCWState > 1000)
                            {
                                CurrentfrmMessAsync.StopWait("Инициализация. Ошибка устройств: " + CFCCApi.GetDiviceStateByCode(RBWState, 2));
                            }
                        }
                    }
                    else if (StatusId == CFCCApi.STATUS_CODE_DEPOSIT_WAIT)
                    {
                        ChangeProcess = true;

                        if (RBWState == 2700)
                        {
                            CurrentfrmMessAsync.StopWait("Устройство приема наличных средств находится в состоянии ожидания внесения размена. Перейдите на экран администратора и продолжите операцию");
                        }
                        else
                        {
                            CurrentfrmMessAsync.StopWait("Устройство приема наличных средств находится в состоянии ожидания внесения денежных сумм.");
                        }
                    }
                    else
                    {
                        CurrentfrmMessAsync.StopWait(StatusStr);
                    }
                }
            }
            catch
            { }
        }