Forum: PC-Programmierung VB.Net Arduino und PictureBoxen


von Jonas H. (fujitsu313)


Angehängte Dateien:

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

von Sven H. (dsb_sven)


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.

von Jonas H. (fujitsu313)


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?

von Valentin B. (nitnelav) Benutzerseite


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

von Jonas H. (fujitsu313)


Lesenswert?

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.

von Sven H. (dsb_sven)


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.

von Jonas H. (fujitsu313)


Lesenswert?

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
Noch kein Account? Hier anmelden.