Thread maschinenbefehler übersetzen: ...oder einfach strings zerlegen :) (9 answers)
Opened by popcorn5 at 2005-10-25 13:31

popcorn5
 2005-10-25 13:31
#59249 #59249
User since
2003-09-24
60 Artikel
BenutzerIn
[default_avatar]
Moin moin.

stehe vor folgendem problem:

ich muss diverse Maschinenbefehle übersetzen.
diese befehle können z.b. so aussehen.

1. +10510-2043
2. -3053-
3. +1732+10071

bei 1.-3. handelt es sich um relative fahrbefehle, das plus bedeutet positiv und das minus negativ jeweils für die x und die y achse. Bei 2. ist hinter dem Minus nichts mehr, das wird als "0" interpretiert. Also ein Fahrbefehl nur für die X-Achse.

jetzt gibts noch diverse andere befehle:

4. +++150- (Kreis linksherum mit 150mm durchmesser bei 12 Uhr start)
5. +++420+ (Kreis rechtsherum mit 430mm durchmesser bei 12 Uhr Start)
6. ++45+250- (Radius 45° linksherum bei 12 Uhr Start)

usw. es gibt noch mehr davon aber ich muss irgendwo mal anfangen.

Ich möchte jetzt folgendes realisieren:

1. ich will zwischen den verschiedenen Befehlsvarianten unterscheiden.
2. ich will alle Zahlen mit dem Wert 2,51 multiplizieren.
3. Das Minus und pluszeichen soll durch einen String ersetzt werden.

Also aus dem Befehl "+10510-2043" soll dieser Befehl werden:
"drive_rel_x(pos26380),drive_rel_y(neg5128)".

Und aus dem Befehl "-3053-" soll dieser werden:
"drive_rel_x(neg7663),drive_rel_x(not)".

Das ist jetzt ein ganz einfaches Beispiel. Schwieriger wird es da mit den Radien oder Kreisen und Elypsen kommen noch ;)

Wie kann ich folgenden text in einen sinnvollen Vergleich in Perl schreiben ?

Wenn 1. Zeichen ist "+" oder "-" gefolgt von einer zahl zwischen "0" und "99999" gefolgt von einem "+" oder "-" und wieder gefolgt von einer zahl zwischen "0" und "99999" dann mache...

Oder wenn 1. und 2. Zeichen ist "+" gefolgt von einer Zahl zwischen "0" und "99999" gefolgt von einem "-" oder "+" dann mache.

Ich habe mir da sowas vorgestellt:

if($test /[\+?\-][0-99999][\-?\+][0-99999]/)
{
#string zerlegen und umrechnen, wieder zusammensetzen.
}

Ich hoffe es hat jemdn verstanden :)

Danke für die mühe.\n\n

<!--EDIT|popcorn5|1130232828-->

View full thread maschinenbefehler übersetzen: ...oder einfach strings zerlegen :)