Печать команд вразброс

Наиболее часто встречающиеся неисправности как программного, так и аппаратного толка.
Logger
Сообщения: 20
Зарегистрирован: 22 янв 2016, 14:14

Печать команд вразброс

Сообщение Logger » 02 сен 2016, 14:45

Перевел retail-01k с supervisor-а на xml. Появилось три проблемы:
1. Если печатать текст в чеке, то не соблюдается порядок печати текста, а именно, после такого кода:

Код: Выделить всё

         include 'socketstart.php';
         $in = '<ControlProtocol messageType="request"><PrintTextLine DocumentType="docCheck" Text="Кассир: '.$operator_name.'" /></ControlProtocol>';
         socket_write($socket, $in, strlen($in));
         socket_close($socket);

         include 'socketstart.php';
         $in = '<ControlProtocol messageType="request"><PrintTextLine DocumentType="docCheck" Text="'.$operator_address.'" /></ControlProtocol>';
         socket_write($socket, $in, strlen($in));
         socket_close($socket);

         include 'socketstart.php';
         $in = '<ControlProtocol messageType="request"><PrintTextLine DocumentType="docCheck" Text="'.$address.'" /></ControlProtocol>';
         socket_write($socket, $in, strlen($in));
         socket_close($socket);

         include 'socketstart.php';
         $in = '<ControlProtocol messageType="request"><PrintTextLine DocumentType="docCheck" Text="Лицевой счет №'.$acc.'" /></ControlProtocol>';
         socket_write($socket, $in, strlen($in));
         socket_close($socket);

Первые две строки выдаются на ура, затем идет произвольно третья или четвертая строка, затем сам чек, закрытие чека и после отрезки печатается то, что недопечаталось ранее.
2. Вторая странность заключается в том, что ФР периодически выпадает с ошибкой "88 - ожидание команды продолжения печати".

Есть подозрение, что нужно снизить скорость/увеличить таймаут для решения первых двух или есть еще какие-то мысли?

3. ФР иногда стал врать по сумме. Например, при отправке 1 руб, выдает итог чека 0,99 и копейку сдачи. Наблюдается такое через раз (один раз нормально, другой врет на один и тот же платеж на одну и ту же сумму).

Logger
Сообщения: 20
Зарегистрирован: 22 янв 2016, 14:14

Re: Печать команд вразброс

Сообщение Logger » 06 сен 2016, 09:23

По первой и второй проблеме пробовал следующее:
- увеличил таймаут до 3000 мс (Скорость 38400);
- отключил fastMode в конфиге (с перезапуском, разумеется).
Ни то, ни другое не возымело действия на печать строк вразброс

По третьей проблеме просмотрел var_dump всех посылаемых ФР переменных, в т.ч. преобразовывая их во флоат, если ранее они были int. Но во всех случаях ФР посылается одно число, а печатает он другое.

Logger
Сообщения: 20
Зарегистрирован: 22 янв 2016, 14:14

Re: Печать команд вразброс

Сообщение Logger » 07 сен 2016, 08:44

Есть мысль, что проблема №3 возникает по причине того, что команды тоже идут вразнабой, т.е. вместо
Sale
Sale
Total
отправляется на печать
Sale
Total
Sale
Этим объясняется и сдача в чеке (переменная, отправленная как ИТОГ, становится "внесено наличных", а итог просто подбивается суммой того, что дошло из Sale-ов) и необходимость команды "продолжить печать" после такого рода сбоев (получается незакрытый Sale). Попробую поставить задержку между отправкой команд в самом скрипте.

Logger
Сообщения: 20
Зарегистрирован: 22 янв 2016, 14:14

Re: Печать команд вразброс

Сообщение Logger » 07 сен 2016, 14:32

Все три вопроса решились выставлением задержки в 0.3 секунды между socketwrite. Вероятно, конкретный ФР не может обрабатывать инфу так быстро.

Аватара пользователя
RndIT
Администратор
Сообщения: 40
Зарегистрирован: 18 дек 2015, 14:25
Откуда: Ростов-на-Дону
Контактная информация:

Re: Печать команд вразброс

Сообщение RndIT » 23 сен 2016, 09:04

В действительности картина следующая:
на выполнение команды ФР нужно некоторое время. Причем на каждую команду есть свой минимальный тайм-аут. Для печати строки это будет одно значение, а для отчета -- совершенно иное.

QKkmServer принимает команду, отправляет её в ФР и ждёт от ФР ответа, который потом отправляет по сокету клиенту.
Однако, вы в коде не ждёте ответа, а только отправляете задания.
Поэтому цепочка команда-таймаут нарушается.
Для пользователей, имеющих активный сертификат техподдержки, работает поддержка через Skype.
Контакты доступны в профиле.

Logger
Сообщения: 20
Зарегистрирован: 22 янв 2016, 14:14

Re: Печать команд вразброс

Сообщение Logger » 28 сен 2016, 08:32

т.е. должна быть схема:
socketwrite
цикл, в котором ждем socketread
след. команда

На самом деле ответ я жду, но только от Итога чека (по результатам пишу или не пишу платеж в базу), не задумывался как-то об ответе после каждой команды


Вернуться в «Возможные неисправности»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость