C: кроссплатформенная библиотека RS-232?

Я ищу кроссплатформенную библиотеку с открытым исходным кодом для работы с последовательным портом в C, что-то вроде удивительной библиотеки PySerial (к сожалению, я должен использовать C для этого приложения).

Я только нашел это: http://www.teuniz.net/RS-232/, и это, кажется, не упоминает совместимость с OS X.

6 ответов

Решение

Можно подумать, что кросс-платформенная библиотека C для последовательных портов существует уже 20 лет, но по состоянию на 2013 год ее еще не было, поэтому я создал libserialport.

Он протестирован на Windows, Mac OS X, Linux (включая Android), BSD и, вероятно, будет работать на других системах Unix. Поддерживает:

  • Перечисление портов (получение списка последовательных портов в системе)
  • Открытие, закрытие и запрос портов
  • Настройка параметров порта (скорость передачи, четность и т. Д.)
  • Операции сигнализации портов (линии управления модемом, разрывы и т. Д.)
  • Чтение, запись и сброс данных
  • В ожидании событий
  • Получение информации об ошибке

Первоначальный выпуск 0.1.0 активно используется проектом Sigrok для поддержки последовательного оборудования и уже упакован в несколько дистрибутивов Linux. Версия git также включает новые вызовы API для получения информации о последовательных USB-адаптерах (VID/PID и т. Д.).

Это бесстыдный плагин, но у меня есть лицензионная библиотека MIT для связи RS-232, которая переносима на Windows, Linux и OS X здесь:

http://wjwwood.io/serial/

Я понимаю, что вы сказали C, а не C++, но, возможно, вы могли бы использовать последовательные порты Boost Asio и скомпилировать их в библиотеку, которая будет связана с вашим приложением C. Он претендует на совместимость с POSIX, а OS X - на POSIX.

Я выпустил свой под лицензией MIT: https://github.com/Marzac/rs232

Он запрограммирован на C и хорошо работает для Windows, Mac и Linux.

OS X поддерживает стандартный последовательный API POSIX, от <termios.h> а также <unistd.h>, Посмотрите функции tcsetattr(), cfsetspeed() и так далее.

Получите некоторый дополнительный специфический для OS X код Objective-C по аналогии с AMSerialPort, goSerial, serialconnect, PolKit и т. Д. И выполните условную компиляцию исходного файла на языке C.

http://osx.hyperjeff.net/Apps/apps?f=serial

Другие вопросы по тегам