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 здесь:
Я понимаю, что вы сказали 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.