
Значит надо было реализовать протокол обмена с фискальным принтером на PHP, благо для этого имелся качественный официальный мануал.
В статье выкладываю получившийся PHP драйвер для моделей сразу двух производителей: АТОЛ (FPrint-5200K) и Штрих-М (Штрих-Light 100).
Код расширяемый, и не составит труда допилить при необходимости до другой схожей модели того же производителя.
<?php
require('KKM/_lib.php'); // там нужно раскомментировать нужную модель
$port = new LocalComPort('/dev/ttyUSB0'); // COM-порт, куда включен принтер
#$kkm = new Shtrih_Light_100($port, 'printf'); // printf - callback для debug вывода
$kkm = new FPrint5200K($port, 'printf');
try {
$kkm->openConnection();
if ($kkm->isReady()) {
echo 'Ready' . PHP_EOL;
$kkm->beep(); // см.команды в файлах FPrint5200K, Shtrih_Light_100, *HiLevel
}
else {
echo 'Not ready' . PHP_EOL;
}
$kkm->closeConnection();
}
catch (Exception $e) {
echo 'E: ' . $e->getMessage() . ' [' . $e->getCode() . ']' . PHP_EOL;
}
Также в комплекте PDF руководства для программистов по реализации протокола обмена.
И на всякий случай отдельно:
Протокол обмена АТОЛ FPrint
Протокол обмена Штрих-М
Добрый день, Валерий ! Ваша задумка очень даже полезная. Но я не очень силен в PHP. У меня возникла потребность общаться с принтером ккм через браузер на PHP. Запись в порт я представляю как fopen("comX", "w"); fwrite($fp, $command); но не знаю как правильно посылать команды (в каком виде) и как обрабатывать ответ. Принтер используется ATOL Fprint11 и Меркурий 119. вы не могли бы посодействовать в решении данного вопроса ?
ОтветитьУдалитьдобрый день. Вам стоит ознакомиться с кодом и примером его использования (вызов метода beep()).
УдалитьОгромное спасибо!
ОтветитьУдалитьОтличная идея! Необходима от вас помощь за финансовое вознаграждение. Укажите пожалуйста любую удобную форму связи. vinnikia at mail.ru
ОтветитьУдалитьВалерий, здравствуйте! Вы случайно через протокол обмена используя Ethernet не пробовали работать? Например с Атол FPrint22ПТК
ОтветитьУдалитьздравствуйте. с FPrint22ПТК не работал. через ethernet я прокидывал COM-порт на немецкий сервер с офисного через ssh и работал с ним из веб-приложения, как с локальным COM-портом.
УдалитьСпасибо за идею! Попробую, если не получится напрямую.
УдалитьПривет! Отличная штуковина! Локально работает на ура. Не могли бы подробнее описать как реализовать вариант с удалённым php-сервером?
ОтветитьУдалитьЗдравствуйте! Можно ли у Вас заказать разработку такого рода под наши нужды?
ОтветитьУдалитьКуда можно написать лично?