Problem mit Cread und Sread

  • Hallo,


    nach langer suche im Forum ohne erforlg, habe ich mal wieder ein paar Fragen oder eher Probleme bei denen ich nicht weiter komme.


    Der Cread Befehl klappt super, wenn ich 1 Zeichen vom PC an den Roboter sende. Versuche ich jetzt einen ganzen String zu verarbeiten klappt nichts mehr.
    Der zu sendene String sieht so aus: 100 200 140 2


    Hierum geht es:
    Er bleibt in der Cread zeile stehen und geht nicht weiter.



    Satzanfang=0
    CREAD(HANDLE,Lesestatus,Lesemodus,Timeout,Satzanfang,"%s",Eingabe[])



    ;dx
    Form[]="%03d"
    Offset=0
    SREAD(Eingabe[],Auswertstatus,Offset,Form[],dx)


    ;dy
    Form[]="%03d"
    Offset=5
    SREAD(Eingabe[],Auswertstatus,Offset,Form[],dy)


    ;dphi
    Form[]="%03d"
    Offset=9
    SREAD(Eingabe[],Auswertstatus,Offset,Form[],dphi)


    ;geo aus Eingabe herausholen


    Offset=13
    Form[]="%01d"
    SREAD(Eingabe[],Auswertstatus,Offset,Form[],geo)


    Die SRC-Datei habe ich angehängt, da sie schon viel text enthält.


    Gruß
    Blender

    Einmal editiert, zuletzt von blender ()

  • Schritt für Schritt zum Roboterprofi!
  • Ich bin mir jetzt nicht ganz sicher, aber ich meine, deine Offsets stimmen nicht. Die '100' beginnt am Offset 0, das stimmt, aber dann gehts schief.


    Offset: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
    String: 1 0 0 2 0 0 1 4 0 2


    Das heisst: dx: Offset=0; dy: Offset=4; dphi: Offset=8 und geo: Offset=12


    versuchs mal mit den Werten.


    Gruß ... gooselk

  • Hallo Blender,


    schreib doch einfach


    CREAD(HANDLE,Lesestatus,Lesemodus,Timeout,Satzanfang,"%d%d%d%d",dx,dy,dphi,geo)


    die SREAD's kannst Dir sparen da Deine empfangen Integer durch Leerzeichen getrennt sind und der CREAD-Formatierer das erkennt.
    a+

    Wer nach allen Seiten offen ist kann nicht ganz dicht sein

  • Hallo,


    ich habe gerad beides getestet und es Funktioniert wunderbar.


    Zu meiner Schande muss ich gestehen, dass ich bei meinem in c# erstellten Übertragungsprogramm einen kleinen Fehler eingebaut habe. :pfeif:
    Ich hatte vergessen die Parität anzugeben.
    Ein einzelnes Zeichen hat er wie unten gesendet:


    CREAD(HANDLE,Lesestatus,Lesemodus,Timeout,Satzanfang,"%d",geo)


    nur nicht den ganzen String..... :denk:


    CREAD(HANDLE,Lesestatus,Lesemodus,Timeout,Satzanfang,"%r",Eingabe[])


    Naja jetzt hab ich zwei verschiedene Lösungen die Funktionieren. :danke:

    Einmal editiert, zuletzt von blender ()


  • Tja Blender, wer die Wahl hat, hat die Qual :icon_rofl:


    Da hast du recht.
    Aber deine Variante schließt von vornherein schon einige Fehlerquellen aus. :mrgreen:
    Da fällt die entscheidung nicht allzu schwer. :zwink:
    Einen schön Tag noch und Danke für die Hilfe.


    gruß
    Blender

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden