|
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) у меня как раз ссылка на бесплатную версию.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |