Портирование кода POSIX C в Windows - PullRequest
3 голосов
/ 08 февраля 2012

Я только что закончил небольшой проект, написанный на C, где я читаю поток данных с последовательного порта и анализирую входящие данные.Программное обеспечение написано для систем POSIX (с использованием termios) и выполняет стандартные шаги для работы с последовательным вводом / выводом

  1. Открытие последовательного устройства с использованием open ()
  2. Настройка параметров связи (termios)
  3. Установить режим блокировки для дескриптора файла (fcntl)
  4. Выполнить чтение () на последовательном интерфейсе.
  5. Выполнить close () на последовательном интерфейсе, когда закончите.

За исключением частей сокета, код является прямым ANSI C.

Мой вопрос: насколько сложно было бы заставить код работать на платформе Windows.Порт не был бы написан мной, я только хотел бы дать указание другим, кто может быть заинтересован в его портировании (то есть, тривиально, не так тривиально, вырвите ваши глаза из-за безумия).

Такжеесли у кого-то есть Windows с «Службами Windows для UNIX», сможет ли он использовать код без его изменения?

Итак, если у кого-то есть опыт с этим, пожалуйста, поделитесь.

1 Ответ

3 голосов
/ 08 февраля 2012

Это должно быть довольно легко сделать. Имена очень разные, но последовательность вызовов и понятий очень похожа.

Вам нужна структура DCB , которую следует использовать с функцией SetComState () для установки скорости передачи, стоп-битов и т. Д. Затем используйте SetCommTimeouts () и установите значения тайм-аута в структуре COMMTIMEOUTS , чтобы блокировать последующие вызовы на чтение.

Вот краткое введение в виде симпатичного PDF. ( Резервное копирование .)

...