#labview
Вопрос:
Я пытаюсь очистить массив после каждой итерации цикла for в LabVIEW, но в том, как я его реализовал, значения не соответствуют тому, что я хочу, но они меняются с предыдущими значениями в других частях массива.
Он не отображается, но этот код находится внутри цикла for, который повторяется в другом числовом массиве.
Я знаю, что если я правильно очищу массив после каждой итерации цикла, это должно сработать. Как мне это сделать? Я новичок в Labview, но уже некоторое время занимаюсь кодированием — помощь ценится!!!
[![labview добавить в массив][2]][2]
Комментарии:
1. Вы можете опубликовать полный код? По крайней мере, полный цикл for и массив, индексирующий его
2. Более того, что у вас есть именно мена для «очистки массива»?
3. @SilentCloud только что загрузил полный код — я внес некоторые изменения, чтобы посмотреть, сработает ли он, но редакция тоже не работает. Я имею в виду «очистку» точно так же, как возвращение массива к тому, каким он был изначально до того, как я добавил в него элементы. Что-то вроде array2 = 0, по сути, в начале каждого цикла
Ответ №1:
Похоже, вы еще не совсем привыкли к тому, как LabVIEW передает данные. Нет необходимости использовать множество узлов свойств значений для одного и того же элемента управления или индикатора в одной структуре; если вы хотите использовать одни и те же данные в нескольких местах, просто разветвляйте провод. Возможно, вы думаете, что элемент управления или индикатор LabVIEW эквивалентен переменной в текстовых языках, и вам нужно использовать узел свойств, чтобы получить или установить его. Вместо этого думайте о проводе как о переменной. Если вы хотите передать вывод одной операции на вход другой, просто подключите вывод к входу.
Индикаторы с клеммами внутри вашего цикла будут обновляться новыми значениями на каждой итерации цикла, и код внутри цикла должен выполняться быстрее, чем человек может прочитать эти значения, поэтому после завершения цикла все выходные данные, кроме конечных значений, будут потеряны. Это то, что вы намеревались, или вы хотите каким-то образом накапливать или хранить их?
Я вижу, что на каждой итерации цикла вы считываете два значения из файла конфигурации, и раздел задается строковым значением одного элемента числового массива Array
. Вы отображаете два значения в индикаторах PICKERING
и SUBUNIT
. Если вы можете описать словами (или псевдокодом, или языком текста, к которому вы привыкли), какие манипуляции с данными вы на самом деле пытаетесь выполнить в остальной части этого кода, мы, возможно, сможем внести более конкретные предложения.
Ответ №2:
Прежде всего, я предполагаю, что желаемый порядок операций следующий:
- Вкладывая ценность
Pickering
вArray 2
- Извлечение из
Array 2
значений для вводаPickering 1
иPickering 2
Array 2
Возвращая его первоначальное значение
Если это так, то с вашим текущим кодом вы не можете быть уверены, что операция 1
будет выполнена до операции 2
. На самом деле, порядок этих операций не может быть заранее определен. Вы должны принудительно изменить поток данных, например, создав a sequence structure
. Вы поместите код, связанный 1
с первым кадром, затем код, связанный с операцией 2
, во второй. Затем, чтобы Array 2
вернуть исходное значение, я бы добавил третий кадр, в котором вы вводите пустой массив в узел Value
свойств Array 2
(инструмент, который вы используете для выбора, но как вход, а не как вывод). То sequence structure
должно быть внутри самого for loop
себя .
Я никогда не использовал узел свойств Reinit to default
, поэтому я не могу вам в этом помочь.
К сожалению, я не могу запустить Labview на этом компьютере, но я надеюсь, что мое объяснение было достаточно ясным, если нет, скажите мне, и я постараюсь быть более конкретным.
Комментарии:
1.
Reinit To Default
Метод сбрасывает элемент управления или индикатор до значения по умолчанию, которое вы можете изменить, щелкнув по нему правой кнопкой мыши и выбравData Operations
> >Make Current Value Default
-это будет настройкой элемента управления при открытии VI и/или если элемент управления не подключен, когда он находится в под — VI. Хотя я не думаю, что это то, что на самом деле хочет сделать спрашивающий.2. Кроме того, хотя вы правы, указывая, что код запроса будет выполняться в неопределенном порядке, я не думаю, что решение этой проблемы состоит в том, чтобы начать использовать структуры последовательностей — я думаю, что они должны просто использовать провода для передачи данных.