Exemple #1
0
        public void Callback(Int64 ptr)
        {
            IntPtr p  = (IntPtr)ptr;
            Fptr   cb = (Fptr)Marshal.GetDelegateForFunctionPointer(p, typeof(Fptr));

            cb("Made it here!");
        }
Exemple #2
0
        /// <summary>
        /// Получить параметры ККТ.
        /// </summary>
        /// <param name="fptrCommon"></param>
        /// <returns>параметры ККТ</returns>
        private FptrParameters getFptrParameters(Fptr fptrCommon)
        {
            fptrCommon.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_REG_INFO);
            fptrCommon.fnQueryData();
            var fptrParameters = new FptrParameters();

            fptrParameters.TaxationTypes           = fptrCommon.getParamInt(1062);                                  // Текущая СНО
            fptrParameters.AgentSign               = fptrCommon.getParamInt(1057);
            fptrParameters.FfdVersion              = fptrCommon.getParamInt(1209);
            fptrParameters.AutoModeSign            = fptrCommon.getParamBool(1001);
            fptrParameters.OfflineModeSign         = fptrCommon.getParamBool(1002);
            fptrParameters.EncryptionSign          = fptrCommon.getParamBool(1056);
            fptrParameters.InternetSign            = fptrCommon.getParamBool(1108);
            fptrParameters.ServiceSign             = fptrCommon.getParamBool(1109);
            fptrParameters.BsoSign                 = fptrCommon.getParamBool(1110);
            fptrParameters.LotterySign             = fptrCommon.getParamBool(1126);
            fptrParameters.GamblingSign            = fptrCommon.getParamBool(1193);
            fptrParameters.ExciseSign              = fptrCommon.getParamBool(1207);
            fptrParameters.MachineInstallationSign = fptrCommon.getParamBool(1221);
            fptrParameters.FnsUrl            = fptrCommon.getParamString(1060);
            fptrParameters.OrganizationName  = fptrCommon.getParamString(1048);
            fptrParameters.OrganizationEmail = fptrCommon.getParamString(1117);
            fptrParameters.PaymentsAddressM  = fptrCommon.getParamString(1187);
            fptrParameters.PaymentsAddress   = fptrCommon.getParamString(1009);
            fptrParameters.MachineNumber     = fptrCommon.getParamString(1036);
            fptrParameters.OfdVATIN          = fptrCommon.getParamString(1017);
            fptrParameters.OfdName           = fptrCommon.getParamString(1046);
            return(fptrParameters);
        }
 private FptrInstance(Log log)
 {
     try
     {
         _fptr = new Fptr();
     }
     catch (Exception e)
     {
         log.Accept(new Execution(e.Message));
         log.Write();
     }
 }
Exemple #4
0
        /// <summary>
        /// Запустить драйвер, подключится к ФР.
        /// </summary>
        /// <returns></returns>
        private Fptr connect()
        {
            var fptrCommon = new Fptr();

            fptrCommon.setSingleSetting(Constants.LIBFPTR_SETTING_MODEL, Constants.LIBFPTR_MODEL_ATOL_AUTO.ToString());            // Задаем автоматическое определение модели ККМ
            //fptrCommon .setSingleSetting(Constants.LIBFPTR_SETTING_PORT, (KKM10.LIBFPTR_PORT_COM));                    // Задаем подключение по COM-порту
            fptrCommon.setSingleSetting(Constants.LIBFPTR_SETTING_PORT, Constants.LIBFPTR_PORT_USB.ToString());                    // Задаем подключение по USB
            //fptrCommon .setSingleSetting(Constants.LIBFPTR_SETTING_COM_FILE, "COM1");                                // Задаем номер COM-порта
            //fptrCommon .setSingleSetting(Constants.LIBFPTR_SETTING_BAUDRATE, Constants.LIBFPTR_PORT_BR_115200.ToString());        // Задаем скорость обмена

            fptrCommon.applySingleSettings();                                                                    // Применяем настройки
            fptrCommon.open();
            return(fptrCommon);
        }
Exemple #5
0
        public void ExceptionCallback(Int64 ptr)
        {
            IntPtr p   = (IntPtr)ptr;
            Fptr   ecb = (Fptr)Marshal.GetDelegateForFunctionPointer(p, typeof(Fptr));

            try
            {
                ecb("This will segfault!");
            }
            catch (Exception e)
            {
                MessageBox.Show("Handled!" + e);
            }
        }
Exemple #6
0
        private void Button7_Click(object sender, EventArgs e)
        {
            IFptr fptr = new Fptr();

            fptr.open();
            fptr.setParam(1021, "");
            //fptr.setParam(1203, "");
            fptr.operatorLogin();
            //fptr.setParam()
            fptr.setParam(fptr.LIBFPTR_PARAM_REPORT_TYPE, fptr.LIBFPTR_RT_CLOSE_SHIFT);
            fptr.report();
            //MessageBox.Show(fptr.report());
            // fptr.checkDocumentClosed();
            fptr.close();
            fptr.destroy();
        }
Exemple #7
0
        /// <summary>
        /// Запуск выбранной задачи
        /// </summary>
        /// <param name="fptr">Экземпляр драйвера ККТ АТОЛ</param>
        /// <exception cref="ExtendedValidationException">Выбрасывает исключение, если задача не прошла проверку перед отправкой на выполнение</exception>
        /// <exception cref="KKTExecuteOperationException">Выбрасывает исключение, если выполнение задачи не удалось</exception>
        /// <returns>Возвращает результат выполнения задачи</returns>
        public virtual T Execute(Fptr fptr)
        {
            var validationResults = Validate();

            if (validationResults.Count() != 0)
            {
                throw new ExtendedValidationException(validationResults);
            }

            var jsonData = JsonConvert.SerializeObject(this,
                                                       Formatting.Indented,
                                                       new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore, TypeNameHandling = TypeNameHandling.None,
                ContractResolver  = new CamelCasePropertyNamesContractResolver()
            });

            fptr.setParam(Constants.LIBFPTR_PARAM_JSON_DATA, jsonData);

            if (fptr.validateJson() < 0)
            {
                var errorCode = fptr.errorCode();

                if (errorCode != 504)
                {
                    throw new KKTExecuteOperationException(errorCode, fptr.errorDescription());
                }
            }

            fptr.setParam(Constants.LIBFPTR_PARAM_JSON_DATA, jsonData);

            if (fptr.processJson() < 0)
            {
                throw new KKTExecuteOperationException(fptr.errorCode(), fptr.errorDescription());
            }

            var jsonResult = fptr.getParamString(Constants.LIBFPTR_PARAM_JSON_DATA);

            if (jsonResult.IsNullOrEmptyOrWhiteSpace())
            {
                return(default);
Exemple #8
0
        private void reg(Fptr fptrCommon, FptrParameters fptrParameters)
        {
            fptrCommon.setParam(Constants.LIBFPTR_PARAM_DATA_TYPE, Constants.LIBFPTR_DT_SHIFT_STATE);          // Запрашиваем состояние смены
            fptrCommon.queryData();                                                                            // Всё еще запрашиваем
            var state = fptrCommon.getParamInt(Constants.LIBFPTR_PARAM_SHIFT_STATE);                           // Продолжаем запрашивать

            if (state != 0)                                                                                    // Если смена НЕ закрыта, то...
            {
                fptrCommon.close();
                var msg = "Смена открыта. Закройте смену и перезапустите Frontol";
                addLog(msg);
                showError(msg);            // ... ругаемся
                return;
                // и выходим
            }

            fptrCommon.setParam(Constants.LIBFPTR_PARAM_FN_OPERATION_TYPE, Constants.LIBFPTR_FNOP_CHANGE_PARAMETERS);
            fptrCommon.setParam(1060, fptrParameters.FnsUrl);
            fptrCommon.setParam(1009, fptrParameters.PaymentsAddress);
            fptrCommon.setParam(1048, fptrParameters.OrganizationName);
            fptrCommon.setParam(1117, fptrParameters.OrganizationEmail);
            fptrCommon.setParam(1057, fptrParameters.AgentSign);
            fptrCommon.setParam(1187, fptrParameters.PaymentsAddressM);
            fptrCommon.setParam(1209, fptrParameters.FfdVersion);
            fptrCommon.setParam(1001, fptrParameters.AutoModeSign);
            fptrCommon.setParam(1036, fptrParameters.MachineNumber);
            fptrCommon.setParam(1002, fptrParameters.OfflineModeSign);
            fptrCommon.setParam(1056, fptrParameters.EncryptionSign);
            fptrCommon.setParam(1108, fptrParameters.InternetSign);
            fptrCommon.setParam(1109, fptrParameters.ServiceSign);
            fptrCommon.setParam(1110, fptrParameters.BsoSign);
            fptrCommon.setParam(1126, fptrParameters.LotterySign);
            fptrCommon.setParam(1193, fptrParameters.GamblingSign);
            fptrCommon.setParam(1207, fptrParameters.ExciseSign);
            fptrCommon.setParam(1221, fptrParameters.MachineInstallationSign);
            fptrCommon.setParam(1017, fptrParameters.OfdVATIN);
            fptrCommon.setParam(1046, fptrParameters.OfdName);
            fptrCommon.setParam(1101, 4);


            // Далее раскомментировать нужную строку со своей новой СНО
            fptrCommon.setParam(1062, Constants.LIBFPTR_TT_USN_INCOME_OUTCOME);            // УСН Д-Р
            //KKM10.setParam(1062, KKM10.LIBFPTR_TT_USN_INCOME);                // УСН Д
            //KKM10.setParam(1062, KKM10.LIBFPTR_TT_OSN);                        // ОСН
            //KKM10.setParam(1062, KKM10.LIBFPTR_TT_PATENT );                    // Патент
            //KKM10.setParam(1062, KKM10.LIBFPTR_TT_ESN);                        // ЕСХН

            fptrCommon.fnOperation();

            if (fptrCommon.errorCode() != 0)                                                    // Проверяем ошибки
            {
                var msg = fptrCommon.errorDescription();
                addLog(msg);
                showError(msg); // Если есть ошибки, то выводим сообщение с описанием ошибки
                fptrCommon.close();
                return;
            }

            fptrCommon.setParam(Constants.LIBFPTR_PARAM_SETTING_ID, 50);                        // Устанавливаем СНО по умолчанию
            fptrCommon.setParam(Constants.LIBFPTR_PARAM_SETTING_VALUE, '4');                    // Тут выбираем СНО: 1 - ОСН, 2 - УСН (Д), 4 - УСН (Д-Р), 16 - ЕСХН, 32 - Патент
            fptrCommon.writeDeviceSetting();                                                    // Заканчиваем устанавливать

            if (fptrCommon.errorCode() != 0)                                                    // Проверяем ошибки
            {
                var msg = fptrCommon.errorDescription();
                addLog(msg);
                showError(msg);                     // Если есть ошибки, то выводим сообщение с описанием ошибки
                fptrCommon.close();
                return;
            }
        }
Exemple #9
0
	private static extern void set_fptr (Fptr fptr);
 public Interaction(Config config, Log log)
 {
     _config = config;
     _log    = log;
     _fptr   = FptrInstance.GetInstance(_log).GetFptr();
 }
Exemple #11
0
 public State(Fptr fptr) => _fptr = fptr;
Exemple #12
0
 public buttonMenu(string name, Fptr ptr, string lvl)
 {
     buttonName = name;
     pointer    = ptr;
     LobbyLvl   = lvl;
 }