Как Вы моделируете последовательное устройство?

Я работаю над драйвером, который говорит с устройством через последовательный порт в C#. Я не всегда имею устройство в наличии, чтобы сделать испытание физических свойств с. Существует ли способ, которым я могу моделировать устройство на последовательном порте так, чтобы он ответил идеальным способом?

5
задан PICyourBrain 19 January 2010 в 17:09
поделиться

5 ответов

Единственное, с чем я столкнулся, это убедиться, что разрешение существует на другой схеме. Обычные вещи - если эти разрешения исчезнут по какой-либо причине, вы услышите об этом.

-121--1105175-

Есть несколько различий высокого уровня, которые приходят мне на ум. Некоторые из них являются обобщениями и должны иметь префикс «Часто»... или «Некоторые компиляторы»..., но ради читаемости я оставлю это.

  • Компиляция C/C + + не считывает никакой информации из двоичных файлов, но считывает определения методов/типов только из заголовочных файлов, которые должны быть проанализированы полностью (исключение: предкомпилированные заголовки)
  • Компиляция C/C + + включает в себя предпроцессорный шаг, который может выполнять широкий массив замены текста (что затрудняет предварительную компиляцию заголовка)
  • Синтаксис C++ намного сложнее синтаксиса Java
  • Система типов C++ намного сложнее, чем система типов Java
  • компиляция C++ обычно производит собственный код ассемблера, который гораздо сложнее производить, чем относительно простой байт-код
  • компиляторы C++ должны делать оптимизации, потому что нет ничего другого, что могло бы их сделать. Компилятор Java в значительной степени выполняет простую трансляцию исходного кода Java в байтовый код Java в формате 1:1, на этом этапе оптимизация не выполняется (это остается за JVM).
  • C++ имеет язык шаблона, завершенный Тьюрингом! (строго говоря, код C++ необходимо запустить для создания исполняемого кода, а компилятор C++ должен решить проблему остановки, чтобы определить, является ли произвольный код C++ компилируемым).
-121--3090714-

Получите второй COM-порт и используйте нуль-модемный кабель для подключения COM-портов, чтобы две программы C # могли взаимодействовать друг с другом.

8
ответ дан 18 December 2019 в 11:56
поделиться

Какой вид драйвера? Если это драйвер последовательного интерфейса, то это становится довольно сложно.

Однако, если ваш драйвер является уровнем приложения над драйвером устройства Windows, то он довольно легко заменить поведение ввода / вывода, изменяя строку, переданную в CreateFile , или любой слой сверху этого C # использует.

== Подробнее ==

Так как вы используете библиотечные инструменты .NET, этот метод может быть слишком yucky, чтобы беспокоить. Однако идея состоит в том, чтобы заменить там, где в какой-то момент ваш код говорит открытый COM1: или что-то еще. Измените, что быть файлом, который имеет моделируемые данные, скажем, «C: /COM1Testdata.txt». Дополнительный код эмуляции, который распознает содержимое файла для пауз и / или ответов, может быть полезен для некоторых протоколов. Данные, которые записываются в порт, могут быть зарегистрированы или игнорированы, в зависимости от ваших требований.

1
ответ дан 18 December 2019 в 11:56
поделиться

При работе в команде, разработав некоторые пользовательские аппаратные средства, я использовал отличный эмулятор терминала под названием Zterm (только доступно для Mac, я полагаю). Это позволяет вам ответить на скрипт, которые позволили мне завершить программное обеспечение нашим предварительно согласованным спецификациям, в то время как чипы пользовательских контроллеров все еще были на этапе разработки итерации.

0
ответ дан 18 December 2019 в 11:56
поделиться

Если вы работаете в VM, вы можете прикрепить вещи к последовательному порту Отказ QEMU, например, позволяет подключить виртуальный последовательный порт к TTY, который вы можете взаимодействовать с вручную, либо с программой, работающей на хосте.

0
ответ дан 18 December 2019 в 11:56
поделиться

Есть несколько различий на высоком уровне, которые приходят к моему разуму. Некоторые из них являются обобщениями и должны быть префиксированы «часто ...» или «некоторыми компиляторами ...», но ради читабельности я оставлю это.

  • Компиляция C / C ++ не читает никакой информации из двоичных файлов, но считывает определения метода / типа только из файлов заголовков, которые необходимо проанализировать в полном объеме (исключение: предложенные заголовки)
  • C / C ++ Компиляция включает в себя -Поцессорный шаг, который может сделать широкий массив текстовой замены (что делает предварительный компиляцию заголовка более сложнее)
  • Синтаксис C ++ - это намного сложнее, чем синтаксис Java
  • Система типа C ++ намного больше Комплекс, чем система типа Java
  • C ++ Компиляция обычно производит собственный код ассемблера, который является гораздо более сложным для получения, чем относительно простой байтовый код
  • C ++ компиляторы должны делать оптимизации, потому что нет никакой другой вещи, которая будет сделать их. Компилятор Java в значительной степени простают простую 1: 1 перевод исходного кода Java в код байта Java, на этот шаг не выполняется никаких оптимизаций (это оставлено для выполнения JVM).
  • C ++ имеет язык шаблона, который загорелся! (Столь строго говоря, C ++ код должен быть запустить для создания исполняемого кода, и компилятор C ++ должен будет решить проблему завершения, чтобы сказать вам, если ARBITRARY C ++ CODE с компиляцией).
-121--3090714-

Я использовал COM0COM на некоторое время и написал код симулятора / эмулятора.

6
ответ дан 18 December 2019 в 11:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: