VB.Net Arduino und PictureBoxen

OP #1877464
Lesenswert?

Moin Leute,

Hier seht ihr mein Terminal Programm. Ich habe mal einen Screenshot 
gemacht wie das Programm aussieht.

Jede Picturebox soll später am Arduino 1 LED zum leuchten bringen, bzw 
ausschalten. Meine erste Idee war, den Code für jeden Click usw selber 
zu schreiben, aber irgendwie war das ganze später zu lang und hat nicht 
richtig funktioniert. Die nächste Idee war, wenn auf die Picturebox 
geklickt wird, wird die Farbe geändert und dem Arduino wird über den 
Serialport eine Anweisung gesendet, das ganze wollte ich noch mit der 
Funktion, wenn die Farbe geändert wird, soll etwas passieren. Leider hat 
das nicht funktioniert.

Ich hoffe ihr habt eine Idee und wisst ungefähr was ich machen will und 
könnt mir sogar helfen.

Gruß Jonas
Angehängte Dateien:
#1877701
Lesenswert?

Du kannst an statt der Picture Boxen Buttons nehmen oder Panels. Beide 
haben einen OnClick Event.

Dann musst du den Elementen (Picture boxen, buttons oder panels) 
vernünftige Namen geben.

Wenn du jetzt bei allen Elementen die gleiche Funktion angibst als 
Eventhandler für OnClick kannst du in der Funktion den Parameter 
"sender" verwenden um raus zu bekommen, welches Element geklickt wurde.

Dann könnte die Vorgehensweise etwa so sein (ist c#, sorry dafür)
1
Panel p = sender as Panel;
2

3
string element = p.Name.Substring(10,2); // für den Fall, dass du die Elemente mit einem 10 Zeichen langen Namen und dann einem Index von 2 Zeichen versehen hast. Sonst musst du natürlich anpassen.
4

5
int index = int.Parse(element);
6

7
// Jetzt hast du in index den index des geklickten Feldes. Den übermittelst du an den µC und machst damit was auch immer.
OP #1877778
Lesenswert?

Okay schonmal danke.

Ich werde es aber beibehalten und die Boxen von 1-64 durchnummeriert 
lassen.

Du meinst jetzt ungefähr, wenn ich bei jeder Box das selbe Event habe, 
kann ich mit einer Funktion bestimmen bei welcher Box die Farbe geändert 
wurde und bestimmen was dann passieren soll?
Persönliche Seite #1877788
Lesenswert?

Ich würde einfach ein großes Panel nehmen, das Raster als 
Hintergrundbild.
Dann über MouseClick die Koordinaten (e.Y und e.X) nehmen, durch die 
Anzahl der Teilungen teilen (\10 ?) und fertig.
Wenn Farbwechsel erwünscht ist, einfach noch mit 
Panel1.creategraphics.fillrect(Brush.red,x,y,height,width) die Stelle am 
Panel rot ausfüllen.
Mit freundlichen Grüßen,
Valentin Buck
#1877861
Lesenswert?

Jonas H. schrieb:
> Du meinst jetzt ungefähr, wenn ich bei jeder Box das selbe Event habe,
> kann ich mit einer Funktion bestimmen bei welcher Box die Farbe geändert
> wurde und bestimmen was dann passieren soll?

Genau.

Und wenn du was senden willst öffnest du den Port, sendest und schließt 
ihn wieder. Damit ist zumindest sichergestellt, dass der Port offen ist, 
wenn du senden willst.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren