You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Необязательно заводить отдельную ссылку -- для вызова методов можно обращаться напрямую к <i>Trans2QuikLibraryLoader.LIBRARY</i>.
13
14
14
-
2) Большинство методов библиотеки Trans2Quik.dll возвращают статус выполнения, а при возникновении ошибки записывают информацию о ней в специальные объекты (обычно, ссылка на код ошибки и буффер под описание ошибки), которые передаются как аргументы метода. Выделим под них место:
15
+
2) Большинство методов библиотеки Trans2Quik.dll возвращают статус выполнения, а при возникновении ошибки записывают информацию о ней в специальные объекты (обычно это ссылка на код ошибки и буффер под описание ошибки), которые передаются как аргументы метода. Выделим под них место:
15
16
```
16
17
NativeLongByReference errorCode = new NativeLongByReference();
4) Чтобы отправить транзакцию в терминал, необходимо:
25
-
<br/>
26
-
-- Сформировать строковое представление транзакции (примеры таких представлений можно найти в файле "6 Работа с др приложениями.pdf" из инструкции к API терминала):
27
-
Чтобы не усложнять, возьмём уже сформированную строку.
28
-
<br/>
29
-
-- Вызвать метод библиотеки <i>TRANS2QUIK_SEND_ASYNC_TRANSACTION( ... )</i> и передать ему строковое представление транзации, объекты под код ошибки и сообщение для ошибки. Внимание!: текст транзакции ниже взят из руководства к библиотеке trans2quik.dll, и транзакция, основанная на нём, на сервер отправлена не будет. Для грамотного составления текстов транзакций рекомендую ознакомиться с форматом транзакций в файле "6 Работа с др приложениями.pdf", пункт 6.11.3.
26
+
27
+
1)Сформировать строковое представление транзакции (примеры таких представлений можно найти в файле "6 Работа с др приложениями.pdf" из инструкции к API терминала). Чтобы не усложнять, возьмём уже сформированную строку.
28
+
2) Вызвать метод библиотеки <i>TRANS2QUIK_SEND_ASYNC_TRANSACTION( ... )</i> и передать ему строковое представление транзации, объекты под код ошибки и сообщение для ошибки.
29
+
30
+
**Внимание!** Строковое представление транзакции взято из руководства к библиотеке trans2quik.dll, и транзакция, основанная на нём, на сервер отправлена не будет, т.к. в ней имеются недействительные значения параметров. Для грамотного составления строк транзакций рекомендую ознакомиться с форматом транзакций в файле "6 Работа с др приложениями.pdf", пункт 6.11.3.
Long result = quikAdapter.TRANS2QUIK_SEND_ASYNC_TRANSACTION(transaction, errorCode, buffer, buffer.length);
33
34
```
34
35
Расшифровка результата <i>result</i> работы метода следующая (алиасы говорят сами за себя):
36
+
35
37
```
36
38
0 = TRANS2QUIK_SUCCESS
37
39
1 = TRANS2QUIK_FAILED
@@ -53,13 +55,15 @@ Long result = quikAdapter.TRANS2QUIK_SEND_ASYNC_TRANSACTION(transaction, errorCo
53
55
Подобный подход используется и для вызова других методов.
54
56
55
57
<h3>Касаемо функций обратного вызова (callbacks)</h3>
58
+
56
59
Часто терминал после обработки какого-то события может посылать нам информацию. Это может быть, например, обрыв соединения с интернетом или ответ на посланную нами асинхронную транзакцию.
57
60
Получение такой информации реализовано через функции обратного вызова: терминал вызывает определённый метод библиотеки с определёнными аргументами, представляющими собой информацию, которую хочет передать терминал.
58
61
Обрабатывать эту информацию можно по-разному. Для обработки функций обратного вызова необходимо переопределить их поведение с своём приложении.
59
-
Например, мы хотим реагировать на обрыв соединения с Интернетом, логгируя это событие. Для этого в Trans2Quik есть callback под названием TRANS2QUIK_CONNECTION_STATUS_CALLBACK.
60
-
В обёртке он представлен интерфейсом ConnectionStatusCallback, наследником общего интерфейса коллбэков StdCallCallback.
61
-
Каждый коллбэк имеет у себя метод void callback(... ) со своим набором аргументов.
62
+
Например, мы хотим реагировать на обрыв соединения с Интернетом, логгируя это событие. Для этого в Trans2Quik есть callback под названием _TRANS2QUIK_CONNECTION_STATUS_CALLBACK_.
63
+
В обёртке он представлен интерфейсом ConnectionStatusCallback, наследником общего интерфейса коллбэков _StdCallCallback_.
64
+
Каждый коллбэк имеет у себя метод _void callback(...)_ со своим набором аргументов.
62
65
В своём коде создаём объект интерфейса ConnectionStatusCallback и переопределяем у него метод callback:
66
+
63
67
```
64
68
Trans2QuikLibrary.ConnectionStatusCallback connectionStatusCallback = new Trans2QuikLibrary.ConnectionStatusCallback() {
65
69
@Override
@@ -75,6 +79,7 @@ Trans2QuikLibrary.ConnectionStatusCallback connectionStatusCallback = new Trans2
75
79
```
76
80
77
81
Другой пример: реагирование на событие изменения статуса заявки
82
+
78
83
```
79
84
Trans2QuikLibrary.OrderStatusCallback orderStatusCallback = new Trans2QuikLibrary.OrderStatusCallback() {
80
85
@Override
@@ -95,16 +100,20 @@ Trans2QuikLibrary.OrderStatusCallback orderStatusCallback = new Trans2QuikLibrar
95
100
}
96
101
};
97
102
```
103
+
98
104
Разумеется, логгирование -- не единственная возможная ваша реакция на событие.
99
-
Например, информацию OrderStatusCallback можно использовать для контролирования работы бота.
105
+
Например, информацию _OrderStatusCallback_ можно использовать для контролирования работы бота.
106
+
107
+
Экземпляры обработчиков коллбэков нужно передать библиотеке Trans2Quik.dll. Для каждого коллбэка в библиотеке существует свой метод для этого. Например, для установки коллбэка на статус соединения (_ConnectionStatusCallback_) используется метод <i>TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK</i>:
100
108
101
-
Экземпляры обработчиков коллбэков нужно передать библиотеке Trans2Quik.dll. Для каждого коллбэка в библиотеке существует свой метод для этого. Например, для установки коллбэка на статус соединения (ConnectionStatusCallback) используется метод <i>TRANS2QUIK_SET_CONNECTION_STATUS_CALLBACK</i>:
Вообще говоря, реализовывать и устанавливать коллбэки -- дело сугубо личное, определяемое исходя из списка событий, которые вам интересны.
106
114
107
115
Подводя итог: результаты некоторых событий, происходящих в терминале, -- обработки транзакций, изменения статуса заявок и многое другое (см. "6 Работа с др приложениями.pdf") -- получаются посредством коллбэков.
108
116
109
117
<h3>Как получать информацию из Quik в Java?</h3>
118
+
110
119
Лично я использую способ, описанный здесь: https://github.com/boscogh/quik_pipe
0 commit comments