C ++ Аппаратное обеспечение - PullRequest
0 голосов
/ 21 декабря 2011

Мне было интересно, есть ли какие-либо наборы классов C ++ для взаимодействия с аппаратными устройствами, я имею в виду порты ввода-вывода через последовательный или параллельный порт или что-то в этом роде.

Я нашел некоторую информацию, но только в C, я надеюсь, что классы C ++ уже написаны.

Ответы [ 2 ]

3 голосов
/ 23 декабря 2011

Встроенное оборудование, как правило, является проприетарным, поэтому любая такая библиотека все равно требует некоторого уровня аппаратного абстрагирования (это верно как для C, так и для C ++).UART и GPIO относительно тривиальны, но в то же время очень специфичны для чипов, и часто к ним предъявляются также специфические требования к приложениям, поэтому полезность такой библиотеки сомнительна.

Возможно, было бы полезно определить некоторый общий абстрактный интерфейск этим ресурсам, чтобы код прикладного уровня был переносимым между платформами, но любой доступный общий интерфейс может соответствовать или не соответствовать вашим требованиям.Таким образом, вам часто будет выгоднее реализовать свой собственный дизайн и использовать его повторно, а не ограничиваться чьей-либо реализацией.

Если вы можете найти подходящие библиотеки C, тогда простейшим подходом будет реализация подходящих оболочек C ++.Код C полностью совместим с C ++.

Если стандартная библиотека C для вашей платформы была портирована для поддержки stdio на устройствах, таких как UART, тогда будет работать стандартная библиотека C ++ iostream, но она не обеспечивает стандартную низкоуровневую библиотеку.интерфейс уровня для настройки кадров и скорости передачи данных;Вы можете реализовать это напрямую или с помощью пользовательских команд ioctl ().Если семантика потокового ввода-вывода подходит, вы можете реализовать низкоуровневые драйверы для других устройств и файловых систем, чтобы разрешить доступ через iostream.

1 голос
/ 23 декабря 2011

Ответ зависит от вашей целевой платформы. http://www.arduino.cc/ переносит все операции ввода / вывода в C ++.

...