Ubuntu 9.04 vs. фискальный регистратор (кассовый аппарат)

    Доброго времени суток всему хабрасообществу.

    Отлично понимаю, что большая часть присутствующих здесь людей давным-давно прошли все стадии становления линуксоида, однако — поделюсь неожиданным опытом, авось сэкономит кому-нибудь время.

    Лично я с линуксом связан постольку-поскольку (исключительно убунту, периодически пользуюсь, несколько раз устанавливал и настраивал, в общем — чайник), но самый продвинутый чайник в этой области из работающих в нашей конторе людей.

    Посему именно мне было поручено избавиться, наконец, от не совсем легальных копий Windows и поставить на рабочие машины Ubuntu 9.04.

    Проблем особых не предвещалось — 1С давным-давно перенесена на терминальный доступ на далеком-далеком сервере с win 2k3 на борту, так что… установка, проверка работоспособности, «обработка напильником» — проприетарные драйвера и плагины, дополнительные драйвера на видео и аудио, сетевые принтеры, серверная smb-шара, терминал. Набор стандартный и отнюдь не пугающий.

    А потом я вспомнил про приблизившийся ко мне с тылу геморрой в виде конторского фискального регистратора ПРИМ-07К, работавшего по ком-порту с древней-предревней DOS 'овской оболочкой.

    Пришел час Ч, жесткие диски были цинично отформатированы, весело подмигивали лампочками cd-rom'ы, на машины шустро и бесконфликтно устанавливалось свободное ПО, а я сидел и думал…

    • Первая и очевидная мысль — WINE – повлекла за собой провал. WINE напрочь отказался загружать чертову программку. Я, конечно, догадывался, что MS-DOS мало имеет отношения к WinApi и DirectX, но надежда была… (напоминаю, что я чайник).
    • Следующей идеей и шагом был старый добрый DOSbox. Он все замечательно запускал и показывал, однако… функций связи с COM-портом я в нем не обнаружил (плохо искал? ), а потому — опять провал.
    • Третьей по счету, но, по идее, той, что должна была стать самой первой мыслью в голову закралось воспоминание о DOSEMU. Достал, установил, настроил как-никак (с мышкой и портами), но… запущенная в нем программа управления фискальным регистратором намертво висла после нажатия. Что бы я не пытался сделать. Провал. Расстроился. Приуныл.

    Тут в голову, наряду с «а пошло оно все», заглянула еще одна идея, чем-то сродни охоте на тушканчиков при помощи ядерного оружия. И она, что характерно, сработала. Пните меня и скажите мне, что это не Ubuntu-Way, но… очень уж домой хотелось.

    Итак. С официальных репозиториев был скачан и установлен пакет virtualbox-ose. На просторах дикого интернета найдена загрузоччная дискета ms-dos (с системными файлами от win98, Забрать здесь), с файловым менеджером, поддержкой мыши и русской консолью, а также установочные дискеты MSDOS 6.22 (Забрать здесь), предварительно, при помощи стандартного гномовского CD\DVD-burner'а в .iso записана программа управления фискальным регистратором.

    Итак:
    Let the lust begin!

    $ virtualbox

    Откроется, собственно, виртуализатор. В нем создаем новую машину, ставим ей тип Dos, 32mb оперативной памяти, создаем жесткий диск мегабайт на 50.
    • Подключаем флоппи-диском образ скачанной загрузочной дискеты и cd-rom'ом созданный образ .iso,
      Не забываем про подключение нужных портов. У меня это был первый и единственный COM, так что в портах virtualbox'a мне пришлось включить только com1, проассоциировать его с /dev/ttyS0 и не забыть проверить, что режим работы выбран в хост-устройство (это значит, что устройство само по мере надобности будет управлять портом).
    • Включам виртуальную машину, грузимся с дискеты, видим забытое, но до сих пор родное «starting ms-dos», на вопросы диспетчера отвчаем однозначно — ESC.
    • Запускаем fdisk, размечаем наш маленький виртуальный жесткий диск, возвращаемся к консоли.
    • Запускаем файловый менеджер (на этой дискете он в «BLOCK\hc.exe») и копируем нашу программу с подключенного образа в корень диска C: виртуальной машины.
    • Выключаем машину.
    • Монтируем флоппи диском первую дискету MS-DOS, включаем машину, ставим, следуя указаниям, дос, снова выключаем машину.
    • Снова монтируем скачанную загрузочную дискету, загружаемся с нее, запускаем файловый менеджер и при помощи него копируем в C:\ файлы keyrus.com и mouse.com (русификация консоли и драйвер мышки) с дискеты.
    • Делаем A:\SYS C: (копирование обновленных системных файлов с диска A: на C:. Без этого программа периодически уходила в глубокую депрессию и окончательно переставала со мной общаться).
    • Открываем для редактирования C:\autoexec.bat, (в файловом менеджере на F4), дописываем в конец этого файла:

      keyrus.com
      mouse.com
      исполняемый_файл_программы.exe (у меня это был frs.exe)


    • Сохраняем.
    В принципе — все. Выключаем, в очередной раз, виртуальную машину, проходимся по опциям, убирая всякую ненужную мишуру, вроде сетевых интерфейсов, ненужных портов, смонтированных в эту гостевую систему устройств и прочая. Включаемся, смотрим на ВНЕЗАПНО промелькнувший бутскрин от windows 98, пускаем скупую слезу, с удовлетворением наблюдаем на загружающуюся консоль, которая сразу разворачивает вашу программу.

    Испытываем программу, слышим такой желанный звук открывающего сеанс фискального регистратора… радуемся.

    Ну и последний мелкий штришок — совсем уже глупый — создаем на рабочем столе кнопку запуска приложения, в поле «команда» для нее пишем:

    virtualbox -startvm имя_машины

    ставим имя «Касса» и… совсем все. Манагер работает с кассой почти точно так же, как работал с ней в Windows XP.

    Извиняюсь за отсутствие скриншотов — материала под рукой нет, я дома, а он на работе ).

    Как-то сумбурно получилось. И, в основном про DOS, но… надеюсь — кому-нибудь пригодится ). И еще — очень хотелось бы услышать справедливую критику в адрес такого решения, а также другие возможные варианты. Спасибо за внимание.

    UPD: Спасибо НЛО за приглашение )
    UPD1: Обещанные скриншоты:

    Дос:
    Дос
    Запущенная программа:
    Сама программа
    О Боже! Что это? (:
    )
    Настроенная виртуальная машина:
    Настроенная виртуальная машина
    Кнопка запуска:
    Настройки кнопки
    Поделиться публикацией

    Комментарии 39

      +19
      Ну че сказать. Благодаря таким чайникам, как Вы, линукс распространяется по миру. Спасибо!
        +2
        Спасибо на добром слове
        +3
        А MSDOS 6.22 бесплатен? Попробуйте FreeDOS.
          0
          Насколько я помню бесплатен, и давным-давно.
            +1
            Вы уверены? MS-DOS уже много лет не продается, но это не значит что он бесплатен
              0
              мне кажется, что лицензионное соглашение на дос никто не отменял.
                0
                Гм. ) Ну вы меня смутили ).

                На самом деле, почему-то, даже в голову не пришло. Хотя, в общем-то, использование freeDOS, как изначально свободного ПО, в данном контексте будет правильнее в любом случае. Спасибо unicast за совет.
                  0
                  Да, Майкрософт его отдала миру :-)
                  +2
                  нет. он небесплатен. и лицензия таки нужна на него. так что попробуйте freedos/gnudos или ещё к акой-нить свободный аналог.

                  кстати сказать — почему бы прямо его и не поставить? вместо всяких развлечений с linux?
                    –1
                    Просто собрать отдельную маленькую 500-рублевую машинку под регистратор?
                      0
                      Конечно, зачем здесь вообще линукс?
                        +3
                        Продавец сидит на рабочем месте. У него все под рукой — вот он терминал с 1с-кой, вот внутренняя база данных, вот почта, вот аська… как-то так у нас повелось, что касса подключена к машине продавца. А вторую рядом втыкать — специально для кассы — с еще одним монитором и клавиатурой — это как-то неэргономично по-моему )

                        Кстати — такой вопрос — как ubuntu чувствует себя при работе машины через КВМ-свич? Никто не сталкивался?
                          +1
                          Нормально, KVM полностью прозрачен для софта.
                            +1
                            На самом деле есть нюансы. Во-первых, не всегда корректно определяется монитор, и, как следствие, поддерживаемые им разрешения — решается прописыванием монитора и его разрешений в /etc/X11/xorg.conf. А во-вторых — и это гораздо неприятнее — у меня через KVM не видится мышка. Стандартная PS/2 мышка, Genius, если я не ошибаюсь. Если воткнуть её в системник, то работает нормально, а через KVM — отказывается. Что только уже не пробовал — не помогает. Причём, что интересно, раньше, на 8.04, всё работало, а после апгрейда на 8.10 (или на 9.04, не помню точно) — перестало. Для меня это не сильно критично, потому что машина — сервер, и в основном я с ней работаю через VNC, а в тех случаях, когда нужно работать непосредственно — втыкаю USB-мышку, но тем не менее.
                              0
                              Вот где-то это и интересовало. Спасибо.
                              0
                              а. я думал на кассе сидит кассир и это единственная машина и она не будет изменяться (в том смысле что вот уже есть машина с чем-то нелицензионным, досом например, и её надо заменить).
                  • НЛО прилетело и опубликовало эту надпись здесь
                      –1
                      Дрова? Программа просто пишет в ком-порт, а регистратор сам забирает с него все, что сочтет нужным. Было бы дело в дровах… )

                      Программку эту, насколько я понимаю, завезли вместе с кассовым аппаратом и гораздо раньше меня. А эти ваши интернеты про какой-либо софт для взаимодействия с этим агрегатом молчат как партизаны ). Нашел какое-то непонятное, но жутко платное решение, с физическим ключем. Так там еще и с ключем морока. Хотя главное, конечно, жуткая платность оного.
                        0
                        Я, может, плохо смотрел, но на фискальники я дров под линукс не видел. По крайней мере на те фискальники, которые в терминалы вставляются.
                      • НЛО прилетело и опубликовало эту надпись здесь
                          +3
                          И правда, чего это я :(
                            +3
                            И правда, чего это я :(
                            +2
                            Вы просто Гений=) Так извращаться...)
                              0
                              Спасибо )
                              0
                              Можно скриншот? :-[
                                0
                                Раньше завтра до работы не доберусь :)
                                +5
                                я бы сказал… нифига себе чайник!)))
                                  +2
                                  В DOSBox смотрели раздел [serial] конфигурационного файла?
                                    0
                                    Спасибо за наводку. Посмотрю обязательно. Через DOSBox в любом случае проще.
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                      0
                                      Я dosbox и на виндовых серверах ставил, чтобы поставить прогу для настройки АТС через com порт.
                                      0
                                      Не сочтите за рекламу, но мой хороший знакомый занимается продвижением Linux в качестве бизнес-платформы www.el-sys.org/

                                      Драйверы к кассе они писали сами, но как сказали, есть и официальный

                                      Показательно в любом случае
                                        0
                                        Добавил скриншоты.
                                        • НЛО прилетело и опубликовало эту надпись здесь
                                            0
                                            В пнг скрин настроенной виртуалки занимает 309 кб, джпег — 65. /discuss?
                                          +1
                                          Для Примов есть виндовая библиотечка Azimuth.dll с описанием к ней. Качается на сайте Искры.
                                            –1
                                            А так у Вас не получается?

                                            #cd ~/.wine/dosdevices/
                                            #sudo ln -s /dev/ttyS0 com0
                                              0
                                              Дело не в том, что я не смог в вайне настроить порт. Вайн в принципе оказался кушать дос-приложение. Что вполне логично — вайн это винАПИ, а дос к нему отношения не имеет.

                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                            Самое читаемое