Файлы настроек - редактирование вручную при помощи блокнота

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
Ответить
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Файлы настроек - редактирование вручную при помощи блокнота

Сообщение Kosist »

Уважаемые форумчане!

Обращаюсь к вам с таким вопросом. Представьте, что у вас есть файл настроек, содержащий информацию, ну скажем, о конфигурации нескольких устройств. Структура его такова: есть массив, содержащий кластер, в котором хранятся настройки для устройства. Соответственно, каждый элемент массива - это настройки для отдельных устройств. Сам кластер тоже может содержать массивы чего-то, может, даже, тоже кластеров. Ну или что-то в этом роде; т.е. конфигурации многоуровневые, и все такое.

Задача состоит в следующем - как сохранить эти настройки, в каком формате, чтобы юзер мог редактировать его вручную? Понятно, что вы скажет сразу об XML формате. Но если там куча вложений, и сложная иерархия, то сразу "въехать" в ее структуру, и что-то менять "руками" - непростая задача, особенно для обычного юзера.

В самом :labview: , в :vi: ках данные хранятся в кластерах, а затем записывают в файл конфигурации. Понятно, что лучше делать их изменение в специальных :vi: , но как можно упростить эту задачу, и позволить редактировать их вручную, при помощи блокнота, грубо говоря?

У меня была идея: парсить или инфу с кластера, или с XML-файла, и записывать в таком виде (например)

MainSettings.DAQSettings.SelectedChannel = a1-a8;
MainSettings.DAQSettings.SampleRate = 1000;
MainSettings.Filtering = Off;
MainSettings.Timer = 300

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

Но тогда появляется новый вопрос - как хранить тип переменных? Где хранить? И стоит ли вообще хранить его? Как "спарсить" этот файл обратно? А если юзеру взбредет в голову удалить элемент вообще? А в :vi: ведь будет "физически" заданный кластер, в который будут писаться данные. Что произойдет тогда?

Стоит ли такая идея реализации, или есть другие, более "элегантные" способы? Знаю, например, что в текстовых языках для настроек применяют JSON или даже YAML разметку, но применение их в :labview: на форумах NI не нашел...

Озвучьте, пожалуйста, свои размышления по этому поводу - может, можно будет сгенерировать какую-то интересную идею :wink:

Заранее спасибо :thank:
Мы делили апельсин - много наших полегло...
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Файлы настроек - редактирование вручную при помощи блокн

Сообщение Andrew Lunev »

Я в своих проектах использую подход с XML и интерфейсом ввода, написанным на LabView. Примерно так, как сделано в стандартном шаблоне LabView "Continuous Measurement and Logging (NI-DAQmx)".
Считаю, что править напрямую файл, какого бы простого формата он не был не только неудобно, но и недопустимо. Главная проблема, что пользователь может изменить файл как угодно и сделать программу совершенно нерабочей и даже сломать оборудование. Видел несколько подобных программ с таким подходом, где данные хранились в текстовом файле и правились в блокноте. Пользователь поменял координаты и поставил точку вместо запятой, после запуска система просто сломалась, так как поехала не в те координаты. Так же были случаи, когда просто лишний пробел или перевод строки делали систему неработоспособной.
Когда у вас создан интерфейс для изменения настроек, то он отображает только необходимые настройки и в удобном формате и программа может проверить вводимые данные на корректность и уж точно не повредит структуру файла лишним пробелом. Да и требования к уровню компетенции пользователя ниже, так как поменять данные в специальной форме намного проще, чем бегать по документу и править в нем текст. Все-таки далеко не все пользователи наших программ являются программистами.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Файлы настроек - редактирование вручную при помощи блокн

Сообщение dadreamer »

А вкладку Configuration File VIs смотрели? Там есть :vi: для работы с INI-файлами, это довольно распространенный способ хранения данных.
ESeid

Автор
advanced
advanced
Сообщения: 150
Зарегистрирован: 30 мар 2011, 22:41
Награды: 1
Версия LabVIEW: 8.2-2013
Контактная информация:

Re: Файлы настроек - редактирование вручную при помощи блокн

Сообщение ESeid »

Kosist, категорически согласен с Andrew Lunev в том, что позволять пользователю лазить в SETUP-файлы - крайне неосторожно. У меня накоплен 3-х летний опыт, частично печальный, по непрерывному восстановлению пследствий такого вмешательства клиентов в работу инструмента. С тех пор поступаю так: начальные установки загружаются из SETUP-файла автоматически, в процессе работы клиент меняет их, как хочет, но в разрешенных пределах в рамках работы инструмента. После их сохранения или при штатном закрытии инструмента они также автоматически сохраняются в SETUP-файл. При следующем открытии инструмента они загружаются автоматически, позволяя продолжить работу с точки останова. Сам файл - бинарный, четко структурированный, позволяет редактировать себя, как указал Andrew Lunev, через программу-редактор, поставляемый только лично проверенным и особо доверенным пользоватрелям. :wink:
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Файлы настроек - редактирование вручную при помощи блокн

Сообщение Kosist »

Спасибо всем за ответы! :thank: Да, давать юзеру :crazy: редактировать файл конфигурации вручную - дело опасное; но иногда и нужное.. Будем думать :think: ))
Мы делили апельсин - много наших полегло...
Stkn
assistant
assistant
Сообщения: 128
Зарегистрирован: 25 янв 2009, 11:08
Версия LabVIEW: 2014

Re: Файлы настроек - редактирование вручную при помощи блокн

Сообщение Stkn »

Мне нравится эта библиотека http://mooregoodideas.com/readwrite-anything-vis/
Тут объединяются простота программного чтения/записи подхода с XML и читабельность файла с помощью текстовых редакторов.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Файлы настроек - редактирование вручную при помощи блокн

Сообщение dadreamer »

В OpenG есть целая палитра для работы с INI-файлами: OpenG Variant Configuration File, это проще для редактирования вручную, чем XML. Там нет тэгов, а лишь имена секций и поля "Параметр=Значение", поэтому вероятность ошибки уменьшается. Да и парсинг идёт быстрее, что важно, т.к. Xerces в :labview: работает медленно. Ещё один аргумент: сам :labview: использует такой способ хранения настроек (LabVIEW.ini в корневой директории LabVIEW), и пользователям иногда приходится вручную менять те или иные ключи, например, для вывода отладочной информации.
Вложения
14-04-2014 12-35-29.jpg
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Общие»