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.