Есть касса (на примере Атол Fprint 22), она подключена по USB и в драйверах устройств Дэнси пределяется как АСМ порт. Причем резервирует сразу 2 порта (к примеру АСМ1 и АСМ2).
Есть терминал (на примере Ingenico IPP320), он подключен тоже по USB и тоже в драйверах устройсв Дэнси определеяется как АСМ порт. Резервирует один порт.
Ситуация следующая - при первом включении компа в драйверах устройств Дэнси мы выбрали АСМ1 для ФР и АСМ3 для терминала. Запускаем регистрацию продаж - все работает. Комп выключается/перезагружается, настройки не меняем - запускам Дэнси и получаем ошибку ФР не отвечает.
Как мы поняли со временем, при включении компа происходит инициализация устройств ФР и терминала, и кто определится первым тот и займет первый порт. Т.е. если определится терминал первым он будет АСМ1, а касса АСМ2 (и АСМ3), если первым касса - она АСМ1 (и АСМ2), а терминалу остается АСМ3.
В драйверах устройств остается все неизменно, согласно первому дню настроек. Там указаны порты, которые были актуальны на момент первого включения.
Попытка решения проблемы
Мы решили попробовать добавить правило udev для терминала, которое создает символическую ссылку на COM порт (COM50 в примере).
- Код: Выделить всё
ACTION=="add", KERNEL=="tty*", ATTRS{idVendor}=="079b", SYMLINK+="ttyS49"
Запускаем Дэнси кассу, указываем обращаться Платежной системе в COM50.
Все работает. Далее мы понимаем, что это не решение проблемы, поскольку ACМ под терминал остается и конфликт все еще может возникнуть.
По той же схеме мы добавляем правило для ФР (COM80 в примере)
- Код: Выделить всё
ACTION=="add", KERNEL=="tty*", ATTRS{idVendor}=="2912", SYMLINK+="ttyS79"
Работает! Перезагружаем - работает! На положительной ноте проводим тесты безналичной оплаты -
Проводим покупку по безналу - работает
Проводим возврат покупки по безналу - ФР зависает не допечатав чек
И далее выдает ошибку ФР не отвечает.
Опытным путем мы поняли, что дело в символической ссылке правила udev для ФР. Но решить проблему так и не смогли.
Прикрепляю логи Дэнси. Ошибку ФР выявили в интервал с 11:30 до 11:40 поэтому прикрепляю файлы логов близкие к этому времени.