Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version » Проблемы при передаче значений в ActiveX

   
Автор / Author Тема / Topic: Проблемы при передаче значений в ActiveX
Triamor
Junior Member / Новичок
Участник № / Member № 5324


Icon 1 отправлено / posted      Профиль для / Profile for Triamor           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Подскажите пожалуйста в чем может быть причина следующей проблемы.
В ActiveX-компонент передаю 4-байтное значение (пробовал с типами UDINT, DINT). Вместо 4 байт передается только младшие 2 байта, а старшие два отбрасываются. Если попытаться передать это значение через тип STRING с присвоенным значением по-умолчанию, то значение передается полностью. На других компьютерах передаетются все 4 байта. Версия Trace Mode 6.07.7.

Сообщения / Posts 8 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
" На других компьютерах передаются все 4 байта."

На других компютерах - тоже под управлением Trace Mode 6.07.7?
Откуда передается значение DINT в аргумент, передающий в ActiveX? Этот аргумент привязан к каналу? К какому?
Или к аргументу другого CALL? Тогда какой тип данных у этого аргумента канала CALL?

Сообщения / Posts 17324 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Triamor
Junior Member / Новичок
Участник № / Member № 5324


Icon 1 отправлено / posted      Профиль для / Profile for Triamor           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Нормально работает на других компьютерах с 6.7.07 и 6.6 Base.
Значения берутся из аргументов экрана, куда их записывает программа. Также пробовал создавать ни к чему не привязанный аргумент и задавать его значение в режиме эмуляции экрана - эффект тот же, отбрасываются старшие 2 байта у DINT и UDINT.

Сообщения / Posts 8 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Какой интерфейс Вы используете для передачи этого значения:
IDispatch или IChInfo?

Сообщения / Posts 17324 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Triamor
Junior Member / Новичок
Участник № / Member № 5324


Icon 1 отправлено / posted      Профиль для / Profile for Triamor           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Разработкой ActiveX-компонента занимает другой человек. Каким образом выяснить какой интерфейс используется? (ActiveX разрабатывают на Delphi 7)
Сообщения / Posts 8 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Тип используемого интерфейса по конкретному входу конкретного ActiveX можно узнать только у разработчика ActiveX.

Чтобы связь с ActiveX в проекте зависела от ПК - не встречалось, объяснить трудно.
Надо быть уверенным, что других ПК запускается тот же проект, с тем же ActiveX.

Сообщения / Posts 17324 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Triamor
Junior Member / Новичок
Участник № / Member № 5324


Icon 1 отправлено / posted      Профиль для / Profile for Triamor           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Проекты были разными на разных компьютерах, а ActiveX один и тот же.
В итоге нашелся выход - вместо DINT использую REAL и все нормально передается. Как только ставлю целочисленный тип передаются только 2 младших байта.

Сообщения / Posts 8 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
А в тех проектах, которые на других ПК работали, соответствующие аргументы какие типы данных имели?
Сообщения / Posts 17324 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Triamor
Junior Member / Новичок
Участник № / Member № 5324


Icon 1 отправлено / posted      Профиль для / Profile for Triamor           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В других проектах были DINT и UDINT.
Могут ли существовать где-то определения сколько байт отводить под какой тип данных?

Сообщения / Posts 8 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В настоящее время в ActiveX по интерфейсу IDispatch передаются
целые числа - как 2-байтное целое (VT_I2)
булевы - однобайтное целое (VT_UI1)
все остальные типы - как float (VT_R4).

По интерфейсу IChInfo целые и действительные числа передаются в 4-байтном виде.

В ближайшем релизе интерфейс IDispatch будет модифицирован.

Сообщения / Posts 17324 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2