Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Работа с COM

v7: Работа с COM
Я
   Sima42
 
08.07.21 - 22:11
Доброго времени суток. Есть сканер ШК который работает через COM. С помощью vk_rs232 происходит обмен. Примерно через 1 секунду приходят данные и потом они обрабатываются и записываются. Проблема в том что в хаотичном порядке прекращается обмен. У меня такое впечатление что программа не успевает сделать проверку а уже пришли новые данные поэтому СОМ и виснет. Как можно выкрутиться из такой ситуации?
   victuan1
 
1 - 09.07.21 - 04:10
А почему не использовать драйвер сканера ScanOpos или Атоловский?
   Sima42
 
2 - 09.07.21 - 07:07
(1) Да я как то и незнаю. Вроде как этот все время использовал. Правда там менее жёсткие требования были.
   Duke1C
 
3 - 09.07.21 - 09:10
(0) "С помощью vk_rs232 происходит обмен" - Месье знает толк в извращениях)
Или настолько древняя конфигурация? Работает - не трогаем
   Sima42
 
4 - 09.07.21 - 09:37
(3) Конфигурация самописная. Посоветуйте другое решение.
   Sima42
 
5 - 09.07.21 - 09:40
Сегодня определил что пропадает связь не из за обработки а так просто. Бывает 2000 раз придут а бывает первый скан сделает и ступор.
   serpentt
 
6 - 09.07.21 - 10:31
(5) Вам ответили в (1)
   victuan1
 
7 - 09.07.21 - 11:55
(1) Даже ссылку дам на атоловский бесплатный с инструкцией по установке https://disk.yandex.ru/d/6sLU_ZtW3TEXwm
   Sima42
 
8 - 09.07.21 - 13:29
(7) Спасибо!
   MWWRuza
 
9 - 10.07.21 - 19:39
А вот процедура в модуле формы, где нужен сканер:
Процедура ОбработкаВнешнегоСобытия(Источник,Событие,Данные)
    Если Событие= "BarCodeValue" Тогда
        ШкАМ = СокрЛП(Данные);
        Сообщить(ШкАМ);
        // А тут, можем делать с полученным ШК, что хотим...

    КонецЕсли;
    Попытка
        Сканер.ПосылкаДанных = 1;
    Исключение
        Сообщить("Сканер не подключен!");
    КонецПопытки;    
КонецПроцедуры

В глобальном модуле объявить экспортную переменную: Перем Сканер Экспорт;
и разместить в процедуре ПриНачалеРаботыСистемы() вызов функции ПодключитьСканер():

Функция ПодключитьСканер()
    Рез = 0;
    Если ЗагрузитьВнешнююКомпоненту("ScanOpos.dll") = 0 Тогда
        ОписаниеРезультата = "Не удалось загрузить внешнюю компоненту ScanOpos.dll !";
    Иначе
        Попытка
            Сканер = СоздатьОбъект("AddIn.Scanner");
        Исключение
        КонецПопытки;
        Если ПустоеЗначение(Сканер) = 1 Тогда
            ОписаниеРезультата = "Не удалось создать объект внешней компоненты с программым идентификатром AddIn.Scanner";
        Иначе
            Если Сканер.УстройствоВключено = 1 Тогда
                Рез = 1;
            Иначе
                Если Сканер.Подсоединить("Scanner") <> 0 Тогда
                    ОписаниеРезультата = "Не удалось подсоединить устройство";
                Иначе
                    Если Сканер.Занять(1) <> 0 Тогда
                        ОписаниеРезультата = "Не удалось получить монопольный доступ у устройству";
                    Иначе
                        Сканер.УстройствоВключено = 1;
                        Если Сканер.Результат <> 0 Тогда
                            ОписаниеРезультата = "Не удалось включить устройство";
                        Иначе
                            Рез    = 1;
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
    Если Рез = 1 Тогда
        // очищаем буфер компоненты

        Сканер.ОчиститьВход();
        Сканер.ОчиститьВыход();
        // включаем режим немедленной посылки данных

        Сканер.ПосылкаДанных = 1;
    КонецЕсли;
    Возврат Рез;
КонецФункции  // Подключить(()


Правда, это под 1С ScanoPos, но, это не принципиально, под АТОЛ примерно то-же, просто под рукой было только под 1С.
Я АТОЛовской компонентой практически не пользуюсь, обхожусь 1Совской, но если решите все-таки использовать ВК от АТОЛ - то нужно версию не старше 6.хх(вроде, 6.24), иначе они за нее денег хотят, и более старшие версии, без ключа защиты или программной лицензии, вызывают задержку при сканировании, что-то около секунды или даже больше.
   Sima42
 
10 - 11.07.21 - 17:32
(9) Спасибо. Сделал на ScanOps завтра буду тестировать
   victuan1
 
11 - 12.07.21 - 07:05
(9) в (7) у меня как раз ссылка на бесплатную версию.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.