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
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.
|
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?
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
Ich würde dann schon gerne Pictureboxen nehmen, aber danke dir. Das einzigste Problem war eigentlich nur, dass es schon den Code vor dem öffnen des Ports gesendet hat und sich irgendwie eine endlose Schleife ergeben hat.
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.
Ok, dann werde ich die Tage wenn ich mal Zeit mir das anschauen ;D
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.