Как смоделировать взаимодействие 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 последовательных порта на вашем компьютере, которые связаны виртуальный кабель.
Также, если у вас есть последовательный порт на вашей машине разработки, вы можете использовать его для подключения к другому компьютеру с последовательным портом и написать приложение, которое будет в основном имитировать связь ПЛК.
Я бы предпочел использовать комбинацию метода Дэвида и этого метода для обеспечения надлежащего тестирования.