AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Manuelle Roboter Steuerung - Button und Cursortasten
Thema durchsuchen
Ansicht
Themen-Optionen

Manuelle Roboter Steuerung - Button und Cursortasten

Ein Thema von CDI · begonnen am 13. Jan 2016 · letzter Beitrag vom 14. Jan 2016
Antwort Antwort
CDI

Registriert seit: 13. Jan 2016
2 Beiträge
 
Delphi 10 Seattle Architect
 
#1

Manuelle Roboter Steuerung - Button und Cursortasten

  Alt 13. Jan 2016, 22:49
Hallo,

ich bin neu hier im Forum und wollte gleich mal mit Fragen starten.

Ich bau gerade eine GUI für ein Project, hierdrüber wird ein Fischertechnik Roboter über eine KI gesteuert [Fahr Bewegungen].
Da wir auch eine Manuelle Steuerung realisieren wollen, bin ich gerade dabei diese zu bauen.

In der VCL habe ich 6 Buttons [Links_Vor / Vor / Rechts_Vor / Links_Zurück / zurück / Rechts_zurück]
Der Roboter fährt immer so lange bis er einen neuen Befehl erhält (leider vorgegeben, nicht zu ändern).


ERSTE FRAGE:

Ich habe 6x OnMouseDown-Event, dabei fährt er jeweils in die entsprechende Richtung.
Außerdem 6x OnMouseUp-Event, hierbei wird ein Stopp Befehl gesendet.

Code:
procedure TForm_Roboter_GUI.Button_Manuell_Rechts_ZurueckMouseDown(
  Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  Robo.BewegenEiner(2,-Speed);
  Robo.BewegenEiner(1,round(-speed/10));
end;

procedure TForm_Roboter_GUI.Button_Manuell_Rechts_ZurueckMouseUp(
  Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  Roboter_Stopp;
end;

procedure TForm_Roboter_GUI.Button_Manuell_VorMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  Robo.BewegenAlle(speed,speed);
end;

procedure TForm_Roboter_GUI.Button_Manuell_VorMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  Roboter_Stopp;
end;

...
D.h. ich habe schon 12 proceduren... wobei 6 mal wirklich genau das selbe ausgeführt wird.
Kann ich das anders lösen und in weniger Proceduren zusammenfassen???


ZWEITE FRAGE:

Ich möchte es auch realisieren das ich den Roboter mit den Cursortasten meiner Tastatur lenken kann.
Ich habe angefangen mit FormKeyDown abzufragen welche taste gedrückt wird, die abfrage ist auch kein Problem.

Code:
procedure TForm_Roboter_GUI.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  case Key of
    VK_UP : Button_Manuell_VorMouseDown;
    VK_DOWN : Button_Manuell_ZurueckMouseDown;
  end;

end;
Bricht so natürlich mit Fehlermeldung "Nicht genügend wirkliche Parameter" ab.
Was für Parameter muss ich da noch hinter schreiben damit ich die MouseDown-Events auch so ausführen kann, damit das funktioniert, fals ich das überhaupt so machen kann?

Ich hoffe ich habe das klar und verständlich beschrieben, und das man mir hier helfen kann

mfg
CDI
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.062 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Manuelle Roboter Steuerung - Button und Cursortasten

  Alt 13. Jan 2016, 23:33
Du könntest für das MouseUp für alle Buttons die selbe Prozedur verwenden.
Damit hättest du 5 Prozeduren weniger.

Du könntest für das MouseDown ebenfalls für alle Buttons die selbe Prozedur verwenden und in der Prozedur abfragen, auf welchen Button geklickt wurde.
Ob das nun schöner ist???

Delphi-Quellcode:
procedure TForm_Roboter_GUI.Button_ManuellMouseDown(
   Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
   if Sender=Button_Manuell_Rechts_Zurueck then begin
      ...
   end else if Sender=Button_Manuell_Vor then begin
      ...
   end else ...

   end;
end;
Und zum Problem mit "Nicht genügend wirkliche Parameter"


Delphi-Quellcode:
procedure TForm_Roboter_GUI.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
 begin
   case Key of
     VK_UP : Button_Manuell_VorMouseDown(Button_Manuell_Vor, mbLeft, [], 0, 0);
     VK_DOWN : Button_Manuell_ZurueckMouseDown(Button_Manuell_Zurueck, mbLeft, [], 0, 0);
   end;

 end;
Ich hab das hier auf die schnelle reingetippt. Fehler deshalb nicht ausgeschlossen.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Manuelle Roboter Steuerung - Button und Cursortasten

  Alt 13. Jan 2016, 23:54
Dann verweise doch im Objekt Inspektor der Buttons bei MouseUp auf ein und die selbe Procedure.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CDI

Registriert seit: 13. Jan 2016
2 Beiträge
 
Delphi 10 Seattle Architect
 
#4

AW: Manuelle Roboter Steuerung - Button und Cursortasten

  Alt 14. Jan 2016, 20:36
Super, Danke.

Die Tipps konnte ich sehr leicht anwenden und es hat mir extrem geholfen!

Läuft gerade wunderbar

Danke Amateurprofi
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz