Как смоделировать взаимодействие SerialPort для тестирования?

Я собираюсь начать разработку небольшого приложения (С#), которое общается с ПЛК и модулем тестирования через последовательные порты - это мое первое предприятие в этой области.

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

В зависимости от содержимого этой строки я могу прослушивать сигнал от ПЛК...

Это все новое для меня, поэтому на данный момент я просто изучаю System.IO.Ports.SerialPort; отступление: есть ли продукты третьей части, чем упростить взаимодействие с Serial Port, или встроенные классы так же хорошо, как вы получите? Я думаю о простоте использования, а не о лучших функциях.

Однако за несколько недель до того, как оборудование будет доступно для разработки и тестирования, мне было интересно, как как смоделировать связь с/из последовательного порта, чтобы я мог начать разработку моего приложения?

[Я еще не знаю, как должны взаимодействовать ПЛК и ПК - я понимаю, что это будет бинарный, а не текстовый, но на данный момент это все, что я знаю.]

Ответы

Ответ 1

Отвлеките свой последовательный порт за интерфейс, чтобы вы могли закодировать приложение против интерфейса, а затем протестировать его с помощью "поддельной" реализации. Когда у вас есть аппаратное обеспечение для реальной вещи, вы можете кодировать "реальную" реализацию интерфейса и заменять фальшивый.

Итак, например, у вас будет интерфейс

public interface ISerialComms
{
    void SendMessage(string message)
}

и вы скопировали бы свое приложение против этого интерфейса с помощью поддельной реализации:

public class FakeSerialComms : ISerialComms
{
    public void SendMessage(string message)
    {
        //some implementation
    }
}

Надеюсь, что это поможет!

Ответ 2

У меня был некоторый успех в прошлом, используя com0com.

Ответ 3

Есть две части программного обеспечения, которые я нашел бесценными при работе с последовательным портом.

Бесплатный монитор последовательного порта

http://www.serial-port-monitor.com

Несмотря на дрянное имя, на самом деле это очень полезно. Обратите внимание, что вы должны прекратить прослушивание своего порта, если вы хотите отключить USB-Serial-конвертер. В противном случае это может привести к сбою (ну... подождите бесконечно на выходе, что раздражает). Он не должен ставить себя в середину последовательного соединения, чтобы обнюхать данные. Он контролирует IO с помощью Win32 API.

Инструменты серийного порта Franson

http://franson.com/serialtools/

Или.. любое программное обеспечение петли. Там много. Это позволяет отправлять данные и получать их в рамках программного обеспечения. Если вы в конечном итоге выполняете какую-либо работу GPS, у Franson также есть хороший GPS-симулятор, поэтому вам не нужно сидеть вне времени, чтобы отлаживать код.


Наконец, если у вас было достаточно со встроенным серийным классом и его ужасающими недостатками, то вам нужна замена, и переход прямо к API Win32 займет навсегда.

CommStudio

Я нашел CommStudio, чтобы быть абсолютно твердым. Совершенно откровенно, потратив 5 месяцев на изучение и покупку других опций, это единственный, который отлично работает со съемными USB-адаптерами. Все другие решения имеют проблемы, когда устройство снова подключено. Вы можете загрузить их бесплатную версию "Экспресс" здесь: http://www.componentsource.com/products/commstudio/downloads.html?rv=42917 p >

Ответ 4

Существует еще один ресурс, который эмулирует последовательные порты для Windows, если кто-то еще ищет приличные средства последовательной отладки.

32-разрядная версия бесплатна и выглядит довольно прилично. Он называется эмулятор виртуальных последовательных портов.

Ответ 5

Мне нравится, что Дэвид отвечает выше, но если вы хотите выполнить интеграционные тесты и фактически протестировать свою связь с последовательным портом, которую я использовал, и приложение, называемое виртуальным последовательным кабелем ViN в прошлом, в основном создало 2 последовательных порта на вашем компьютере, которые связаны виртуальный кабель.

Также, если у вас есть последовательный порт на вашей машине разработки, вы можете использовать его для подключения к другому компьютеру с последовательным портом и написать приложение, которое будет в основном имитировать связь ПЛК.

Я бы предпочел использовать комбинацию метода Дэвида и этого метода для обеспечения надлежащего тестирования.