- •14. Коротко про Formula Node у LabView
- •15. Формули у LabView
- •16. 9 Порад LabView-програмістам
- •18. Цикли і галуження у Formula Node
- •19. Робота з файлами у LabView
- •20. Вузли для роботи з часом у LabView
- •21. Робота із пристроями вводу у LabView
- •22. Property Node: зміна властивостей візуальних компонентів LabView у процесі виконання програми
16. 9 Порад LabView-програмістам
Кілька корисних порад для LabVIEW-програмістів, які можуть знадобитися також і програмістам-початківцям, що працюють в будь-якому іншому середовищі. Для зручності самі поради виділено жирним шрифтом, а далі йде коротке пояснення.
Вчіться малювати блок-схеми. Чесно кажучи, сучасні студенти часто не розуміють для чого потрібно вміти малювати графічний алгоритм, дехто навіть не може описати послідовність дій словесно. Та, не маючи чіткого уявлення про те, як повинна працювати програма, братися за її реалізацію не надто далекоглядно. Дехто звик, що технічне завдання на програмний продукт повинен ставити замовник, але досвід показує, що найчастіше замовник може лише в загальних рисах описати, що саме йому потрібно, а далі спроектувати і запропонувати рішення доводиться уже виконавцеві.
Фрагменти програми перевіряйте окремо. Запам’ятати всі нюанси використання того чи іншого вузла здатен далеко не кожен висококласний фахівець. Але знання кількох принципів звільняє від необхідності вивчати тисячі фактів, тож окремі частини програми, у реалізації яких Ви дещо сумніваєтеся, доцільно детальніше розглянути у вигляді окремого мікропроекту. І переносити код до основної програми варто лише тоді, коли відокремлений він працює бездоганно.
Один раз зроби – багато разів використовуй. Окремі більш-менш самостійні ділянки коду варто зберігати в окремих файлах як підпрограми і використовувати їх в інших проектах. Звісно, може статися так, що ці ділянки більше ніколи не знадобляться, але часто дуже багато часу займає саме повторне написання уже колись реалізованих функцій.
Називайте речі своїми іменами. Як сказав колись класик, “програмування – це мистецтво вигадувати нові імена”, тож не варто залишати у своїх проектах стандартні знеособлені назви типу Numeric 3 або Button 1 – зрозуміти для чого використовувався той чи інший елемент трохи згодом буде непросто. Імена функціям, змінним, регуляторам та індикаторам варто давати такі, щоб із самої назви вже було зрозуміло призначення елемента програми. Те ж саме стосується і іменування файлів. Погодьтесь, назва файлу “Untitled 123.vi” мало що говорить про його вміст.
Коментуйте! Така корисна річ як коментарі не даремно присутня у LabVIEW, адже навіть очевидний зараз алгоритм за кілька років може здаватися дещо заплутаним, не кажучи вже про те, що програму, можливо, доведеться підтримувати і переробляти іншій людині. Тому коментування неочевидних частин блок-діаграми, посилання на використані запозичені функції, окремих станів структури Case, циклів з умовою – просто обов’язкове.
Дотримуйтесь порядку. Переважно намагання добитися того, аби блок-діаграма виглядала гарно, сприймається студентами як марна трата часу (іноді навіть як знущання). Та насправді варто привчити себе до порядку у програмі і відшукати помилку і ній стане набагато простіше. У комбінації з попередніми двома порадами це здатне зробити Ваш код зрозумілим для будь-кого.
Групуйте схожі візуальні компоненти. Якщо на лицьовій панелі Вашого віртуального приладу планується наявність великої кількості кнопок та індикаторів, то варто поєднати ті з них, що стосуються якоїсь певної частини, у кластер, або навіть візуально згрупувати за допомогою елементів з палітри Decorations.
Дотримуйтеся розмірів. Хорошим тоном вважається можливість розмістити всю блок-діагарму на одному екрані Вашого монітора, щоб не довелося використовувати прокрутку для її перегляду. Це дає можливість бачити, звідки беруться дані і куди вони потрапляють у результаті виконання програми. Аналогічного правила слід дотримуватися і при проектуванні передньої панелі віртуального приладу. Тільки при цьому варто мати на увазі, що роздільна здатність дисплею ПЕОМ, на якій експлуатуватимуть Ваш проект, може бути меншою, аніж у Вашого ПК. Тому, якщо є така можливість, намагайтеся, щоб передня панель була компактною.
І наостанок запам’ятайте наступну річ: суттєво зекономити час допоможе знання розповсюджених сполучень “гарячих клавіш” та використання контекстного меню “Create”, “Replace”, тощо.
17. Advanced File Functions у LabVIEW
У «Робота з файлами у LabVIEW» ми розглянули функції, призначені для роботи із файлами з середовища LabVIEW, зараз ще трохи користної інформації про вузли із палітри “Advanced File Functions”, які дозволяють реалізувати роботу з файлами на більш низькому рівні і тому є більш гнучкими у налаштуванні.
Інформацію про вузли спробую подати у дещо іншому форматі, оскільки, як показує досвід, багато хто не може самостійно розібратися із призначенням тих чи інших терміналів. Сподіваюся, так буде зрозуміліше.
Отож, першим вузлом у палітрі “Advanced File Functions” є вузол File Dialog, призначений, як видно із назви, для відображення відповідного діалогового вікна вибору файлу.
Вузол File Dialog у LabVIEW
На рисунку наведено зображення із допомоги LabVIEW, тому далі коротко ознайомимося із призначенням терміналів даного вузла.
Термінал start path служить для задання початкового шляху, який відображатиметься у діалоговому вікні. Це користно у тих випадках, якщо програма, наприклад, повинна працювати із файлами, що розташовані у конкретній директорії.
Термінал select mode служить для вибору режиму діалогового вікна, можливі значення константи (відповідні режими наведено у лівій частині рисунку). Можливими режимами діалогового вікна є (в порядку, у якому вони наведені на рисунку): існуючий файл, новий файл, новий чи існуючий файл, існуюяа директорія (папка), нова директорія, нова чи існуюча директорія, а також чотири режими, що використовуються для роботи із LLB – спеціалізованими файловими “контейнерами” LabVIEW.
Термінали default name та pattern служать для задання імені файлу за замовчуванням, а також шаблону імен (наприклад для роботи іх текстовими файлами можна використовувати шаблон *.txt і тоді файли інших типів у діалоговому вікні відображені не будуть).
Термінал path повертає шлях до обраного файлу, а логічні термінали exists і cancelled набувають значення “істина” у тому випадку, коли файл існує, або ж користувач натиснув у діалоговому вікні кнопку “Відмінити” (Cancel). Робота з цими терміналами дозволяє, наприклад, просити підтвердження на заміну існуючого файлу і уникнути аварійного завершення програми якщо користувач закрив діалогове вікно, нічого не вибравши.
Два термінали, які на рисунку знаходяться у верхній частині вузла, називаються prompt і button label та служать для задання відповідно заголовку діалогового вікна та надпису на кнопці вибору файлу. Термінали в нижній частині вузла (dialog type та pattern label) служать для задання типу діалогу та текстової назви шаблону.
Вузли Open File та New File служать відповідно для відкривання та створення файлів, шлях до яких вказується за допомогою терміналу file path (в загальному випадку цей термінал слід підключити до вузла File Dialog).
Опис вузлів Open File та New File
Стосовно інших терміналів, зображених на рисунку, їх призначення загалом зрозуміле. Так термінали error in та error out використовуються для передачі помилок через відповідний кластер для їх подальшої обробки. Термінал refnum служить для передавання ідентифікатора файлу до наступного вузла (наприклад, для здійснення запису інформації у файл).
Термінал open mode задає режим відкривання файлу (читання/запис, тільки читання, тільки запис, перезапис), термінал overwrite дозволяє здійснювати перезапис існуючого файлу.
Вузли EOF та Seek у LabVIEW
Вузли EOF та Seek призначені для пошуку даних всередині файлу. Перший з них дозволяє знайти або встановити позицію маркера кінця файлу (EOF, англ. End of File). Якщо необхідно просто визначити позицію маркера, то використовується термінал offset, якщо позицію слід задати, то використовуються термінали pos offset та pos mode, причому перший задає зміщення у байтах від вказаної точки, а другий, власне, дозволяє обрати “точку відліку” (0- початок файлу, 1 – кінець файлу, 2 – поточна позиція).
Вузол Flush File виконує фізичний запис усіх файлових буферів на диск (як правило, вміст файлу знаходиться у буфері і записується на диск при закриванні файлу, або коли буфер заповнюється, використання вузла Flush дозволяє здійснити примусовий запис).
Функції Lock Range та Access Rights у LabVIEW
Вузол Lock Range дозволяє заблокувати діапазон адрес всередині файлу, захистивши їх від запису, наприклад, якщо у файлі міститься важлива інформація, та дані, які слід змінити, то критичний діапазон може бути захищено за допомогою цієї функції. Призначення терміналів pos mode та pos offset аналогічне до їх ролі у вузлі Seek. Термінал count задає кількість байт, які необхідно заблокувати.
Вузол Access Rights дозволяє отримати та змінити права доступу до файлу, а також власника файлу (owner) та його групу (group). Для операційних систем Windows ця функція дозволяє лише змінювати права на запис файлу.
Вузол Path Type дозволяє дізнатися тип шляху, поданого на вхідний термінал: абсолютний, відносний, чи “не шлях” (Not a Path). Вузол Type and Creator теж не працює у ОС Windows, дозволяючи лише отримати тип файлу для тих розширень, які підтримуються LabVIEW (це *.vi та *.llb).
Наступні вузли палітри “Advanced File Functions” працюють із файловою системою і дозволяють здійснювати копіювання, видалення, переміщення і перейменування файлів та директорій, а також отримувати інформацію про розміри файлів, каталогів та логічних дисків. Детального пояснення призначення терміналів цих вузлів не потребує.
