Ich suche nach C ++ - Abstraktionen für Hardware-E / A-Punkte oder -Pins. Dinge wie in_pin, out_pin, inout_pin, vielleicht open_collector_pin, etc.
Ich kann mir mit Sicherheit selbst eine solche Sammlung von Abstraktionen einfallen lassen, also suche ich nicht nach Antworten wie "Hey, vielleicht machst du das so", sondern nach dem "Blick auf diese Bibliothek, die in diesem und jenem und jenem verwendet wurde dieses Projekt'.
Google hat nichts aufgedeckt, vielleicht weil ich nicht weiß, wie andere das nennen würden.
Mein Ziel ist es, E / A-Bibliotheken zu erstellen, die auf solchen Punkten basieren, aber auch solche Punkte bereitstellen, sodass es beispielsweise einfach ist, eine HD44780 LCd entweder an die E / A-Pins des Chips oder an einen I2C (oder SPI) anzuschließen. I / O-Extender oder jeder andere Punkt, der irgendwie gesteuert werden kann, ohne die LCD-Klasse zu ändern.
Ich weiß, dass dies auf dem neuesten Stand der Elektronik / Software ist. Tut mir leid, wenn es nicht hierher gehört.
@leon: Verkabelung Das ist eine große Tüte Software, die ich mir genauer ansehen muss. Aber es scheint, dass sie keine Stecknadelabstraktion verwenden, wie ich es will. Zum Beispiel in der Tastatur-Implementierung sehe ich
digitalWrite(columnPins[c], LOW); // Activate the current column.
Dies impliziert, dass es eine Funktion (digitalWrite) gibt, die weiß, wie auf einen E / A-Pin geschrieben wird. Dies macht es unmöglich, einen neuen Typ von I / O-Pin hinzuzufügen (zum Beispiel einen, der sich auf einem MCP23017 befindet, so dass er über I2C geschrieben werden muss), ohne die digitalWrite-Funktion neu zu schreiben.
@Oli: Ich habe ein Arduino IO-Beispiel gegoogelt, aber die scheinen ungefähr den gleichen Ansatz wie die Wiring-Bibliothek zu verwenden:
int ledPin = 13; // LED connected to digital pin 13
void setup(){
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}