übergebenen Parameter abfragen

  • Hallo,


    wie kann ich in einem aufgerufenen Unterprogramm set_Var am einfachsten überprüfen ob ein Parameter übergeben wurde oder nicht?


    set_Var(Par1,Par2)


    oder ob


    set_Var() so aufgerufen wurde?



    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • Schritt für Schritt zum Roboterprofi!
  • Hallo,


    mein Programm sieht etwa so aus:


    USER_PARAM(PAR1 :IN,PAR2 :IN,PAR3 :IN,PAR4 :IN,PAR5 :IN,PAR6 :IN,PAR7 :IN,PAR8 :IN,PAR9 :IN,PAR10 :IN)


    aber jetzt 10xVarState abzufragen oder wie ich's jetzt gemacht habe:


    ON_ERROR_PROCEED
    intb1 = PAR1
    IF $ERR.NUMBER == 0 THEN
    ON_ERROR_PROCEED
    intb2 = PAR2
    IF $ERR.NUMBER == 0 THEN
    ON_ERROR_PROCEED
    intb3 = PAR3


    usw.


    ist natürlich ein riesen Ding!!!! könnt ihr mir bitte helfen meinen Code stark zu dezimieren!!


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • DEF USER_PARAM(PAR1 :IN,PAR2 :IN,PAR3 :IN,PAR4 :IN,PAR5 :IN,PAR6 :IN,PAR7 :IN,PAR8 :IN,PAR9 :IN,PAR10 :IN)
    BOOL bOk


    bOk = (VARSTATE(Par1) == #INITIALIZED)
    bOk = bOk AND (VARSTATE(Par2) == #INITIALIZED)
    bOk = bOk AND (VARSTATE(Par3) == #INITIALIZED)
    bOk = bOk AND (VARSTATE(Par4) == #INITIALIZED)
    bOk = bOk AND (VARSTATE(Par5) == #INITIALIZED)
    bOk = bOk AND (VARSTATE(Par6) == #INITIALIZED)
    bOk = bOk AND (VARSTATE(Par7) == #INITIALIZED)
    bOk = bOk AND (VARSTATE(Par8) == #INITIALIZED)
    bOk = bOk AND (VARSTATE(Par9) == #INITIALIZED)
    bOk = bOk AND (VARSTATE(Par10) == #INITIALIZED)


    If bOk Then
    Tu dies...
    Else
    Tu das... zB. EXIT
    Endif


    .
    . Dein Code
    .

    END

  • Vielleicht auch so....


    USER_PARAM(bPar1,bPar2,bPar3,rPar4,rPar5,rPar6,nPar7,nPar8,nPar9,rPar10)
    BOOL bPar1,bPar2,bPar3,bOk
    INT nTmp,nPar7, nPar8, nPar9
    REAL rPar4,rPar5,rPar10


    bOk = bPar1 OR bPar2 OR bPar3
    If $ERR.NUM.... Then
    ON_ERR_PROCEED
    Endif


    nTmp = nPar7+nPar8+nPar9+rPar4+rPar5+rPar10
    If $ERR.NUM.... Then
    ON_ERR_PROCEED
    Endif

  • Hallo zusammen


    Stethi
    ginge schon wenn die Parameter im Array wären.


    ein Array für Bool
    eins für Int
    eins für Real


    wenns ne Zählschleife sein soll ginge es wohl nur so wobei das net unbedingt laufzeit optimiert wäre


    USER_PARAM(bPar1,bPar2,bPar3,rPar4,rPar5,rPar6,nPar7,nPar8,nPar9,rPar10)
    BOOL bPar1,bPar2,bPar3,bOk,bT
    INT nTmp,nPar7, nPar8, nPar9 ,i
    REAL rPar4,rPar5,rPar10
    Char cTyp[10] cVar[24]
    DECL State_t State


    cTyp[]="bbbrrrnnnr"


    bOk = True


    For i=1 To 10
    bT=StrClear(cVar[])
    Offset = 0
    SWRITE(cVar[],STATE,OFFSET,"%SPar%1.F",cTyp[ i ],i)
    bOk = bOk AND (VARSTATE(cVar[]) == #INITIALIZED)
    Endfor

    If Not bOk Then
    Exit
    Endif

  • Hallo,
    geht dann sowas auch? $IN[cVar[]]??


    Rainer

    - Ehrlichkeit, die im Pfandhaus gelandet ist, wird nie mehr eingelöst. - (Thomas Middleton (1580-1627), engl. Dramatiker)

  • ne leider net
    das mit Beispiel oben funktioniert nur weil Varstate sowieso mit nem String arbeitet.
    da ist der Kuka bissel unflexible.


    theoretisch könnte man es vielleicht mit Remoteread basteln da dort auch nur ein String benutzt wird und warum sollte man damit nur auf nem anderem Roboter Variablen auslesen können.
    die funktion ist bei kooperierende Roboter mit drin und leider hab ich das paket net um das mal zu testen.


    dann könnten wir alle variablen mit strings ansprechen

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