Hallo,
Ich steh mal wieder etwas auf dem Schlauch und ich hoffe, dass mir einer von euch den "Schubs" in die richtige Richtung geben kann.
Erstmal die Voraussetzungen:
Ich habe an einem PC/PI mehrere I2C-GPIO- Porterweiterungen (MCP23017 und MCP23008) hängen. Die haben 16 bzw. 8 GPIO's und hängen mit verschiedenen Adressen am I2C.
Nun möchte ich diese Bausteine mit C++ über I2C mit entsprechenden Bibliotheken (MCP23017 und MCP23008) direkt ansteuern. Die jeweilige Bezeichnung, Busadresse usw. lese ich aus einer text/csv-DAtei ein und rufe diese Daten aus der Vectorvariable (mcp_elements mit eigener struct) ab. Das funktioniert soweit auch, z.B.:
-------code-------
MCP23017 mcpout1.(atoi(mcp_elements[i_e].busnr.c_str()), atoi(mcp_elements[i_e].busaddr.c_str()));
mcpout1.openI2C();
for ( int i17 = 0; i17 < 16; i17++) {
mcpout1.pinMode(i17, OUTPUT); mcpout1.pinMode(i17, LOW);
}
-------/code-------
Nun muss ich eben für jeden Baustein das Device mit dem Handle/ostream verbinden und benötige eben z.B. "mcpout1", "mcpout2", "mcpout3" usw. Da ich aber nicht sicher weiss, ob immer die gleiche Anzahl von I2C- Bausteinen an den Bus angeschlossen sind, ist diese "Hardcodierung" ungünstig. Um nicht jedes mal das Programm anpassen und neu kompilieren zu müssen, möchte ich die Art (MCP23008/MCP23017), Busadresse, Art der Ports (In-/Outputs) Nummerierung der Ports usw. aus der txt/csv-Datei lesen und das etwas dynamisch behandeln. Das Lesen der Infos klappt schon, aber dann hänge ich....
Nun die Frage: Kann ich eine Variable (event. einen Vector) erstellen in den ich dann in einer Zeile "Nr", "Streamref", "Portnummerstart", "Portnummerende" speichern kann und dann eben nur diese eine Variable in die anderen Unterprogramme übergeben kann? D.h., kann ich in dieser Variable, und wenn ja wie, die Streamreferenz speichern und übergeben kann. In den Unterprogrammen möchte ich die Variable nach dem Schema "liegt die anzusteuernde Portnummer zwischen "Start" und "Ende", dann ist der Stream/ Referenz zu verwenden benutzen.
Wie müsste die Variable aussehen? Vector mit welcher struct?
Wäre toll, wenn mich jemand erleuchten könnte.....oder wenigstens den Weg weisen könnte.