Уважаемые форумчане!
Обращаюсь к вам с таким вопросом. Представьте, что у вас есть файл настроек, содержащий информацию, ну скажем, о конфигурации нескольких устройств. Структура его такова: есть массив, содержащий кластер, в котором хранятся настройки для устройства. Соответственно, каждый элемент массива - это настройки для отдельных устройств. Сам кластер тоже может содержать массивы чего-то, может, даже, тоже кластеров. Ну или что-то в этом роде; т.е. конфигурации многоуровневые, и все такое.
Задача состоит в следующем - как сохранить эти настройки, в каком формате, чтобы юзер мог редактировать его вручную? Понятно, что вы скажет сразу об XML формате. Но если там куча вложений, и сложная иерархия, то сразу "въехать" в ее структуру, и что-то менять "руками" - непростая задача, особенно для обычного юзера.
В самом , в ках данные хранятся в кластерах, а затем записывают в файл конфигурации. Понятно, что лучше делать их изменение в специальных , но как можно упростить эту задачу, и позволить редактировать их вручную, при помощи блокнота, грубо говоря?
У меня была идея: парсить или инфу с кластера, или с XML-файла, и записывать в таком виде (например)
MainSettings.DAQSettings.SelectedChannel = a1-a8;
MainSettings.DAQSettings.SampleRate = 1000;
MainSettings.Filtering = Off;
MainSettings.Timer = 300
и т.д. Т.е. такой вид, мне кажется, будет удобочитаем, и понятным. Степень вложенности отображается разделением переменных точками, и т.д.
Но тогда появляется новый вопрос - как хранить тип переменных? Где хранить? И стоит ли вообще хранить его? Как "спарсить" этот файл обратно? А если юзеру взбредет в голову удалить элемент вообще? А в ведь будет "физически" заданный кластер, в который будут писаться данные. Что произойдет тогда?
Стоит ли такая идея реализации, или есть другие, более "элегантные" способы? Знаю, например, что в текстовых языках для настроек применяют JSON или даже YAML разметку, но применение их в на форумах NI не нашел...
Озвучьте, пожалуйста, свои размышления по этому поводу - может, можно будет сгенерировать какую-то интересную идею
Заранее спасибо
Файлы настроек - редактирование вручную при помощи блокнота
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Файлы настроек - редактирование вручную при помощи блокнота
Мы делили апельсин - много наших полегло...
-
Andrew Lunev
- VIP
- Сообщения: 957
- Зарегистрирован: 11 дек 2010, 12:31
- Награды: 2
- Версия LabVIEW: 2014-2021
- Откуда: Москва
- Благодарил (а): 4 раза
- Поблагодарили: 10 раз
Re: Файлы настроек - редактирование вручную при помощи блокн
Я в своих проектах использую подход с XML и интерфейсом ввода, написанным на LabView. Примерно так, как сделано в стандартном шаблоне LabView "Continuous Measurement and Logging (NI-DAQmx)".
Считаю, что править напрямую файл, какого бы простого формата он не был не только неудобно, но и недопустимо. Главная проблема, что пользователь может изменить файл как угодно и сделать программу совершенно нерабочей и даже сломать оборудование. Видел несколько подобных программ с таким подходом, где данные хранились в текстовом файле и правились в блокноте. Пользователь поменял координаты и поставил точку вместо запятой, после запуска система просто сломалась, так как поехала не в те координаты. Так же были случаи, когда просто лишний пробел или перевод строки делали систему неработоспособной.
Когда у вас создан интерфейс для изменения настроек, то он отображает только необходимые настройки и в удобном формате и программа может проверить вводимые данные на корректность и уж точно не повредит структуру файла лишним пробелом. Да и требования к уровню компетенции пользователя ниже, так как поменять данные в специальной форме намного проще, чем бегать по документу и править в нем текст. Все-таки далеко не все пользователи наших программ являются программистами.
Считаю, что править напрямую файл, какого бы простого формата он не был не только неудобно, но и недопустимо. Главная проблема, что пользователь может изменить файл как угодно и сделать программу совершенно нерабочей и даже сломать оборудование. Видел несколько подобных программ с таким подходом, где данные хранились в текстовом файле и правились в блокноте. Пользователь поменял координаты и поставил точку вместо запятой, после запуска система просто сломалась, так как поехала не в те координаты. Так же были случаи, когда просто лишний пробел или перевод строки делали систему неработоспособной.
Когда у вас создан интерфейс для изменения настроек, то он отображает только необходимые настройки и в удобном формате и программа может проверить вводимые данные на корректность и уж точно не повредит структуру файла лишним пробелом. Да и требования к уровню компетенции пользователя ниже, так как поменять данные в специальной форме намного проще, чем бегать по документу и править в нем текст. Все-таки далеко не все пользователи наших программ являются программистами.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Файлы настроек - редактирование вручную при помощи блокн
А вкладку Configuration File VIs смотрели? Там есть для работы с INI-файлами, это довольно распространенный способ хранения данных.
-
- advanced
- Сообщения: 150
- Зарегистрирован: 30 мар 2011, 22:41
- Награды: 1
- Версия LabVIEW: 8.2-2013
- Контактная информация:
Re: Файлы настроек - редактирование вручную при помощи блокн
Kosist, категорически согласен с Andrew Lunev в том, что позволять пользователю лазить в SETUP-файлы - крайне неосторожно. У меня накоплен 3-х летний опыт, частично печальный, по непрерывному восстановлению пследствий такого вмешательства клиентов в работу инструмента. С тех пор поступаю так: начальные установки загружаются из SETUP-файла автоматически, в процессе работы клиент меняет их, как хочет, но в разрешенных пределах в рамках работы инструмента. После их сохранения или при штатном закрытии инструмента они также автоматически сохраняются в SETUP-файл. При следующем открытии инструмента они загружаются автоматически, позволяя продолжить работу с точки останова. Сам файл - бинарный, четко структурированный, позволяет редактировать себя, как указал Andrew Lunev, через программу-редактор, поставляемый только лично проверенным и особо доверенным пользоватрелям.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Файлы настроек - редактирование вручную при помощи блокн
Спасибо всем за ответы! Да, давать юзеру редактировать файл конфигурации вручную - дело опасное; но иногда и нужное.. Будем думать ))
Мы делили апельсин - много наших полегло...
Re: Файлы настроек - редактирование вручную при помощи блокн
Мне нравится эта библиотека http://mooregoodideas.com/readwrite-anything-vis/
Тут объединяются простота программного чтения/записи подхода с XML и читабельность файла с помощью текстовых редакторов.
Тут объединяются простота программного чтения/записи подхода с XML и читабельность файла с помощью текстовых редакторов.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Файлы настроек - редактирование вручную при помощи блокн
В OpenG есть целая палитра для работы с INI-файлами: OpenG Variant Configuration File, это проще для редактирования вручную, чем XML. Там нет тэгов, а лишь имена секций и поля "Параметр=Значение", поэтому вероятность ошибки уменьшается. Да и парсинг идёт быстрее, что важно, т.к. Xerces в работает медленно. Ещё один аргумент: сам использует такой способ хранения настроек (LabVIEW.ini в корневой директории LabVIEW), и пользователям иногда приходится вручную менять те или иные ключи, например, для вывода отладочной информации.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 4 Ответы
- 274 Просмотры
-
Последнее сообщение Юрий
-
- 7 Ответы
- 1062 Просмотры
-
Последнее сообщение Artem.spb
-
- 23 Ответы
- 4627 Просмотры
-
Последнее сообщение maxim_MA
-
- 6 Ответы
- 1645 Просмотры
-
Последнее сообщение ladik
-
- 38 Ответы
- 13304 Просмотры
-
Последнее сообщение AndreyDmitriev