Ситуация такая: на поддержке есть логистическая компания, работают в 1С 8.1 через терминал (все под виндой).
Есть подсистема сканировки, ее специфика предусматривает 2 вида сигналов для сканирующего:
1. сигнал "Все ОК" (т.е. ШК отсканирован и база его восприняла);
2. сигнал "Ошибка" (означающий что что-то не так).
Реализовано все это через системный спикер (т.к. для этого не нужны колонки и уходит минимальный трафик).
Из 1С просто запускается exe с параметрами частоты и лительности сигнала.
На днях админы порадовали новостью - хотят перевести клиентские машины под Linux. Сразу появился вопрос: как быть со сканировщиками?
Дело в том, что кроме возможных обычных проблем со спикером rdesktop не предусматривает различные сигналы.
Если очень повезет то бип будет, но только одного типа.
Были варианты:
1. Воспроизводить на стороне сервера wav-ки (слишком много трафика);
2. Асинхронный обмен через Clipboard (так реализовали на терминале сбора данных под WinCE) - не катит, слишком нестабильно;
3. Написать дополнительное клиент-серверное ПО (может и вариант, но я не представляю как это можно реализовать).
Больше ничего умного в голову не пришло.
Немного помозговав решил полезть кривыми руками в сам rdesktop (взял сурсы 1.6 с оф. сайта).
И вот что получилось:
rdesktop-1.6.0.tar.gzТеперь есть параметр запуска - указывается приложение (или скрипт), которое будет обрабатывать сигнал:
-r sound:beep:'application'
Т.е. если в терминале возникнет сигнал с частотой 700 и длительностью 500 будет запущено 'application 700 500'.
В случае если на машине заработает стандартный beep
sudo apt-get install beep
beep 750 1000
то все будет проще некуда
./rdesktop server -u user -p password -r sound:beep:'beep'
Если beep работать не будет то можно сделать скрипт типа такого:
#!/bin/bash
mplayer /home/vhd/beep_"$1"_"$2".ogg
exit 0
и сделать заготовки файлов.
В моем случае так и получилось (т.к. ноутбук).
Надеюсь кому-нить пригодится.