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