Условный параллелизм на LabVIEW - PullRequest
0 голосов
/ 22 мая 2018

Я пишу приложение для обновления числового значения с учетом входного значения пользователя, и в зависимости от входного значения пользователя программа проверяет, больше ли оно 10, если оно больше 10, то программа ждет 1 секунду, а затем будет иметьвсплывающее сообщение «true».

Мое намерение состояло в том, чтобы вызвать условную проверку, печатая true каждую секунду, если входное значение пользователя больше 10;другими словами, структура case должна была вызываться независимо от структуры события в одном и том же цикле бесконечно.

Но, похоже, все работает не так, как я ожидал.Если в структуру события не введено новое входное значение пользователя, программа не попадет в структуру case, даже если структура case находится в цикле.

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

enter image description here enter image description here

Спасибо.

1 Ответ

0 голосов
/ 23 мая 2018

Вы создали структуру событий, которая обрабатывает ввод Value Change для вашего числового элемента управления, так что он будет делать именно то, что он говорит: дождитесь события изменения значения.Когда это событие получено, код в его фрейме структуры событий будет выполнен, а затем структура события выйдет.

Выглядит так, как будто вы передали значение из регистра сдвига в терминал timeoutСтруктура событий, так что я предполагаю, что вы также создали Timeout случай события?Если это так, структура события должна перестать ждать после количества миллисекунд, подключенных к терминалу тайм-аута.

Значение, которое вы проверяете, чтобы решить, показывать ли ваше сообщение true, является значением, которое было передано врегистр сдвига на предыдущей итерации цикла.Если управляющее значение изменяется, оно поступает из терминала NewVal в случае события Value Changed.Но откуда это берется в случае тайм-аута?Мне кажется, что вы не подключили его в этом случае, потому что терминал, выходящий из структуры события, имеет небольшую точку вместо того, чтобы быть сплошным оранжевым.Это означает, что вы получите значение по умолчанию для любого случая, когда терминал не был подключен.Значением по умолчанию для чисел является ноль.Так что, если структура события истекает, значение, поступающее в регистр сдвига, равно нулю, вы получаете ноль из регистра сдвига на следующей итерации, ноль не больше 10, поэтому вы больше не увидите сообщение.

Я не понимаю, что вы пытаетесь сделать в случае, когда вы подключили терминал NewVal к узлу свойства Value того же элемента управления.Можете ли вы объяснить, чего это должно достичь?

Ваш вопрос звучит так, как будто это упражнение по программированию, где вы должны использовать эти конкретные структуры LabVIEW, вместо того, чтобы предлагать более эффективные способы достижения того, что, как вы говорите, вы хотите этогокод, чтобы сделать, я оставлю вам решать, как его изменить.В то же время я рекомендую перечитать справку Event Structure и предостережения и рекомендации , на которые она ссылается.

...