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