|
Модераторы: Се ля ви |
|
LeonidPr |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Всем привет.
Временами приходится писать десктопные программки для опроса того или иного разрабатываемого девайса. Когда девайс один (или однотипные на одной шине RS-485 например) все как-то легко и просто. Но каждый раз понимаю, что пишу нечно нерасширяемое и одноразовое. Задачка простая, есть кучка интерфейсов и протоколов (например RS-485, Ethernet и может CAN) ну и протокол к примеру ModBus и какой-нить CanOpen. У устройства есть некие параметры (уставки, текущие измеряемые величины и т.п.) Надо вычитывать все это, логировать и возможно делать некую визуализацию. В приниципе то, что делают SCADA системы, только в урезанном формате. Вот и думаю, как все это хранится внутри? Каждый параметр который мы считываем из устройств или пишем в него можно описать структуркой навроде Variant типа. Т.е. универсальное такое хранилище, которое знает что в нем сейчас (int, float или что-то еще). А теперь я так понимаю надо делать какое-то централизованное хранилище всего этого? Что бы потом остальные части (логгер, GUI и т.п.) могли из него брать или писать. Так вот вопрос как организовать такое хранилище? Может это должна быть какая-то RAM субд? Которая для ускорения работы не использует накопитель. Вторая проблема это то, что к примеру какие-то из параметров мы не только считываем, но и записываем. Пусть будет некий порог тока или напряжения, при превышении которого устройство должно выдать сигнал. Так вот надо как-то привязать этот параметр (в хранилище) к модулю, который знает как и куда его записать. Если можете посоветовать литературу буду благодарен, возможно есть паттерны полезные для организации подобных систем? Реалтайм пока даже не рассматриваю понять бы как всю эту кухню организовать. --------------------
pkunzip.zip |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15708 Регистрация: 24.3.2004 Репутация: нет Всего: 537 |
Вопрос совершенно непонятен, в чем вообще проблема? Проблема как представлять в программе код работающий с разными протоколами? Как сохранять данные в базу? Как получить единый програмный интерфейс для работы с разными протоколами?
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
LeonidPr |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
Не совсем так.
Вопрос как организовать централизованный доступ к некоему набору параметров для всех модулей программы, При этом для некоторых из них, если какой-то из модулей изменяет параметр, то другие модули должны об этом узнать и обработать это событие. Ну и параметры и связь их с модулями конечно делать динамическими, например задавая в неком конфиге, что бы при старте к примеру программа вычитывала его и создавала конфигурацию для работы. --------------------
pkunzip.zip |
|||
|
||||
LSD |
|
|||
Leprechaun Software Developer Профиль Группа: Модератор Сообщений: 15708 Регистрация: 24.3.2004 Репутация: нет Всего: 537 |
Если это все в рамках одного приложения:
По поводу подписки только на интересующие типы сообщений: если сообщений мало (конфиги обычно не так часто меняются), то можно рассылать всё всем, а уже в каждом конкретном модуле в обраточике реагировать только на интересующие обновления. Если событий много и не хочется слать всё всем, то надо добавлять фильтры по типам конфигов, в случае древовидных конфигураций (наподобие XML или JSON) можно фильтровать по поддереву, можно добавлять теги, сложно предложить что-то конкретное не зная структуры и характера данных. Или каждый модуль может предоставить функцию которая будет говорить интересен ли данный апдейт данному модулю. Но это почти то же самое, что и первый вариант. Если это несколько независимых приложений то можно делать тоже самое, только используюя некую messaging system. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
LeonidPr |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 220 Регистрация: 17.2.2012 Где: г. Чебоксары Репутация: нет Всего: 1 |
LSD, спасибо за развернутый ответ!
Что-то примерно такое в голове и крутится. Насчет подписки на события вот не подумал, надо будет поразбираться. --------------------
pkunzip.zip |
|||
|
||||
Правила форума "Системный анализ, проектирование и UML" | |
|
Форум "Системный анализ, проектирование и UML" предназначен для обсуждения вопросов, так или иначе связанных с этапами жизненного цикла автоматизированных (программных, информационных, автоматических) систем: • предпроектные обследования объектов автоматизации; • разработка концепции создания систем; • моделирование бизнес-процессов (в т.ч. на UML); • проектирование архитектуры систем; • управление проектами; • управление качеством; • CASE-средства; • реинжиниринг. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Системный анализ, проектирование и UML | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |