Выбор технологии .Net для множественного доступа к одному USB-устройству - PullRequest
2 голосов
/ 15 октября 2011

У меня есть приложение, которое в настоящее время имеет три модуля / слоя; GUI, слой логики и вычислений и слой, который обеспечивает доступ к USB-устройству и его данным (ниже это USB-драйвер, но он не является частью нашего исходного кода). USB-устройство - это ресурс, который может использоваться одновременно только одним экземпляром программного обеспечения.

Это работало нормально, но теперь мы хотим, чтобы пользователь мог запускать несколько экземпляров приложения на одном и том же USB-устройстве. Поэтому теперь нам придется разделить самый нижний уровень (доступ к USB-устройству) между экземплярами программного обеспечения (так как USB-драйвер не может быть общим). Вы можете видеть это так, как я хочу создать системный синглтон самого нижнего слоя ...

Какие технологии или шаблоны .Net лучше всего подходят для решения этой проблемы?

Мы используем .Net 4, WPF и C #.

РЕДАКТИРОВАТЬ: связь с USB-устройством требует процедуры подключения, которая включает в себя калибровку оборудования и на самом деле это занимает некоторое время (секунды). Таким образом, подключение и отключение для каждого вызова не будет вариант. В случае проблем с производительностью мне нужно будет подключиться один раз, а затем оставить это соединение открытым.

Ответы [ 2 ]

1 голос
/ 16 октября 2011

Вам нужно посмотреть, используя Mutex.Контролируйте доступ к USB-части кода, чтобы его мог использовать только один держатель мьютекса.

0 голосов
/ 16 октября 2011

Используйте ровно один процесс, который напрямую обращается к USB-устройству - это может быть, например, служба Windows. Все приложения обращаются к этому единому процессу, а не напрямую к USB-устройству ...

Для связи с другими процессами вы можете использовать любую технологию IPC, хотя, если все ваши процессы находятся на одной машине / системе, тогда я бы рекомендовал использовать комбинацию Mutex и разделяемой памяти (через MemoryMappedFile), поскольку это самый быстрый механизм IPC ...

ЕСЛИ производительность не является большой проблемой, тогда используйте WCF, потому что это дает вам хороший интерфейс и возможность разрешать доступ через ЛВС в случае необходимости ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...