Я ищу абстракции C ++ для аппаратных точек ввода / вывода или выводов. Такие вещи, как in_pin, out_pin, inout_pin, может быть open_collector_pin и т. Д.
Я, конечно, могу сам придумать такой набор абстракций, поэтому я не ищу ответы типа «эй, ты мог бы сделать это таким образом», а скорее «посмотри на эту библиотеку, которая использовалась в этом, этом и этот проект'.
Google не обнаружил ничего, возможно, потому что я не знаю, как другие назвали бы это.
Моя цель состоит в том, чтобы создать библиотеки ввода-вывода, которые основаны на таких точках, но также обеспечивают такие точки, поэтому было бы легко, например, подключить HD44780 LCd либо к выводам ввода-вывода микросхемы, либо к I2C (или SPI) Расширитель ввода / вывода или любая другая точка, которой можно каким-либо образом управлять, без каких-либо изменений в классе LCD.
Я знаю, что это на грани электроники / программного обеспечения, извините, если это не принадлежит здесь.
@leon: проводка Это большой пакет программного обеспечения, мне нужно будет присмотреться. Но, похоже, они не используют абстракцию булавки, как я хочу. Например, в реализации клавиатуры я вижу
digitalWrite(columnPins[c], LOW); // Activate the current column.
Это подразумевает, что есть одна функция (digitalWrite), которая знает, как записать на вывод ввода / вывода. Это делает невозможным добавление нового типа вывода ввода / вывода (например, на MCP23017, поэтому его необходимо записать через I2C) без перезаписи функции digitalWrite.
@Oli: Я погуглил пример Arduino IO, но похоже, что он использует тот же подход, что и библиотека Wiring:
int ledPin = 13; // LED connected to digital pin 13
void setup(){
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}