Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 13:35

Считыватель магнитных карт MSR213V

Автор Konstatine, 20 сен 2019, 14:26

0 Пользователей и 1 гость просматривают эту тему.

Konstatine

:btbzdb: Здравствуйте, уважаемые друзья!
Имеется самописная конфигурация на 1С 8.2 (тонкий клиент) и простой считыватель магнитных карт, подключенный по COM порту.
Сам считыватель (через встроенную демо-программу) работает. Драйвера на него установлены.
Для подключения к 1С дополнительно установил 1С: Barcode scanner и зарегистрировал scanopos.dll через regsvr32. В 1С проходя отладчиком (при открытии формы) вижу, что Драйвер подключается, а при проведении картой во внешнее событие вообще не заходит. В чем может быть дело? :dfbsdfbsdf: Прошу помощи!

&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ПодключитьВнешнююКомпоненту("C:\Windows\SysWOW64\scanOPOS.dll","Scanner",ТипВнешнейКомпоненты.COM) <> 0 Тогда
        Сканер = ПодключитьВнешнююКомпоненту("AddIn.Scanner");
        Сообщить("Объект загружен");
    Иначе
        Сообщить("Внешняя компонента драйвера не найдена");
КонецЕсли;

ПрогИД="AddIn.Scanner";
    Результат = ПодключитьВнешнююКомпоненту(ПрогИД);
    Драйвер = Новый (ПрогИД);
   
    Попытка
        ВерсияИзДрайвера = Драйвер.ПолучитьОписание();
    Исключение
        Сообщить ("Невозможно определить версию драйвера!");
    КонецПопытки;
   
    Если Лев(СокрЛП(ВерсияИзДрайвера), 5) <> "8.0.8" Тогда
        Сообщить ("Версия драйвера не поддерживается. Требуемая версия компоненты 1С:Сканер ШК - 8.0.8!");
    КонецЕсли;
   
    Если Драйвер.Подсоединить("Сканер штрихкода") <> 0 Тогда
        Сообщить ("Ошибка (1) при подключении устройства!");
    КонецЕсли;

    Драйвер.БитДанных  = 8;
    Драйвер.Порт       = 8;
    Драйвер.Скорость   = 9600;
    Драйвер.СтопБит    = 1;
    Драйвер.СтопСимвол = 13;//CR - carriage return
    Драйвер.ИмяСобытия = "ПолученШтрихкод";
Драйвер.СуффиксМК = "?";
    Если Драйвер.Занять(1) = 0 Тогда
        Драйвер.УстройствоВключено = 1;
        Драйвер.ПосылкаДанных      = 1;
        Драйвер.ОчиститьВход();
        Драйвер.ОчиститьВыход();
        Сообщить("Сканер подключен и готов к работе!");
        Если Драйвер.УстройствоВключено <> 1 Тогда
            Драйвер.УстройствоВключено = 0;
            Драйвер.Освободить();
            Драйвер.Отсоединить();
            Сообщить ("Ошибка (2) при подключении устройства!");
        КонецЕсли;
    Иначе
        Драйвер.УстройствоВключено = 0;
        Драйвер.Освободить();
        Драйвер.Отсоединить();
        Сообщить ("Ошибка (3) при подключении устройства!");
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    Если Событие = "ПолученШтрихкод" Тогда
        ШК = ОбработатьСобытие(Данные);
        Объект.ТекущаяДК = СокрЛП(ШК);
        СобытиеОбработано();
    КонецЕсли;
КонецПроцедуры


Кстати, при открытии также не отрабатывает функция ПолучитьОписание(), уходит в исключение.
То есть как-будто драйвер подключен, но не до конца... :xfbnsdfb:

Konstatine

Так в 1С выглядит Драйвер который я определяю при открытии формы.
То есть видно что драйвер найден, все реквизиты в него записываются.

wise

(0) МОЖЕТ Ваша dll'ка не 1С совместимо... Тогда ей ТАКОЙ метод НЕ нужен...
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Konstatine

Цитата: wise от 20 сен 2019, 17:37
(0) МОЖЕТ Ваша dll'ка не 1С совместимо... Тогда ей ТАКОЙ метод НЕ нужен...

Подскажите, что Вы имеете ввиду? Я пробовал скачать разные dll (по размеру), регистрировал, но внешнее событие также не возникает.

wise

(3) обратитесь к ДРУГИМ методам драйвера...
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Konstatine

Цитата: wise от 23 сен 2019, 09:21
(3) обратитесь к ДРУГИМ методам драйвера...
Попробовал другие методы:
ТестУстройства() - метод не обнаружен;
ПолучитьНомерВерси() - метод объекта не обнаружен;
ОчиститьВход() - отрабатывает;
ОчиститьВыход() - отрабатывает;
Освободить() - отрабатывает;
Отсоединить() - отрабатывает.

Реквизиты также все (БитДанных, Порт, Скорость, СтопБит и т.д.) заполняет.

Последний ScanOpos.dll скачал с сайта. Написано что именно для 1С:
http://programna1c.narod.ru/download.html
Добавлено: 23 сен 2019, 10:17


Также пробовал установить последнюю версию 1С Barcode Scanner с сайта 1С (https://its.1c.ru) версии 8.1.7.9 но все также :(

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск