Получилось так, что на одной из АЗС понадобилось обрабатывать данные приходящие в COM порт с внешнего устройства и передать эти данные не в 1С. От этого задания и родилась выложенная утилита.
Когда я сел разбираться с маркировкой товаров для ККМ, то она неожиданно пригодилась! А потом подвернулся сканер ШК honeywell, который не хотел с первого раза подключаться к Рознице 2.3, а нетерпеливые покупатели уже стучали ножками и начинали закипать (как впоследствии выяснилось, не был прописан суффикс).
Легким движением руки были добавлены несколько строк в ЧекККМ и через ПодключитьОбработчикОжидания торговля восстановилась.
Затем утилита прижилась в самописной конфигурации, где понадобилось обрабатывать штрихкоды. В общем выкладываю – может кому и пригодится.
Как это работает:
"!RunReadComPort.bat"
rem ReadComPort.exe COMХ Скорость СтопБит Четность ЧислоБит КопитьПрочитанныеДанные
ReadComPort.exe COM9 9600 1 0 8 1
1. Это 32 битное приложение.
2. Программа не позволяет запустить себя дважды.
3. При запуске без параметров выдает инструкцию
4. При запуске с параметрами свертывается в SysTray
5. После получения данных из COM порта записывает данные в каталог запуска в папке DATA
6. Имя файла содержит ГГГГММДД_ЧЧММСС_МИЛЛИСЕК.dat – если отсортировать в каталоге по имени, то получим данные в порядке поступления
7. Файлы копятся и не удаляются – удаляйте самостоятельно после обработки
8. Есть возможность сразу посмотреть, что приходит в COM. Для этого идем в SysTray и кликаем на ярлыке. В появившемся меню выбираем пункт «Показать». Если в руках сканер ШК – пикаем и в окне видим что пришло в порт
Первая строка: дата события
Вторая: данные в HEX
Третья: данные в строковом виде
9. Максимально обрабатывает 400 байт
10. Чтобы завершить работу, надо кликнуть на «Выход»
Как приспособить в 1С:
Процедура ЧтениеComPort()
НайденныеФайлы=НайтиФайлы("C:\ReadComPort\DATA","*.dat");
Для каждого Файл из НайденныеФайлы Цикл
Если Файл.ЭтоКаталог() Тогда
Продолжить;
КонецЕсли;
ф=новый ЧтениеТекста(Файл.ПолноеИмя);
Данные=ф.ПрочитатьСтроку();
ф.Закрыть();
УдалитьФайлы(Файл.ПолноеИмя);
СШКОбработатьШтрихкод(Сокрлп(Данные));
КонецЦикла;
КонецПроцедуры
Процедура ПриОткрытии()
ПодключитьОбработчикОжидания("ЧтениеComPort", 1);
КонецПроцедуры
пароль на архив 1