17 октября, среда 23:26
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Перехват событий ProCash 2000XE

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • Перехват событий ProCash 2000XE

    Есть мысль написать собственный демон для мониторинга событий банкомата, с последующей отсылкой их на СМС. Вопрос-как можно перехватывать программно эти самые события?

  • #2
    Пишете свой фреймворк, который слушает интересующие Вас события и предпринимает соответствующие действия. Для кодинга необходим ProTopas/KIT.

    Комментарий


    • #3
      Вот вопрос как раз и стоит, как слушать эти события

      Комментарий


      • #4
        Какие, например, события Вас интересуют? Если много писанины - переходите в b-mail.

        Комментарий


        • #5
          Такие события как возникновение ошибок диспенсера, опустошение кассет, окончание журнальной и чековой ленты, предупреждения о скором окончании, другие ошибки приводящие к остановке банкомата

          Комментарий


          • #6
            Это стандартные события соответствующих фреймворков. Для отлова используйте метод FrmRegisterForEvents с указанием имени интересующего Вас фреймворка, а также реализуйте у себя обработчик OnFrmEvent, где фильтруйте события, потому как лететь будут абсолютно все. Нпрм, окончание бумаги в журнальном принтере - CCJOURNAL_EVT_PAPER_OUT.
            Все вышесказаное относится к программированию под ProTopas.
            Если Вы хотите ловить события на уровне WOSA/XFS, надо будет вызвать WFSOpen для соответствующих сервис провайдеров и зарегистрироваться на события от них, события будут прилетать в оконную процедуру Вашего приложения.

            Комментарий


            • #7
              А можно поподробнее.. Желательно с примерчиком?

              Комментарий


              • #8
                Для какого уровня? ProTopas или Wosa/XFS?

                Комментарий


                • #9
                  Я думаю досточно будет уровня ProTopas. просто я пока плохо представляю что можно конкретно почерпнуть из соотв. Уровней

                  Комментарий


                  • #10
                    /*
                    регистрируемся на события от чекового принтера и обрабатываем событие отсутствия бумаги

                    */
                    #include "ccrecprt.xpp"

                    static const char fwName[] = "MyFramework";

                    class MyFramework : public CCFrameWork
                    {
                    public:
                    MyFramework()
                    {
                    FrmSetName((PSZ)fwName);
                    FrmRegisterForEvents(CCRECPRTFW);
                    }
                    virtual SHORT OnFrmRequest(SHORT sMethodId,VOID *pData1,
                    SHORT sDataLen1,VOID *pData2, SHORT sDataLen2,VOID *pData3,
                    SHORT sDataLen3,ULONG ulTimeOut)
                    {
                    return CCFRMW_RC_FUNCTION_NOT_SUPPORTED;
                    }

                    virtual SHORT OnFrmEvent(CHAR *szSender,SHORT sEventId, VOID *pData,SHORT sDataLength)
                    {
                    if ( lstrcmpi(szSender,CCRECPRTFW ) == 0 )
                    {
                    switch ( sEventId )
                    {
                    case CCRECPRTFW_EVT_PAPER_OUT:
                    //TODO
                    break;
                    default:
                    break;
                    }
                    }
                    return 0;
                    }
                    };

                    SHORT _Export CreateFrameWorkInstance( CHAR *szFrameWorkName, CCFrameWork **ppFW)
                    {
                    SHORT rc = -1;
                    if (lstrcmpi(szFrameWorkName, fwName) == 0)
                    {
                    *ppFW = (CCFrameWork *) new MyFramework();
                    rc = 0;
                    }
                    return rc;
                    }

                    Комментарий


                    • #11
                      Ну в целом понятно, хотя я пишу на Delphi.
                      Вот только откуда взять? ccrecprt.xpp

                      Комментарий


                      • #12
                        Входит в состав продукта ProTopas/KIT.
                        Кстати, если все-таки возникнет потребность писать для винкоров, придется делать это на msvc++.

                        Комментарий


                        • #13
                          Ясно... А востав стандартного ProInstall я как понимаю KIT не входит?

                          Комментарий


                          • #14
                            ProInstall'ы бывают разные. Если у Вас случайно завалялся ProInstall Developer, то KIT там есть, более того, его можно просто разархивировать и использовать. Впрочем, поищите директорию ptkit внутри директории Install.

                            Комментарий


                            • #15
                              К сожалению девелопер у меня не завалялся... Попробуем решить задачу с помощью анализа электронного журнала и ccprot.log

                              Комментарий

                              Пользователи, просматривающие эту тему

                              Свернуть

                              Присутствует 1. Участников: 0, гостей: 1.

                              Обработка...
                              X