-
АвторТема
-
14.08.2023 в 14:40 #131939
Добрый день, при программировании для ZetLab возникло много вопросов, которые хотелось бы решить.
Вот некоторые из них:
1. Где взять актуальную информацию по библиотекам?
2. В какой среде(ЯП) лучше писать программы для ZetLab?
3. Есть ли возможность сделать с помощью GridGL совмещенные разнородные графики, с основной и вспомогательной Y шкалой, можете привести примерный код для него?
4. Какие проблемы могут возникнуть при написании под Win10 Visual Basic 6?
5. В программе написанной на VB6 в Win10 в журнале ошибок создается сообщение об ошибке:
«ZetServer: Borland.exe found»,
при этом сама программа работает без нареканий, что это значит и как устранить эту ошибку?
6. Как избавиться от предупреждающего знака при переполнении шкалы уровня сигнала в компоненте GdiPlusHorScale? При каком значении Value оно начинает отображаться? -
АвторТема
-
АвторОтветы
-
15.08.2023 в 10:47 #131940
Добрый день!
1. Информация в документации является актуальной (https://file.zetlab.com/Document/HELP_ZETLab_studio_special.pdf). Перечисленные функции продолжают работать так же как и раньше, новые функции, которые не описаны в документации, никак не изменяют принципов работы с системой в целом, а только добавляют некоторые полезные функции. Например, сохранение графика в файл-изображения в gridgl.ocx.
2. Вы можете писать программы для ZETLAB в любой среде на любом языке программирования. Мы пишем в среде Visual Studio на языке С++. Наши клиенты пишут и на C#, и на Delphi, и на Visual Basic.
3. GridGL позволяет отображать до 4-х различных осей для графиков. Чтобы отображать график на новой оси вам необходимо сначала вызывать функцию
void SetInd(long propVal) — чтобы задать номер текущего настраиваемого графика, а затем вызвать функцию
long SetAxisSetting(long index, long UseAxis, LPCTSTR AxisText, unsigned long AxisColor, float CoeffMultiplicative, float CoeffAdditive), где
long index — номер оси от 0 до 3
long UseAxis — флаг отображения оси, 1 — показывать, 0 — не показывать
LPCTSTR AxisText — название оси
unsigned long AxisColor — цвет линий оси в формате RGB
float CoeffMultiplicative — множитель значений оси
float CoeffAdditive — сдвиг значений оси
4. Так как последнее обновление Visual Basic 6 вышло в 1998 году, то есть 25 лет назад, то проблем может быть множество. К сожалению, мы не сможем вам подсказать заранее об этих проблемах, так как отказались от разработки программ на Visual Basic более 10 лет назад. Тем не менее Microsoft сохраняет совместимость с программами, написанным для старых ОС, и если использовать только базовые функции, то возможно ваши программы будут работать и на Win 10. Последней версией Visual Basic является версия 15.0, которая вышла в 2017 году.
5. Это сообщение было добавлено в ZetServer при отладке взаимодействия с программами, написанными в среде Borland C++. Вам ничего делать не нужно. Если оно вам мешает, то мы его уберём.
6. Предупреждающий знак появляется при превышении 95% от максимального значения и продолжает отображаться после снижения уровня. Этот знак предназначен для сообщения о том, что было превышение критического уровня, даже если оператор отвлёкся от монитора.15.08.2023 в 12:00 #131941Позвольте уточнить свои вопросы:
1. Ситуация с библиотеками у меня совершенно обратная, так как я не нахожу (проверял и в C#) свойств и методов компонент (установлена последняя версия ZetLab), которые описаны в вашей документации.
2. Почему же в таком случае в документации есть примечание (стр. 41, HELP_ZETLab_studio_special.pdf)) на то, что:* При программировании на MicroSoft C#, Borland Delphi и Borland C++ Builder
обеспечивается ограниченная функциональность по причине особенностей данных
языков программирования.В чем проявляется эта ограниченность?
3. В том то и дело, что у меня отсутствует метод GrindGL — void SetInd(long propVal), и не только он, все перечислять очень долго. Выходит, Вы предоставляете Zetlab c устаревшими библиотеками компонент?
4. Можно ли в таком случае перейти/переписать программы с VB6 на VB . NET, какие проблемы при этом можно ожидать?
5. Данная ошибка возникает не только при отладке, но и при запуске откомпилированной (exe) программы, притом что программа написана на VB6.15.08.2023 в 12:14 #131942Вот, например, информация о GridGL:
File Version Information :
Version language : Русский (Россия)
CompanyName : https://www.zetlab.com 1992-2023
FileDescription : Graphics library
FileVersion : 2017.1.17.0
InternalName : GridGL.ocx
LegalCopyright : https://www.zetlab.com 1992-2023
LegalTrademarks : © ООО «ЭТМС» 1992-2017. Все права защищены
OriginalFilename : GridGL.ocx
ProductName : ZETLab
ProductVersion : 2023.3.31.015.08.2023 в 17:55 #1319481. Ниже приведен пример файла заголовка, который создаётся при подключении компонента GridGL.ocx к проекту на C++. При подключении к проекту на C# создаётся подобный файл? Если да, то можете ли вы их сравнить?
https://zetlab.com/wp-content/uploads/2023/08/image_2023_08_15T14_51_49_815Z.png
2. Не могу точно утверждать, так как наши специалисты не используют ни MicroSoft C#, ни Borland Delphi, ни Borland C++ Builder.
3. При разработке ПО используется та же версия, что и поставляется всем клиентам. Иначе наши программы нигде бы не работали. Метод GrindGL — void SetInd(long propVal) точно есть. В указанном файле он находится на 739 строке.
4. Вы вольны использовать любую среду разработки и любой язык программирования, но мы не можем вам подсказать, какие проблемы могут вас там ожидать, так как ведём разработку в среде Microsoft Visual Studio на языке C++.
5. Вы имеете в виду сообщение «ZetServer: Borland.exe found» из предыдущего вопроса? Это сообщение записывается при подключении программы к ZetServer’у. При чём не важно запускали вы программу из среды разработки или как откомпилированную программу, запись произведёт сам компонент srv.ocx. Нам важно знать — возникает ли оно однократно при запуске программы или непрерывно заполняет журнал? Есть ли критическая необходимость срочно убрать это сообщение?15.08.2023 в 18:44 #1319491. По крайней мере VB6 и C# такой метод не находиться даже в обозревателе объектов, код с обращением на такой метод не собирается, по факту его нет. Замечу, что ZetLab установлен сразу последней версии, на компьютере ранее не устанавливался. Я не очень понимаю, чем мне может помочь этот заголовочный файл С++, я же не на этом языке пишу. Полагаю, что библиотеки для других ЯП вами просто не обновлялись.
2. Это прямая цитата из вашей документации, на которую вы сами приводили ссылку выше. Разве ее не ваши специалисты писали?
3. Поверьте, это малая часть проблем, на самом деле и в других компонентах отсутствуют многие свойства и методы, которые приведены в документации.
4. Я и сам могу это проверить, просто подумал, что у вас есть свой опыт и наработки в этом деле, которыми вы могли бы поделиться.
5. Да, данное сообщение записывается при запуске программы, всего один раз, причем не важно запускалась программа из среды или откомпилированную программу. Возникает однократно, но все равно неприятно, лучше убрать, конечно.16.08.2023 в 10:59 #131950Добрый день!
1. Все наши библиотеки и Active-X компоненты собираются в единичном варианте и вариантов для разных языков программирования не предусмотрено. GridGL.ocx является Active-X компонентом Windows и при подключении в проекте Visual Studio автоматически создаёт заголовочный файл со списком всех доступных функций. В вашем проекте создаются подобные заголовочные файл? Можете их прислать на почту? Почта для связи — info@zetlab.com (в заголовке можете указать, по вопросу с форума)2. Да, эта цитата, как и вся документация написана специалистами, работающими у нас. Все наши специалисты ведут разработку на С++ в среде Visual Studio. Эта фраза была добавлена после общения с клиентами, которые ведут разработку на других языках программирования и в других средах разработки, по той причине, что у нас нет специалистов в других языках программирования и нет других сред для разработки.
3. Мы были бы признательны, если Вы пришлёте нам заголовочные файлы из ваших проектов, которые сгенерировала ваша среда разработки при подключении наших библиотек или компонентов.
4. К сожалению, помочь в других языках программирования или средах мы не сможем.
5. Эту фразу мы уберём.
Уточните пожалуйста, какую среду разработки Вы используете и на какой операционной системе работаете?
16.08.2023 в 17:47 #131954Добрый день!
1. Полагаю, это из-за того, что я использую компоненты не из Zetlab Studio, а из Zetlab demo, очевидно, что там они сильно урезаны по функционалу. Так как я пишу/проверял на VB6 и C#, то никаких заголовочных файлов не могу предоставить. Отсутствие многих методов невозможно объяснить устаревшей средой программирования, так как проблема наблюдается и в Visual Studio 2015, 2019 (C#, VB .Net). Но я могу отправить свои файлы библиотек и компонент Active-X, а вы уже проверите.
2. Вы так и не ответили прямо на мой вопрос, а он очень конкретный : В чем проявляется эта ограниченность при написании программ на С#, Delphi и т. д.? Раз это утверждается в официальной документации, то должно же быть этому какое-то основание и причина.
3. В проекте программы на VB никакого заголовочного файла нет, используются только компоненты Active-X, такие как SRV.ocx, UNIT.ocx, GridGL.ocx и пр., которые были зарегистрированы в системе при установке Zetlab и добавлены на панель компонентов VB (или C#) уже мной, могу отправить имеющиеся у меня файлы этих компонент Active-X.
5. Когда и как я могу воспользоваться исправленной версией ZetServer?Сейчас пишу и тестирую на VB6, Visual Studio 2015, 2019 VB .Net, C# в операционных системах Win7, Win10, и везде проблемы одни и те же, более того, по той же причине большинство примеров программы выложенные на вашем сервере не собираются.
18.08.2023 в 13:03 #131955Добрый день!
1. Уточните пожалуйста версию установленного ПО и даты создания используемых файлов, а также их размер.
2. Конкретики по даммону вопросу предоставить не можем, данный тезис в документации присутствует очень давно, и, к сожалению, история не сохранилась.
3. Попробуйте удалить ZETLAB через установку и удаление программ Windows и установить ZETLAB снова. А также попробуйте удалить компоненты из панели компонентов, а затем добавить их снова.
5. Исправленная версия ZetServer появится в очередном сетапе ZETLAB_beta.18.08.2023 в 16:46 #131956Добрый день!
1. У меня установлена самая последняя версия программы (Версия 2022.02.22).
2. Я, конечно, изначально засомневался в данном утверждении, ваш ответ еще больше утвердил меня в этом, так как разумного объяснения этому утверждению я не нахожу.
3. Могу попробовать, но, как я уже ранее указывал, программа ранее никогда на компьютер не устанавливалась (это достоверный факт) и даже ни разу не обновлялась, так как сразу же была установлена самая последняя версия (дата установки 18.04.2023). Удаление компонент из панели и добавление заново ничего не меняет, более того, указанная проблема наблюдается и на других компьютерах с таким же программным обеспечением.Ваша почта не пропустила письмо с этими файлами (даже заархивированными), поэтому даю ссылку для скачивания используемого мной проблемной Active-X компоненты GridGL.ocx (взят из папки ZETLab в файл), добавил еще и grid.ocx.
22.08.2023 в 11:39 #131964Добрый день!
После установки компонент для разработки на C# наши специалисты добавили GridGL.ocx на форму и в окне «Object Browser» изучили свойства класса «GridGL». Методы «void SetInd(long propVal)» и «long GetInd()» превратились в «public virtual int Ind { get; set; }». Поэтому вы и не могли их найти. Наверное в этом и есть одно из отличий C++ и C#.
22.08.2023 в 12:11 #131965Добрый день!
Насколько я понимаю, то что метод виртуальный, означает, что он никак не реализована в данном классе, т.е. попросту отсутствует.
В связи с этим хотелось бы спросить:1. Вы будете исправлять указанный недостаток и когда этого можно ожидать?
2. Это недостаток именно переданных мной файлов компонент или она присуща поставляемым с ZetLab компонентам?Хочу также заметить, что это не единственных недостаток такого рода GridGL.ocx, их гораздо больше, в том числе и в других компонентах.
23.08.2023 в 09:08 #131966Продолжу …
Из вашего ответа становиться очевидным, что вы, несмотря на утверждения данные ранее, не поддерживаете библиотеки компонент, по крайней мере поставляемых с Zetlab, в актуальном состоянии, так как сами не пишите программы на на VB, C#, хотя и позиционируете эти ЯП как удобный вариант для написания прикладных программ конечными пользователями (надо признаться, что для рядового пользователя С++ гораздо более сложен чем эти ЯП). Это усугубляется еще и тем, вместе с ZETLab не поставляются заголовочные файлы С++ для этих компонент. Поэтому хотелось бы еще раз спросить:3. Вы предоставляете Zetlab c актуальной версией компонент Active-X или нет? Проблемы с ними только у меня или это общая проблема, вы сами используете другие, более актальные?
4. Есть ли разница между этими компонентами поставляемыми вместе с Zetlab и Zetlab Studio?
5. Где можно взять актуальные версии заголовочных файлов компонент для написания на программ С++?Очень хотелось бы услышать от вас конкретные ответы, и хотя эти вопросы явно/неявно уже задавались мной ранее, к сожалению, ответы на них не всегда были конкретны и последовательны.
3. В том то и дело, что у меня отсутствует метод GrindGL — void SetInd(long propVal), и не только он, все перечислять очень долго. Выходит, Вы предоставляете Zetlab c устаревшими библиотеками компонент?
3. При разработке ПО используется та же версия, что и поставляется всем клиентам. Иначе наши программы нигде бы не работали. Метод GrindGL — void SetInd(long propVal) точно есть.
23.08.2023 в 09:29 #131967Также, в GrindGL не удается найти и свойство NumVisiblePoints (насколько я понял, он отчасти может заменен свойством MathDX), из-за чего даже не собирается один из ваших примеров, отсутствует свойство Reference (как и Get, Set методов), что не позволяет установить линейную шкалу в дБ.
24.08.2023 в 15:44 #132005Добрый день!
Виртуальный метод (виртуальная функция) в ООП означает метод (функцию) класса, который МОЖЕТ быть переопределён в классах наследниках. При отсутствии реализации метода (функции) в родительском классе этот метод (функция) называется абстрактным и требует обязательной реализации в классах наследниках. Во всех наших библиотеках и методах объявленный функции реализованы иначе бы проекты просто не собирались. Просто C# так интерпретирует содержимое Active-X компонента.
https://ru.wikipedia.org/wiki/Виртуальный_метод
https://ru.wikipedia.org/wiki/Абстрактный_класс3. Дистрибутив мы выпускаем один — и для пользователей, и для разработчиков, и сами его используем при разработке. Поэтому версия всех библиотек и Active-X компонентов у нас одна.
4. Никакой разницы нет для пользователей ZETLAB и ZETLAB Studio так как дистрибутив один и тот же. Разница только в ключе, который позволяет создавать компонент в виде проектирования в средах разработки.
5. При написании программы на C++ в среде Visual Studio нужно создать компонент на форме диалога, затем кликнуть правой кнопкой мыши по нему и в контекстном меню выбрать пункт «AddVaraible», далее в диалоговом коне нужно выбрать тип «Control» и дать экземпляру класса имя. После нажатия кнопки «OK» будет добавлен экземпляр класса компонента в класс диалога и будут созданы заголовочные файлы.Что касается поиска метода «SetInd» при подключении ACtive-X компонента «GridGL.ocx» при разработке проекта на C#. Дело в том, что C# интерпретирует методы «SetInd» и «GetInd» как аксессоры «get» и «set» свойства «ind» класса «GridGL Class».
Методы «NumVisiblePoints» и «Reference» были удалены из Active-X компонента, но не были удалены из документации и примеров.
Приносим свои извинения за доставленные неудобства.
24.08.2023 в 17:05 #132021Добрый день!
Спасибо, что внесли некоторую ясность по моим вопросам.1. Все это я знаю, потому и высказал свои сомнения по поводу наличия их реализации, что вполне объяснимо, особенно на фоне отсутствия актуальной информации по всем методам и свойствам в документации, а также наличия проблем даже в выложенных примерах.
Неразбериха со свойствами вызвана и тем, что в библиотеках есть методы начинающиеся с Get и Set, которые не интерпретируются как свойства, а только как методы. Очевидно, что для этого их как-то надо указать, оформить в коде (например, как Property, т.е. тут явно присутствует ошибка в коде библиотеках, недочет.
В связи с этим хотелось бы уточнить, вы сертифицируете свое программное обеспечения, в частности, предназначенные для непосредственного измерения (виртуальные измерительные приборы)? Ведь очевидно, что при ошибки программирования могут повлечь неточностям в измерениях, даже при вполне исправном устройстве.
Дело в том, что проблема вашей документации не только в неактуальности ее состояния, но и в ее неполноте.
28.08.2023 в 09:02 #132026Добрый день!
Продолжу …
Есть необходимость стоить графики АЧХ с предварительно загруженными допусковыми линиями, в связи с чем возникла необходимость строить графики с разным количеством выведенных значений.
В документации содержится довольно противоречивая информация, так на стр. 626 указан метод:VARIANT_BOOL IsShowPropSheet — cкрывает нулевые значения на графике.
в тоже время на стр. 615 тот же самый метод (свойство) описан как:
VARIANT_BOOL IsShowPropSheet – состояние выводить/не выводить на экран
страницу свойств, где пользователь может установить режим работы, вид шкалы, цвет
фона, тип шрифта, максимальное и минимальное значения.По факту ни одной из них в компоненте GridGL нет, а есть метод ShowPropSheet, который выводит на экран страницу свойства графика.
Не могли бы внести ясность по этому вопросу, а также посоветовать лучший способ одновременного вывода на экран графиков с разным количеством значений, учитывая то обстоятельство, что параметр Size для всех графиков одинаковый и есть ли возможность скрыть нулевые значения на графике? Можно ли это реализовать с помощью свойств Xfirst, Xend,
MathDX, если параметр Size для всех графиков имеет одинаковое значение.28.08.2023 в 14:41 #132028Здравствуйте!
Для правильного отображения графиков на GridGL необходимо чтобы они имели одинаковые размеры, то есть количество точек. Количество точек задаётся с помощью метода «void SetSize(long propVal)», но вашем случае это будет свойство «long Size». Значение первой и последней точек задаётся свойствами «XFirst» и «XEnd» соответственно. Таким образом задаётся значение каждой точки на оси Х. Свойства «MathDX» и «MathLX» задают ту область, которая будет видна на графике.
Например, вы задали size = 10, а значения XFisrt = 0.1, XEnd = 1.0. Таким образом вы получили разбиение оси Х на 10 точек: 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0. Если задать значения MathLX = 0.2, MathDX = 0.5, то вы увидите на графике 6 точек: 0.2, 0.3, 0.4, 0.5, 0.6, 0.7.
По поводу вопроса о «возможности сокрытия нулевых значений на графике». Мы правильно вас поняли, что вы не хотите чтобы была видна нулевая точка по оси Х или вам хочется не показывать нулевые значений на графиках, не важно какой Х, главное что Y = 0?28.08.2023 в 15:32 #132032Мне необходимо вывести два графика определяющие допусковую область сразу на все значения, а третий измерительный график показывать по мере поступления данных, в связи с чем возникают вопросы:
1. Если значение Size, который одинаковый для всех графиков, то третий график будет отображаться на еще не поступивших данных (измерений) тоже сразу на всю длину и а значения начинаться с нуля, что выглядит не очень опрятно;
2. Ограничивать видимую часть актуальными измеренными данными параметром MathDX тоже не хочется, так как желательно сразу показать всю допусковую область, по всем частотам. Насколько я понял, в большинстве ваших программ для снятия, напр., АЧХ, по мере прихода данных измерения изменяется значение либо Size, либо отображается только видимая часть изменением MathDX, я прав?
3. А что делать, если хочется отобразить график не изменяя динамически масштаб по оси частот (ось Х)?
4. Можно ли сделать MathDX больше значения Size и по мере процесса измерения изменять значение Size? Как быть в таком случае если надо сначала построить графики допусковой области (верхний и нижний)?Мы правильно вас поняли, что вы не хотите чтобы была видна нулевая точка по оси Х или вам хочется не показывать нулевые значений на графиках, не важно какой Х, главное что Y = 0?
Дело в том, что если отображать график на все значения сразу, то еще не измеренные точки инициализированы нулевыми значениями (по крайней мере в VB), можно, конечно, показывать график постепенно, как это сделано у вас), только по уже измеренным значениям, но это не всегда приемлемо. Поэтому надо подавлять вывод точек, которые еще не измерены и равны нулю. Полагаю, вышеприведенная, хотя и явно недостоверная, цитата указывает на то, что у вас имелось желание реализовать это в вашей библиотеке и подавлять точки с нулевым, значениям. Сейчас сделать это просто мешает то обстоятельство, что значение Size всех выводимых графиков одинаковый.
28.08.2023 в 17:53 #132035Вот так, например, можно реализовать график с постепенно по мере измерения увеличивающейся отображаемой областью, так реализованы почти все ваши графики частотных характеристик. Так можно добиться отсутствия нулевых значений, но график выводится постепенно.
AFCGridGL.Mathdx = Freq - StartFreq error = AFCGridGL.Paint(RmsArray(0))
здесь Freq — текущая частота (ось Х), StartFreq — начальная частота, RmsArray — массив измеряемой величины, код периодически вызывается таймером.
30.08.2023 в 17:31 #132039Здравствуйте! Ответ мы направили вам на почту.
30.08.2023 в 18:03 #132040Здравствуйте! Прочитал, но хотелось бы получить ответ по существу здесь, особенно учитывая, что большинство вопросов так или иначе связаны с неудовлетворительным состоянием руководства по программированию. Полагаю, что решение этого вопроса было бы интересно и многим другим.
-
АвторОтветы
Для ответа в этой теме необходимо авторизоваться.