У меня 8-битная плата цифрового вывода, используемая для управления устройством.Каждому внешнему устройству требуется один бит, и оно управляется другим приложением.Я написал библиотеку классов и класс DigitalOutputPort (VB 2010), который охватывает драйвер, который управляет 8-битным портом.Каждое приложение устройства использует этот класс, создавая свой собственный экземпляр.
Чтобы установить бит порта цифрового выхода, мне нужно записать байт в этот порт: этот байт является битовой маской для всех 8 битвместе: чтобы установить HIGH номер бита 0 - 1 - 2, мне нужно записать 7 в порт, чтобы установить HIGH все 8 бит, мне нужно записать 256 и т. д. ...
Все работаетхорошо, когда только одно приложение использует класс.Но если два приложения хотят установить свой собственный бит на этом порту, у меня возникают проблемы, потому что я не знаю текущего значения всех битов, установленных другими приложениями (драйвер не имеет такой функции), и, конечно, я не могу изменить один битбез изменения всех остальных (если я не знаю текущую битовую маску)
Обычно это выглядит как типичный случай обмена данными между двумя приложениями, и моей первой идеей было записать текущее значение порта вфайл на диске, где все приложения могут получить доступ и прочитать его.Но это кажется слишком тяжелым для этой простой проблемы.Более того, это также может создать проблему производительности и надежности.
Тогда я подумал об использовании общего поля (свойства) в классе.Совместно используемое поле сохраняет свое значение между всеми экземплярами класса: но верно ли это и для экземпляров из разных приложений?Я не могу найти больше информации об этом последнем пункте, я должен сделать тот же тест.
Третий способ - создать только ОДИН экземпляр класса DigitalOutputPort, один для всех приложений.Первое приложение, которому это нужно, создаст объект, все остальные приложения будут использовать уже созданный объект.Мне нравится больше других, но я не знаю, можно ли и как это сделать.
Какой, по вашему мнению, должен быть правильный подход?
Спасибо, что ответили.