KabalinDA
Заглянувший
Всего сообщений: 5
Дата регистрации: 11.07.2019
|
Создано:
11.07.2019 18:59:46
|
Здравствуйте, подскажите, пожалуйста, какие команды (методы) необходимо использовать в макросе, чтобы выполнить "Обновить ТИ" (выгрузить данные из ОИК) и сделать ОС (Rastr_OC)?
|
|
|
Дмитрий Максименко
Администратор
Всего сообщений: 43
Дата регистрации: 25.12.2017
|
Создано:
12.07.2019 11:04:11
|
Здравствуйте.
Если loop.xml настроен и в ручном режиме обновление ТИ проходит как надо, то можно использовать следующий макрос:
SET TI = CreateObject("COMCK.TI") ' обьект для работы с ТИ
SET CK = CreateObject("COM.CK") ' обьект для работы с Get_TM.exe
PathToLoop = "C:\LOOP\loopTI.xml"
UPDTime = "10:55:00:12:07:19"
CK.setrastr rastr
ret = CK.Loop( PathToLoop, UPDTime)
nRes = TI.ReadFileTi( PATH_TO_TI ) ' чтение файла TI
nRes = TI.ReadFileDTi( PATH_TO_DTI ) ' чтение файла DTI
nRes = TI.ReadFileTs ( PATH_TO_TS ) ' чтение файла TS
nRes10 = TI.WriteToRastr( Rastr ) ' запись прочитанных ТИ в таблицу "Телеизмерения\ ТИ/Каналы"
'Запуск ОС
rastr.opf("s")
|
|
|
KabalinDA
Заглянувший
Всего сообщений: 5
Дата регистрации: 11.07.2019
|
Создано:
13.07.2019 22:05:41
|
Спасибо, Дмитрий!
Еще Вы не могли бы пояснить, что делает метод setrastr.
И что за аргумент Rastr вы подаете в метод WriteToRastr? Это вшитый объект Set Rastr=WScript.CreateObject("Astra.Rastr")? Хотя вопрос даже больше в другом. Я пытаюсь с помощью С# записать ТИ из бинарных файлов в таблицу "Телеизмерения\ ТИ/Каналы" , используя метод WriteToRastr. Тот же метод, что и в макросе. В качестве аргумента я ему подаю экземпляр IRastr (ASTRALib.IRastr Rastr = new ASTRALib.Rastr()), но данный метод не отрабатывает, в консоле выводится Exit in [ if(u1-l1<0||u2-l2<0] Exit in [ if(u1-l1<0||u2-l2<0] if (!ParseCols(cls,(const char*)bs,TRUE)) и возвращаемое методом значение равно -3. Вы можете подсказать, что не так, может я не то подаю в метод? В качестве входного параметра должен подаваться object piRastr.
|
|
|
Дмитрий Максименко
Администратор
Всего сообщений: 43
Дата регистрации: 25.12.2017
|
Создано:
15.07.2019 11:24:11
|
Метод setrastr устанавливает указатель на объект Rastr для объекта CK просто, чтобы не указывать его каждый раз, он используется внутри метода Loop.
В макросе Rastr - зарезервированное слово, оно содержит указатель на текущий экземпляр программы (в какой то мере аналог this).
Вы похоже создаете новый объект Astra.Rastr и пытаетесь его подсунуть как аргумент в TI.WriteToRastr( Rastr ), но это ?пустой? объект, в нем не загружено никаких шаблонов, то есть нет таблиц - рабочая область пустая. Значит нет и таблицы "Телеизмерения\ ТИ/Каналы" в которую метод пытается записать данные из бинарных файлов.
|
|
|
KabalinDA
Заглянувший
Всего сообщений: 5
Дата регистрации: 11.07.2019
|
Создано:
15.07.2019 12:52:06
|
Получается я создал экземпляр IRastr (ASTRALib.IRastr Rastr = new ASTRALib.Rastr()), далее загрузил в него файл .rg2, при этом таблицы в нем имеют данные. Я даже что то вывожу в консоль для проверки из таблицы "Телеизмерения\ ТИ/Каналы" . Но когда я подаю в метод WriteToRastr() в качестве аргумента Rastr (который я объявлял как ASTRALib.IRastr Rastr = new ASTRALib.Rastr()) метод не отрабатывает. А вот эти объекты Set Rastr=WScript.CreateObjec?t("Astra.Rastr") и ASTRALib.IRastr Rastr = new ASTRALib.Rastr() они идинтичны? Меня просто смущает то что в метод надо подавать object piRastr, а я по сути ASTRALib.IRastr подаю.
|
|
|
KabalinDA
Заглянувший
Всего сообщений: 5
Дата регистрации: 11.07.2019
|
Создано:
15.07.2019 16:29:37
|
Если на VBA в Excel тоже самое проделать, то он обновляет данные, а на C# нет
|
|
|
KabalinDA
Заглянувший
Всего сообщений: 5
Дата регистрации: 11.07.2019
|
Создано:
16.07.2019 06:06:30
|
Все разобрался, заработало! Вопрос снят. Еще раз спасибо)
|
|
|
Nick_A
Посетитель
Всего сообщений: 45
Дата регистрации: 30.09.2021
|
Создано:
05.08.2022 12:31:30
|
Добрый день, а не подскажите, как из макроса запустить функцию "Расчёт ПТИ"? И заодно мб функция "Прочитать БР". Нужно для того, чтобы автоматически подгружать в качестве БР и просчитывать ОС на основе нескольких замерных схем. Думаю, потом можно сравнивать и выбирать наилучшую
|
|
|
Дмитрий Максименко
Администратор
Всего сообщений: 43
Дата регистрации: 25.12.2017
|
Создано:
09.08.2022 11:33:10
|
Здравствуйте
SET TI = CreateObject("COMCK.TI")
nRes = TI.CalcPTI( Rastr )
Для функции прочитать БР нет отдельного COM метода.
|
|
|
Nick_A
Посетитель
Всего сообщений: 45
Дата регистрации: 30.09.2021
|
Создано:
09.08.2022 12:31:53
|
Спасибо!
|
|
|
Nick_A
Посетитель
Всего сообщений: 45
Дата регистрации: 30.09.2021
|
Создано:
04.10.2022 12:39:34
|
Здравствуйте. Заметил после обновления железа... Расчёт ПТИ кнопкой с панели помимо расчёта ПТИ выполняет и их запись в таблицу ТИ Каналы, после чего они доступны для алгоритма ОС. При вызове
Код |
---|
SET TI = CreateObject("COMCK.TI")
nRes = TI.CalcPTI( Rastr )
|
в протоколе отображается только расчёт ПТИ. Без записи. Таблица не расширяется. Не подскажите, что нужно сделать?
|
|
|
Дмитрий Максименко
Администратор
Всего сообщений: 43
Дата регистрации: 25.12.2017
|
Создано:
05.10.2022 18:22:31
|
Здравствуйте.
Код |
---|
nRes = TI.DobavPTI( Rastr ) |
|
|
|
Nick_A
Посетитель
Всего сообщений: 45
Дата регистрации: 30.09.2021
|
Создано:
06.10.2022 10:59:54
|
Спасибо)
|
|
|