Создание программного обеспечения, управляемого несколькими устройствамиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Создание программного обеспечения, управляемого несколькими устройствами

Сообщение Anonymous »

Я не знаю, как назвать свой вопрос, но первое, что пришло мне на ум, — это «программное обеспечение для нескольких устройств».

Я Студент-электронщик, интересующийся управлением приборами. Использование C# для этой цели и базовые знания приложений форм C#.
Кроме того, существует стандартный набор команд, разработанный IVI Foundation, под названием «Команды SCPI». Это простой подход к управлению прибором, и вы не можете написать код SCPI для полнофункциональной системы управления прибором. Здесь роль играют «водители». Большинство производителей предоставляют драйверы устройств при покупке их продукта. С помощью этого файла драйвера вы можете создавать полнофункциональные и быстро реагирующие программы. Также вы можете разработать собственный драйвер для своих нужд. Но хотя SCPI является стандартным для всех типов инструментов, некоторые множественные команды начинают создавать проблемы. Например, вы пишете код для бренда A, но этот код не работает для того же устройства бренда B, которое делает то же самое с устройством бренда A.

Основная цель — создание программного обеспечения для расчета потерь в кабеле для нескольких коаксиальных кабелей. Для выполнения этой задачи необходимо использовать анализатор спектра и генератор радиочастотных сигналов. У нас есть пара анализаторов спектра и множество генераторов сигналов.

С помощью одной программы мы можем управлять всеми нашими устройствами. Это моя проблема.

Я хочу создать адаптивное программное обеспечение, которое будет работать со всеми нашими анализаторами спектра и генераторами сигналов. Как я могу это сделать?
Во-первых, я думаю, что могу создать драйвер для каждого устройства, и основная программа выберет правильный драйвер, запросив у пользователя подсказку или что-то в этом роде. Но я не знаю, как этого добиться.
Во-вторых, я могу написать основную часть программного обеспечения для каждой комбинации устройств и включить эту часть в файл .txt в основное программное обеспечение во время выполнения. Я знаю, что это нубский подход, но думаю, что смогу сделать это без проблем. И я ничего не знаю о первом подходе.
В-третьих, я могу написать все команды устройств для каждого из них в программе и использовать условия if для выбора между случаями. Или конструкция корпуса переключателя. Это единственный способ. Если я не могу сделать это с другими вариантами.

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

Предположим, что у вас есть генератор сигналов. Вы хотите выбрать частоту 10 МГц. Это Agilent 33120A. Чтобы добиться этого с помощью компьютера, вам необходимо отправить эту команду на устройство.

Код: Выделить всё

SOUR:FREQ 10 MHZ
После этого устройство устанавливает частоту 10 МГц. Предположим, у вас есть генератор сигналов другого производителя, и чтобы добиться того же результата с этим устройством, вам, возможно, придется отправить его;

Код: Выделить всё

SENS:FREQ 10 MHZ
Эти два выполняют одно и то же, но часть SOUR и SENS зависит от устройства.

Чтобы создать программу с C# мы используем API для связи с устройствами. Если вы используете протокол GPIB, имя API — NI488.2. Если вы используете RS232, вы можете использовать VISA API и т. д. Кстати, наш протокол — GPIB.
При использовании GPIB мы используем оболочки для простой интеграции команд SCPI со средой C#. Например, после добавления GPIB-библиотек в ссылки вы можете использовать это для отправки команд через интерфейс форм C#;

Код: Выделить всё

ibwrt("SOUR:FREQ 10 MHZ", "SOUR:FREQ 10 MHZ".Length);
Теперь я подошел к самой большой проблеме. Как я могу использовать эту часть кода для создания успешной адаптивной программы? Например, оператор использует генератор сигналов Agilent и анализатор спектра Rohde&Schwarz. Другой оператор использует генератор сигналов IFR и анализатор спектра HP.
Но они используют одно и то же программное обеспечение. Генератор сигналов IFR может использовать для работы «SENS:FREQ».

Перед началом операции может появиться всплывающее окно с запросом драйверов устройств. Я не знаю. Они первыми пришли мне на ум. Но если бы вы были на моем месте, как бы вы этого достигли? И если вы выберете вариант, пожалуйста, скажите мне, как это сделать. Я застрял в этом. И сейчас в программе около 2000 строк кода. "ibwrt" не единственная часть программы, ни "SENS:FREQ"...
Для других задач есть еще "SENS:BAND:RES", "INIT:CONT" и т.д. Это не важно.

Надеюсь, вы поняли мой вопрос, потому что я знаю, что не смогу ответить правильно.

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

Спасибо.

TL; DR

Мне нужно отправлять команды для каждого устройства через интерфейс C# Forms. Я имею в виду, что у устройств есть свои специальные команды, и мне нужно создать одно программное обеспечение, которое сможет управлять каждым устройством по выбору пользователя, вместо того, чтобы создавать программное обеспечение для каждого устройства.

Подробнее здесь: https://stackoverflow.com/questions/253 ... e-software
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»