Перейти к публикации

Вопрос тем, кто имеет опыт программирования С++ для ТС


Рекомендованные сообщения

Есть модуль  Teamcenter 8,написанный С++, 32-битная платформа, который среди прочего выдавал список правил модификаций используя стандартные функции(CFM_list,AOM_ask_value_string) из библиотек /bin.

 

	bool result = true;
	int rCount = 0;     //количество правил правил модификаций
	tag_t *rules = NULL;            //ссылки на правила модификаций

	 //получение количества и ссылок на правила модификаций
	retcode = CFM_list(&rCount, &rules);
	if (retcode != ITK_ok)
	{
		AddToLog("GetRulesList", "CFM_list");
		result = false;
	}

	for (int i = 0; i < rCount; i++)
	{
		char *rName = NULL;
		const char * object_name="object_name";
		//получение имени правила модификаций
		retcode = AOM_ask_value_string(rules[i], object_name, &rName);
		if (retcode != ITK_ok)
		{
			AddToLog("GetRulesList", "CFM_list");
			continue;
		}
		 // запись правила модификаций в  _cbRulesNames
		_cbRulesNames->AddItem(rName, (TObject *)rules[i]);
	}

В связи переходом на Teamcenter 10,  пытаюсь перевести модуль на 64 бит. Программа компилится, но загружает правила только нечетные по порядку, через одно, от самих правил ничего зависит, если поменять порядок правил, все равно будет загружаться только нечетные. Если на примере:

какие должны быть результаты:

Цитата

 

count=4

A

B

C

D

 

как получается:

Цитата

count=4

A

C

Invalid Tag  - the requested object does not exist

Invalid Tag  - the requested object does not exist

Скорее всего это связанно с выделением памяти в 64бит, но нет понимания как сделать, что бы нормально загружались правила. У кого какие мысли есть?

P.S. 

typedef int* tag_t; //тэги

 

Изменено пользователем klongard
Ссылка на сообщение
Поделиться на других сайтах


4 минуты назад, klongard сказал:

 Если на примере:

какие должны быть результаты:

как получается:

count=4

A

C

Invalid Tag  - the requested object does not exist

Invalid Tag  - the requested object does not exist

 

Скорее всего это связанно с выделением памяти в 64бит, но нет понимания как сделать, что бы нормально загружались правила. У кого какие мысли есть?

P.S. 

typedef int* tag_t; //тэги

 

А при чем тут разрядность? Судя по результатам у вас два объекта как invalid tag, а которые живые - только A и C,которые и отображены в алфавитном порядке.

Разберитесь с invalid tag и возможно все будет как должно

Ссылка на сообщение
Поделиться на других сайтах

@lexx174Если я Вас правильно понял, то скажу какие мысли у меня, в 64бит выделено в 2 раза больше памяти на указатели, чем на 32бит

Возможно происходит двойная запись:

A|B      Записаны сразу А и В, но функция обрабатывает только первую половину-А

C|D      и так далее остальными

0|0      А тут уже пустые значения, ссылки на не существующие объекты, Invalid Tag  - the requested object does not exist

0|0

 

P.S. Все объекты живые и могут отображаться. Если удалить А в Teamcenter, и запустить модуль, то результаты ты будут:

count=3

B

D

Invalid Tag  - the requested object does not exist

 

Изменено пользователем klongard
Ссылка на сообщение
Поделиться на других сайтах

из-за разрядности ил нет, все равно получается ошибка в API которую нам с вами не исправить.
инвалид тэг - потому что в rules[3] ничего нет, точнее есть но какое то рандомное значение.

кстати  rName надо освобождать

можно еще посоветовать повнимательней проверить настройки проекта из рекомендованых в мануале.

Ссылка на сообщение
Поделиться на других сайтах

исходим из того, что по факту у вас эти объекты сущеуствуют, ведь так?

смотрите как все будет себя вести на 11.3, дело не в разрядности.

ну и чего там у вас в сислоге написано?

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, klongard сказал:

@lexx174Если я Вас правильно понял, то скажу какие мысли у меня, в 64бит выделено в 2 раза больше памяти на указатели, чем на 32бит

Возможно происходит двойная запись:

A|B      Записаны сразу А и В, но функция обрабатывает только первую половину-А

C|D      и так далее остальными

0|0      А тут уже пустые значения, ссылки на не существующие объекты, Invalid Tag  - the requested object does not exist

0|0

 

P.S. Все объекты живые и могут отображаться. Если удалить А в Teamcenter, и запустить модуль, то результаты ты будут:

count=3

B

D

Invalid Tag  - the requested object does not exist

 

проверил в своей базе - все вроде по алфавиту по порядку.

 

Вначале идет перечень правил в английской локализации в верхнем регистре, потом в нижнем, потом русская локализация в алфавитном порядке. TC 10.1.5 64bit

 

Пример вывода:

 

Цитата

Any Status; No Working
Any Status; Working
Approved
B Latest by Alpha Rev Order
Latest Working
Latest by Alpha Rev Order
Latest by Creation Date
Precise Only
Precise; Any Status
Precise; Any Status; Latest Rev Order
Precise; Working
Quick
Simple
Working(Current Group); Any Status
Working(Current User); Any Status
Working; Any Status
a*******
b*******
Окончание******
Утвержденная или *****

 

Ссылка на сообщение
Поделиться на других сайтах

@lexx174 в чем  запускали? Я пытаюсь в RAD Studio XE6, возможно, как сказали выше, дело в настройках проекта.

 

Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, klongard сказал:

@lexx174 в чем  запускали? Я пытаюсь в RAD Studio XE6, возможно, как сказали выше, дело в настройках проекта.

 

visual studio. никакой экзотики

Ссылка на сообщение
Поделиться на других сайтах

как учил товарищь niki при переходе на новую версию обязательно смотри что изменилось в настройках проекта, использовать правильную версию VS.

Особое внимание надо обращать на ключ /MT
И компилировать в конфигурации release.

Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, lexx174 сказал:

а тут можно подробней?

т.к. тимцентр скомпилирован в конфигурации release, то и юзеровская длл лучше чтоб тоже была в релизе, иначе есть вероятность каких-нибудь багов которые хер отловишь.
Это конечно не догма и вероятность не велика (ИМХО).
Так учили в сименсе, правда по NX, ну тут думаю тоже самое.


речь конечно о native dll. 

Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, koner сказал:

т.к. тимцентр скомпилирован в конфигурации release, то и юзеровская длл лучше чтоб тоже была в релизе, иначе есть вероятность каких-нибудь багов которые хер отловишь.
Это конечно не догма и вероятность не велика (ИМХО).
Так учили в сименсе, правда по NX, ну тут думаю тоже самое.


речь конечно о native dll. 

есть же еще и exe

Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, klongard сказал:

@lexx174 в чем  запускали? Я пытаюсь в RAD Studio XE6, возможно, как сказали выше, дело в настройках проекта.

 

Как бы вам сказать, вот эта хреновина - не сертифицирована, как бы банально сие не звучало, убедитесь для начала в используемом вами компиляторе, он должен быть от VC

и простите я вам там про 11.3 говорил, а вы на 10

Ссылка на сообщение
Поделиться на других сайтах
15 минут назад, Krusty сказал:

Как бы вам сказать, вот эта хреновина - не сертифицирована, как бы банально сие не звучало, убедитесь для начала в используемом вами компиляторе, он должен быть от VC

Не сертифицирована Siemens? И как расшифровывается VC?

 

2 часа назад, lexx174 сказал:

visual studio. никакой экзотики

Тогда для меня это печально. В visual studio не работал раньше, но слышал есть большие разницы между VS и RAD STUDIO+ насколько я знаю нет прямой возможности проекты из одного в другой переносить

Ссылка на сообщение
Поделиться на других сайтах
6 минут назад, klongard сказал:

нет прямой возможности проекты из одного в другой переносить

в этом и плюс есть, настроите проект заново  по мануалу.
а исходники перенести не проблема.

А прежде чем переносить просто проверьте свой кусок кода с использованием Visual Studio.
Если будет работать то сомнений не останется

Изменено пользователем koner
Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, klongard сказал:

Не сертифицирована Siemens? И как расшифровывается VC?

 

Тогда для меня это печально. В visual studio не работал раньше, но слышал есть большие разницы между VS и RAD STUDIO+ насколько я знаю нет прямой возможности проекты из одного в другой переносить

Уберите эту RAD студию подальше и не усложняйте себе жизнь

 

Все програмирование exe/dll для TC по умолчанию сертифицировано и рекомендовано именно под Visual studio - (VC - это тоже имелось  виду visual studio)

 

RAD studio - это мутант от некогда популярной BORLAND(если не путаю) - разработчика Delphi,C++ Builder, который видимо решили потом сделать свой аналог MS Visual Studio

 

 В поставке TC есть скрипты для ручной (без IDE) компиляции и линковки, которые если заметите - ориентированы на компилятор от MS VS

 

 

Ссылка на сообщение
Поделиться на других сайтах

@lexx174Тогда такой вопрос, в какой версии VS запускали? Есть VS 2010, я так понимаю принципиальной важности нет какая версия.

И можно Вас попросить попросить скинуть исходники где вы тестили загрузку правил модификаций?

Для примера какого вида проект, вообще работает в  VS (немного пугает меня) и проверить, что правила у меня загрузятся, перед тем как буду весь проект переносить.

 

Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, klongard сказал:

@lexx174Тогда такой вопрос, в какой версии VS запускали? Есть VS 2010, я так понимаю принципиальной важности нет какая версия.

И можно Вас попросить попросить скинуть исходники где вы тестили загрузку правил модификаций?

Для примера какого вида проект, вообще работает в  VS (немного пугает меня) и проверить, что правила у меня загрузятся, перед тем как буду весь проект переносить.

 

А вы документацию читали вообще по кастомизации? Там должно быть написано какая среда нужна для серверной и клиентской кастомизации.

 

Проект - консольное приложение. Чего пугаться то vs студии? Я так понял вы не читали особо документацию все-таки.

 

И какая у вас версия тимцентра?Это тоже важно. У меня 10.1. Visual studio 2010 (возможно с SP1, не помню)

Изменено пользователем lexx174
Ссылка на сообщение
Поделиться на других сайтах
29 минут назад, lexx174 сказал:

А вы документацию читали вообще по кастомизации? Там должно быть написано какая среда нужна для серверной и клиентской кастомизации.

 

Проект - консольное приложение. Чего пугаться то vs студии? Я так понял вы не читали особо документацию все-таки.

 

И какая у вас версия тимцентра?Это тоже важно. У меня 10.1. Visual studio 2010 (возможно с SP1, не помню)

Да, Вы правы, документацию не читал, то что программа в RAD Studio, это досталось мне в наследство от предыдущих работников по принципу "вот тут мы работаем, вот тут так и так, дальше по обстоятельствам".

Работаю в в версии 10.1.7

 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • oldmax
      Всем доброе утро. Ком порт накрылся, в итоге на плате PC, поэтому решили работать пока в режиме с карты памяти на MAZAK( паралельно пока смотрели провод каждый попроверял прозванивал сломалась пайка на DB9. Поэтому и рассматриваю вариант напрямую с карты работать как запасной. Так как материнку такую не факт что найдешь, точнее нашли но будет ли работать вот чем вопрос.   В режиме ТЭЙП через ком порт мы работали. Я не так давно работаю на MAZAK, копаюсь учу стойку., где этот список опций можно найти что за окно, Помогите пожалуйста
    • roiman
      Прошу модераторов, если возможно, удалить тему. Испытываю шквал из звонков спама и мошенников. Не понимаю, почему нет такой возможности у самого топикстартера.   Большое спасибо.
    • Bot
      5-6 июня в Москве прошла конференция C3Days 2024. Это ключевое событие для разработчиков сложного инженерного программного обеспечения в России. В рамках мероприятия были затронуты актуальные тенденции индустрии и задачи локальных компаний-разработчиков. Ведущие САПР-компании поделились опытом внедрения и применения решений C3D Labs. Мероприятие посетили представители и эксперты в области программирования на основе геометрического ядра C3D. Ключевой темой конференции в этом году стала презентация нового полигонального ядра C3D PolyShaper и его преимуществ для разработки САПР. 5–6 июня прошла ежегодная конференция для разработчиков C3Days 2024. В рамках мероприятия представлен новый модуль геометрического ядра C3D для работы с полигональными объектами — C3D PolyShaper. Компонент входит в набор инструментов для разработки инженерного программного обеспечения C3D Toolkit от компании C3D Labs (входит в АСКОН). C3D PolyShaper помогает [...] View the full article
    • Killerchik
      Посмотрите список опций в стойке. Если там есть что-то типа IC CARD RUNNING, то ответ на Ваш вопрос - "скорее да".
    • Lmstr
      Да, постепенно тайное становится явным ) С рабочего скорее всего не дадут...да и муторно довольно-таки снимать и станок может остановиться на смену или больше даже...
    • Viktor2004
      Судя по поведению движка у него не согласованы сигналы с энкодера с силовым полем двигателя. Для этого надо все три фазы двигателя пробовать менять и перебрать все шесть вариантов С другой стороны, если раньше все работало, тогда причина в чем-то другом.   со временем. Значит ранее от вас скрывали эту информацию. Возможно скрыли и что-то другое Поменяйте движки с рабочим станком и смотрите результат
    • Lmstr
      Доброго времени, уважаемые знатоки. У нас следующая проблема: есть станок вертикально-фрезерный Victor H630HS, у него есть сменщик паллет, двигатель этого сменщика: alfaiF 12/4000-B, серво усилитель: bettaiSV 80-B. Получаем ошибку 410 или 411, двигатель снят с посадочного места, при попытке прокрутить его маховичком ведет себя странно, может начать крутиться, особенно если на X10 (маховичок), на X1 практически не хочет начинать движение, иногда можно его рукой остановить, иногда нет, иногда есть люфт при попытке прокрутить рукой иногда держит позицию. Попытки настроить параметрами PMM по аналогии с другим таким же станком ни к чему не привели. Со временем выяснилось, что это начало происходить после того как сильно крутанув тем же маховичком паллету оператор её снёс. С Фануком работать приходится редко...
    • SAPRonOff
      а что значит "нормальную"?:) сейчас понятно как привязываться к первому и последнему элементу массива - у них хранится привязка всегда, для остальных копий счёт ID идёт от первого элемента: если в массиве суммарно было 10 копий, вы привязались к 5ой копии - поменяли общее количество на 20 копий, то привязка так и будет к 5ой копии:       можно, но если что-то супер параметрическое - нужно продумывать привязку, способов как достаточно в T-FLEX CAD      
    • Барс
      Учился, конечно. Но давно и плохо.
    • Ветерок
      Где вы прочли это утверждение? В "сумму сил и моментов" входят все силы и моменты всей расчетной схемы. Но уравнения остаётся два - для сил и для моментов. Просто в каждом уравнении необходимое число слагаемых. Или в школе не учились? Физика, школьный курс.
×
×
  • Создать...