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

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

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

Ответы

Ответ 1

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

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

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

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

Ответ 2

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

http://wjwwood.io/serial/

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

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

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