Имя: Пароль:
1C
1С v8
Кто работал с весами? Не могу заставить нормально работать Ci2001A.dll
0 Strogg
 
11.01.15
12:39
Добрый день, коллеги.
Какая-то непонятка с этой внешней компонентой.
При вводе нового документа активирую весы стандартным кодом:
//инициализация
Весы = Новый COMОбъект("Ci2001A.Indic");
Весы.NumberOfCom = 4;
//инициализацию проходит на ура. Далее, начало работы:
//открытие
Попытка
    Весы.Open();
    Весы.Close();
    COM4 = Истина;
    Весы.NumberOfCom = 4;
Исключение
    ПризнакАктивации = Ложь;
КонецПопытки;
И вот здесь вываливается в исключение до следующего сеанса работы с программой. Перезапускаю - все норм до ввода следующего документа. Потом - опять исключение. ЧЯДНТ??
Спасибо!
1 spectre1978
 
11.01.15
12:55
я конкретно с этим индикатором не работал. Но, может, сначала задать номер компорта, а потом уже открывать?
Посмотрите вот тут:
http://www.delphisources.ru/forum/showthread.php?t=22143
логика немножко не такая как у вас:
        Ci2001ALib::IIndicPtr p("Ci2001A.Indic");
    
        p->NumberOfCom = 1;
        p->Open();

        // Читаем данные
        p->Update();
        cout << p->Weight;
        cout << p->Stab;

        // Ждем пять сек.
        Sleep(5000);

        // Читаем данные
        p->Update();
        cout << p->Weight;
        cout << p->Stab;


        p->Close();
2 Strogg
 
11.01.15
13:00
(1) ну я ж и слизывал с этого примера на сях.
Разобрался!
Если кому интересно: перед закрытием формы надо принудительно закрывать сеанс работы с библиотекой методом Весы.Close(). Я хз какое у него пространство имен, но он, по ходу, входит в ступор, когда пытается вновь открыть вновь созданный объект с таким же именем.
3 spectre1978
 
11.01.15
13:08
хм... а это разве не очевидно? Попользовался-закрой. Там же компорт открывается, все дела...
4 Strogg
 
11.01.15
13:40
(3) конечно очевидно. Просто я закрываю библиотеку после каждого факта взвешивания. Получается, что где-то недозакрыл. Так я в форме нового документа пытался закрыть - ниче мне это не дало.
5 spectre1978
 
11.01.15
17:04
(4) А может, подумать в сторону... как с торговым оборудованием? Т.е. глобальный объект, открывается при старте программы, закрывается при завершении, а из формы только чтение с весов происходит. Не вариант?