Labview - Управление большим количеством констант - PullRequest
2 голосов
/ 06 июня 2019

Это скорее проблема форматирования, чем логики кода и, вероятно, кажется глупой (учитывая, что я видел гораздо более плотные блок-схемы).Я работаю с большим количеством числовых констант, и они начинают загромождать мою блок-диаграмму.Есть ли что-то, что я могу использовать, чтобы сгруппировать их красиво и компактно?

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

РЕДАКТИРОВАТЬ: Изображениерассматриваемого кода (сегмент кода используется многократно, поэтому было бы неплохо иметь более компактную структуру регистра)

enter image description here

Ответы [ 2 ]

1 голос
/ 10 июня 2019

Я думаю, вам следует переосмыслить, какую часть блок-схемы вы планируете посвятить константам: -)

Использование чисел непосредственно в коде, эквивалент немаркированных констант на блок-диаграмме LabVIEW, является признанным антишаблон .Если причина константного значения не является очевидной и фундаментальной для выполняемой операции, любой, кто просматривает ваш код (включая вас, через пару недель после его написания), не поймет, почему было выбрано значение.Поэтому вы должны прояснить это, пометив константу каким-либо образом (эквивалентно присвоению ее имени на текстовом языке), а также упростить изменение значения при необходимости.

Обычно ясно, что 0 или 1 константа работает там, но в коде вы разместили две константы 1000 и одну 999.Почему это 1000, и если я решу, что это будет (скажем) 2000, нужно ли мне обновлять и другие два значения?Если это так, вы должны определить его один раз, пометить его подходящим именем, описывающим, что это такое (в вашем примере это может быть chunk size или что-то в этом роде), и связать это значение с тем местом, где вам нужно его использовать.Там, где у вас есть константа 999, вы можете получить это значение с помощью функции Decrement или вы также можете изменить свою функцию Greater Than на Greater or Equal и сравнить ее непосредственно со значением 1000.Таким образом, ваше первоначальное определение константы будет занимать больше места из-за метки, но вы сэкономите место и улучшите удобство сопровождения, передавая это значение туда, где вам это нужно, вместо размещения дополнительных констант.

Если вам нужночтобы ссылаться на одни и те же константы в нескольких местах на блок-диаграмме, вы можете поместить константы (и только константы, а не любую другую программную логику) в subVI, где каждая константа связана с индикатором с подходящей меткой, и каждый индикаторподключен к другому выходу на панели разъемов.При наведении инструмента на клеммы SubVI вы увидите этикетку на полоске наконечника.В качестве альтернативы, особенно если вам нужно множество разных значений констант, вы можете сделать то же самое, но в вашем SubVI объединить разные константы в именованный кластер (который вы сохраняете как typedef), а затем использовать Unbundle by Name для доступа к конкретным значениям констант.из кластера, где они вам нужны.Опять же, это не обязательно экономит место на блок-диаграмме, но делает ваш код более читабельным и понятным.

0 голосов
/ 07 июня 2019

Простой ответ состоял в том, чтобы реорганизовать мою блок-схему, освободив место для констант.Dave_St предложил создать subvi для структур case для тех, кто ищет альтернативы.Хотел пометить это как решенное независимо.

...