Tomie schrieb:
> Problem: Die Panels sind austauschbar. D.h. wenn ich statt Panel 1,
> Panel 4 vorne habe will ich, dass der Master sich das merkt und die
> Panels neu adressiert. In dem Fall, soll Panel 4 --> adresse Panel 1
> haben und Panel 1 --> die adresse Panel 4 haben.
Dann versteh ich aber das Problem noch nicht.
Anstatt
1 | send_data_to_panel( 1, data );
|
steht dann eben im Code
1 | uint8_t pannelAddr[4] = { 1, 2, 3, 4 };
|
2 |
|
3 |
|
4 | ...
|
5 |
|
6 | send_data_to_panel( pannelAddr[0], data );
|
also einfach nur ein Array, aus dem die Adresse des ersten, zweiten,
dritten, ... Pannels kommt. Im Array wird die tatsächliche Adresse
eingetragen.
Ob die Umsetzung der internen Nummerierung auf die tatsächliche Adresse
beim Aufrufer erfolgt, oder ob das in der jeweiligen Send Funktion
passiert, darüber kann man diskutieren. Aber das ändert am Grundprinzip
ja nicht viel, dass man intern mit logischen Pannelnummern arbeitet, die
auf der Ebene der tatsächlichen Ausgabe auf die physikalischen Pannels
dann auf die physikalisch richtigen Pannelnummern umgesetzt werden.
> D.h. wenn ich statt Panel 1, Panel 4 vorne habe
dann änderst du (zb über ein Benutzermenü)
1 | uint8_t pannelAddr[4] = { 4, 2, 3, 1 };
|
und wenn alles andere richtig programmiert ist, dann ist das auch schon
die ganze Änderung, die in den Daten notwendig ist.
Oder versteh ich dich, bzw. das Problem, jetzt falsch?