Вывод определенного цифрового значения
-
- interested
- Сообщения: 6
- Зарегистрирован: 18 сен 2019, 19:03
- Версия LabVIEW: 18
- Контактная информация:
Вывод определенного цифрового значения
Столкнулся с проблемой. Необходимо выводить данные каждой итерации в заданном интервале времени. Также необходимо, чтобы при условии сложения/вычитания на экране прибора (проекта) индикатор был совмещен и показывал данные соответствующего действия.
Знаю, что нельзя пользоваться глобальными переменными, но иного выхода из ситуации не вижу.
Начитался всякой литературы, облазил форум, убедился, что при выходе из цикла никак не получить промежуточные данные, а тем более во времени.
Прошу вашей помощи.
Знаю, код кривой, но я учусь!
Знаю, что нельзя пользоваться глобальными переменными, но иного выхода из ситуации не вижу.
Начитался всякой литературы, облазил форум, убедился, что при выходе из цикла никак не получить промежуточные данные, а тем более во времени.
Прошу вашей помощи.
Знаю, код кривой, но я учусь!
-
- professor
- Сообщения: 3394
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Вывод определенного цифрового значения
вопрос я совсем не понял.
Выводить промежуточные результаты можно в внутри самого цикла.
Если нельзя, но очень хочется, то можно. Никакого запрета на это нет, тем более, что этот инструмент существует. Было бы нельзя, его бы не делали. У глобальных есть свои недостатки, могущие привести к гонке состояний, если же это формат "от одного многим", то они вполне применимы.
Более того, в официальном тесте по есть вопрос "что тут лучше использовать?" и правильный ответ - глобальная переменная.
Выводить промежуточные результаты можно в внутри самого цикла.
кто вам такое сказал? :)German3d писал(а):Знаю, что нельзя пользоваться глобальными переменными, но иного выхода из ситуации не вижу
Если нельзя, но очень хочется, то можно. Никакого запрета на это нет, тем более, что этот инструмент существует. Было бы нельзя, его бы не делали. У глобальных есть свои недостатки, могущие привести к гонке состояний, если же это формат "от одного многим", то они вполне применимы.
Более того, в официальном тесте по есть вопрос "что тут лучше использовать?" и правильный ответ - глобальная переменная.
-
- interested
- Сообщения: 6
- Зарегистрирован: 18 сен 2019, 19:03
- Версия LabVIEW: 18
- Контактная информация:
Re: Вывод определенного цифрового значения
Да, можно выводить, но только в данной подпрограмме. Так как это всего лишь часть, являющейся подприбором. В полной программе он выдает индикация только конечного результата
-
- professor
- Сообщения: 3394
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Вывод определенного цифрового значения
Если вам нужно передавать данные "во вне", то используйте
- глобальные переменные, если не важна очередность и получатели каждый в своём ритме просто интересуются актуальным значением величины
- нотификаторы, если получателей много и они хотят знать об обновлении данных "как только, так сразу"
- очереди - если получатель один и важно, чтобы все посылки дошли без пропусков.
- глобальные переменные, если не важна очередность и получатели каждый в своём ритме просто интересуются актуальным значением величины
- нотификаторы, если получателей много и они хотят знать об обновлении данных "как только, так сразу"
- очереди - если получатель один и важно, чтобы все посылки дошли без пропусков.
-
- interested
- Сообщения: 6
- Зарегистрирован: 18 сен 2019, 19:03
- Версия LabVIEW: 18
- Контактная информация:
Re: Вывод определенного цифрового значения
Понял, буду разбираться с глобальными переменными. Следующий вопрос, как можно выводить данные соответствующего условия на одном индикаторе.
Допустим, на вход пришло значение больше чем n - на экране начинает производиться действие в "реальном времени" (заданной задержкой итерации). Но если пришло значение меньше чем n - аналогично нужно показать действие происходящие над числом, но на том же индикаторе. Такое вообще возможно?
Допустим, на вход пришло значение больше чем n - на экране начинает производиться действие в "реальном времени" (заданной задержкой итерации). Но если пришло значение меньше чем n - аналогично нужно показать действие происходящие над числом, но на том же индикаторе. Такое вообще возможно?
-
- professor
- Сообщения: 3394
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Вывод определенного цифрового значения
Я до сих пор не понимаю/, что за действия и как они над и под числом делаются.
Кейсы вам помогут
if x>n
then {}
else {}
Кейсы вам помогут
if x>n
then {}
else {}
-
- interested
- Сообщения: 6
- Зарегистрирован: 18 сен 2019, 19:03
- Версия LabVIEW: 18
- Контактная информация:
Re: Вывод определенного цифрового значения
В общем, смог получать промежуточные значения вне теле цикла, но появилась другая проблема. Никак не могу повлиять на первоначальное значение заданного значения. Допустим подали команду 15, с каждым разом это значение должно уменьшаться на 1 и показывать это на индикаторе. Как быть?
-
- interested
- Сообщения: 6
- Зарегистрирован: 18 сен 2019, 19:03
- Версия LabVIEW: 18
- Контактная информация:
Re: Вывод определенного цифрового значения
Наверное я очень косноязычно объясняюсь.
Обязательно нужно использовать значения вне цикла, чтобы передавать информацию в string в реальном времени. Каждое изменение значения нужно передавать в стринг.
Грубо говоря, что нужно реализовать:
заданно определенное значение угла антенны, при переключении режима работы (режим работы исходное значение) антенна начинает возвращаться в исходный угол с определенной скоростью. Все изменения значений угла я отражаю в семисегментных индикаторах.
Сейчас пытаюсь реализовать возможность индикации. В цикле не вариант все это делать, так как много режимов работ помимо этого, да и используется несколько подпрограмм, из-за этого использование циклов и переменных отметается.
Самый близкий способ реализации был через очередь, но и там столкнулся с проблемой, что первоначальное положение антенны не получается учитывать.
Обязательно нужно использовать значения вне цикла, чтобы передавать информацию в string в реальном времени. Каждое изменение значения нужно передавать в стринг.
Грубо говоря, что нужно реализовать:
заданно определенное значение угла антенны, при переключении режима работы (режим работы исходное значение) антенна начинает возвращаться в исходный угол с определенной скоростью. Все изменения значений угла я отражаю в семисегментных индикаторах.
Сейчас пытаюсь реализовать возможность индикации. В цикле не вариант все это делать, так как много режимов работ помимо этого, да и используется несколько подпрограмм, из-за этого использование циклов и переменных отметается.
Самый близкий способ реализации был через очередь, но и там столкнулся с проблемой, что первоначальное положение антенны не получается учитывать.
-
- professor
- Сообщения: 3394
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Вывод определенного цифрового значения
Вопрос из простого "как передать значение во вне" внезапно трансформировался в сложный "как сделать большую систему".
Для начала нужно набросать, как бы банально это не звучало, на бумаге общий план. Какой "цикл" за что отвечает и чем занимается. Дальше понять, какие данные откуда куда надо передавать. Из этого будет понятно, что использовать. Глобальные, очереди, нотификаторы. ничего нового вам не скажут. Ещё есть события, но они сложнее.
Плюс тут попахивает машиной состояний: ожидание, вращение и т.п.
Так что ничего нового не скажу:
Для начала нужно набросать, как бы банально это не звучало, на бумаге общий план. Какой "цикл" за что отвечает и чем занимается. Дальше понять, какие данные откуда куда надо передавать. Из этого будет понятно, что использовать. Глобальные, очереди, нотификаторы. ничего нового вам не скажут. Ещё есть события, но они сложнее.
Плюс тут попахивает машиной состояний: ожидание, вращение и т.п.
Так что ничего нового не скажу:
Если вам нужно передавать данные "во вне", то используйте
- глобальные переменные, если не важна очередность и получатели каждый в своём ритме просто интересуются актуальным значением величины
- нотификаторы, если получателей много и они хотят знать об обновлении данных "как только, так сразу"
- очереди - если получатель один и важно, чтобы все посылки дошли без пропусков.
-
- doctor
- Сообщения: 2210
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 26 раз
Re: Вывод определенного цифрового значения
German3d, ваше "тройное сравнение" выполняется одной базовой функцией Programming/Numeric/Sign
-
- professor
- Сообщения: 3394
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Вывод определенного цифрового значения
НЕ ПОЛЬЗУЙТЕСЬ!German3d писал(а):Сделал! Кому надо пользуйтесь
что это и зачем это? запихать значение в очередь и тут же его вытащить? и потом сохранить в регистре? Да ещё до кучи всё это вне цикла?
Тут нарисована абсолютно абсурдная диаграмма.
Возможно, при наличии циклов она была бы более осмысленной, но в данном виде это скорее большая нелепость, чем то, что можно раздавать всем с советом "пользуйтесь"
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 5 Ответы
- 969 Просмотры
-
Последнее сообщение seromax
-
- 5 Ответы
- 287 Просмотры
-
Последнее сообщение DrageFabeldyr
-
- 3 Ответы
- 855 Просмотры
-
Последнее сообщение IvanLis
-
- 4 Ответы
- 1036 Просмотры
-
Последнее сообщение Artem.spb
-
- 2 Ответы
- 600 Просмотры
-
Последнее сообщение alerm