Probleme bei der Anzeige von Dialogbuttons

  • Servus Zusammen,
    hab gerade ein Problem bei der Anzeige von den Dialogbuttons.
    KRC2
    Version: V4.1.7 SP05
    Also man kann 7 Buttons frei programmieren. Ich brauche weniger und dadurch bleibt der letzte Button durch einen alten Eintrag erhalten. Das möchte man natürlich nicht.
    Die Buttons sollen so aussehen.
    JA NEIN
    1 2 3 4 5 6 7
    Nur 1 und 2 sollen beschriftet sein der Rest soll leer bleiben. Jetzt ist es so das 7 noch einen alten Eintrag hat "Alles Quit".
    Hab gelesen das $MSG_T.DLG_FORMAT ein bestimmtes Format haben muss. Habe es aber noch nicht hinbekommen. Bei neueren Version funktioniert das ohne Probleme. Hab schon mehrere Möglichkeiten ohne Erfolg probiert.
    Kann mir jemand da ein Tipp geben?

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

  • Schritt für Schritt zum Roboterprofi!
  • Musst du mal probieren, ist schon sehr alt das Programm und habe seit dem auch nicht mehr viel mit den Knöpfen gemacht. Poste doch mal deinen Code, vielleicht sieht man dann ja was.


    INT iANSWER, icounter, iNr
    DECL MSG_T EMPTY_MSG


    doStoerung=TRUE


    EMPTY_MSG={MSG_T: VALID FALSE,RELEASE FALSE,TYP #QUIT,MODUL[] "MAIN",KEY[] " ",PARAM_TYP #KEY,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0}
    iANSWER=0
    icounter=0


    MSG_NOCHMAL:
    $MSG_T=EMPTY_MSG
    $MSG_T.VALID=FALSE
    $MSG_T.TYP=#DIALOG


    SWITCH iNr
    CASE 1
    $MSG_T.KEY[]="FehlerNr: 1! x Minuten kein Job gefunden"
    CASE 2
    $MSG_T.KEY[]="FehlerNr: 2! kein Teil entnommen BAZ1"
    DEFAULT

    ENDSWITCH

    $MSG_T.DLG_FORMAT[]="OK"
    $MSG_T.VALID=TRUE
    WHILE (($MSG_T.VALID==TRUE) AND (icounter<20))
    HALT
    WAIT SEC 0.2
    icounter=icounter+1
    ENDWHILE
    IF icounter>=20 THEN
    GOTO MSG_NOCHMAL
    ENDIF
    iANSWER=$MSG_T.ANSWER


    bMerker_Interrupt=TRUE


    WHILE TRUE
    INTERRUPT OFF 35
    bMerker_Interrupt=FALSE
    WAIT SEC 0.25
    INTERRUPT ON 35
    WAIT SEC 0.25
    bMerker_Interrupt=TRUE
    ENDWHILE




    ______________________________________



    Und hier nochmal etwas, wo ich die Knöpfe definiert habe:



    INT iANSWER, icounter
    DECL MSG_T EMPTY_MSG


    EMPTY_MSG={MSG_T: VALID FALSE,RELEASE FALSE,TYP #QUIT,MODUL[] "MAIN",KEY[] " ",PARAM_TYP #KEY,PARAM[] " ",DLG_FORMAT[] " ",ANSWER 0}
    iANSWER=0
    icounter=0


    MSG_NOCHMAL:
    $MSG_T=EMPTY_MSG
    $MSG_T.VALID=FALSE
    $MSG_T.TYP=#DIALOG
    $MSG_T.KEY[]="Waehlen Sie den gewuenschten Greifer!"
    $MSG_T.DLG_FORMAT[]="Greifer 0|Greifer 1|Greifer 2|Greifer 3|Greifer 4|ZURUECK"
    $MSG_T.VALID=TRUE
    WHILE (($MSG_T.VALID==TRUE) AND (icounter<20))
    HALT
    WAIT SEC 0.2
    icounter=icounter+1
    ENDWHILE
    IF icounter>=20 THEN
    GOTO MSG_NOCHMAL
    ENDIF
    iANSWER=$MSG_T.ANSWER
    SWITCH iANSWER
    CASE 1
    GreiferNrwechsel (0)
    CASE 2
    GreiferNrwechsel (1)
    CASE 3
    GreiferNrwechsel (2)
    CASE 4
    GreiferNrwechsel (3)
    CASE 5
    GreiferNrwechsel (4)
    CASE 6
    ;--Sprung zurueck in Hauptmenue
    RETURN
    DEFAULT

    ENDSWITCH

  • Hallo Dos,
    danke schon mal für die Beispiele. Hab aber das Problem noch nicht lösen können :down: Komme auch erst am Wochenende an die Anlage wieder drann um irgendwas zu testen.
    Im großen und ganzen habe ich das auch so. Hier ein ein kleines Beispiel.


    DEF Prog_a()
    MSGTXT[]="Robi in einer definierten Position.Wollen Sie den Robi automatisch Home fahren?"
    KeyTxt[]=" Ja | | Nein "
    KCPTOOL (#DIALOG,Msgtxt[],KEYTXT[],0,0.0,I_FKEY)
    if (I_FKEY==1) then
    ;ja gedrueckt
    wait for (findpos(0))
    else
    ;nein
    WAIT FOR $IN_HOME
    endif
    END


    Der Text und die Tasten sind in der config.dat deklariert.
    DECL CHAR MSGTXT[80]
    MSGTXT[]="Robi in einer definierten Position.Wollen Sie den Robi automatisch Home fahren? "
    DECL CHAR KEYTXT[70]
    KEYTXT[]=" "


    Das Programm KCPTOOL() steuert dann die Anzeige. So wie bei dir. Bei neueren Versionen gibt es auch keine Probleme nur bei der alten Version: V4.1.7 SP05.
    Hab einige Sachen probiert. Wie zum Beispiel:
    KeyTxt[]=" Ja | | Nein | | | | " ; keine 70 Zeichen
    KeyTxt[]=" Ja | | Nein " ; genau 70 Zeichen
    KeyTxt[]=" Ja | | Nein | | | | " ; genau 70 Zeichen mit den "|" zusammen.
    Was mir noch aufgefallen ist das $MSG_T.DLG_FORMAT[] vor dem Anzeigen nicht mit Leerzeichen beschrieben wird? War ja auch nie nötig :denk:
    Vielleicht funktioniert es bei der alten Version wenn ich vorher erst mal den alten Inhalt von $MSG_T.DLG_FORMAT[] überschreiben und danach den eigentlichen Text in .Format[] schreibe.
    Am Wochenende gibts dann mehr Infos....... :genau:

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

  • So! Nach einigem Probieren habe ich es aufgegeben :down: Egal was ich es mache der letzte Button 7 hat fast immer irgendeine unerwünschte Beschriftung. Hab auch vor dem eigentlichen setzen der Variable $DLG_FORMAT[] alle Zeichen mit " " beschrieben, ging auch nicht.
    Und nun...........wie es aussieht müssen die Leute damit klar kommen.
    Werde mich mit dem Problem auch nicht mehr länger herumschlagen.
    Schönen Sonntag noch :ylsuper:

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

  • hehe, wie sich manches wie ein Virus verbreitet :mrgreen:


    Da hat APT vor vielen Jahren wegen der damals besch... KRC2 Meldungsverwaltung mal für die eigene Verwendung eine universelle "KCPTOOL" Bibliothek geschrieben, und seitdem begegnet es einem mit EXAKT dem gleichen Syntax bei den verschiedensten Firmen immer und immer wieder :pfeif:


    ...hoffe du hast dein Problem unter der V4.x BOF-Version in den Griff bekommen, KCPTOOL entstand auf V5.2 :zwink:


    Grüsse, APT

    APT Techniques GmbH<br />Software-Entwicklung für Roboter &amp; SPS.

  • Schau mal in das Prog,
    das sollte eigentlich funktioniert (Im FOLD Dialog ist alles eigentlich gut erklärt zu dem du Probleme hast).


    Ich würds mit "Softkey[7] = {sk_type #EMPTY}" probieren oder "Softkey[3] = {sk_type #VALUE, sk_txt[] " . " }"
    einfach mit nen Leerzeichen oder Punkt beschreiben.
    Du musst aber in meinem Prog bei der Declarierung der Variable "Sofkey[3]" auf 7 erhöhen (sieht dann so aus "Sofkey[7]").
    Die declarierung ist vor der INI Zeile im Fold "Decleration der Meldungsvariablen" zu finden.
    Ich hab damals versucht das Programm so zu schreiben, dass es übersichtlich ist und eigentlich keine Fragen offen bleiben
    sollten. Wenn irgendwas fehl einfach melden damit ich es noch hinzu fügen kann.


    Als zweites Prog hab ich mal nen Bsp. angehongen wo wir das ganze verwenden (Das Cell Programm)


    Ich hoffe das bringt dir was befor du ganz verzweifelst

  • APT, Sieh es doch als Ehre an, dass alle Deinen Code nutzen...
    Ich habe für Sachen, die rausgingen immer auch nen Programmkopf geliefert. Wenn mir mein Code ohne Kopf begegnet, dann bitte ich freundlich um Nachrüstung...


    :biggrins:

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • Hallo Zusammen,
    hab die Linie so mit den ganzen Programmen übernommen! Und natürlich auch verwendet. Hier in Stuttgart bei Mercedes sieht der Programmkopf so aus:


    ;************************************************************
    ;* Programm : Utility-SRC zum Dialog mittels KCP *
    ;* Filename : KCPTOOL.SRC *
    ;* Quelle : KCPMSG.SRC *
    ;* Zielsystem : KR-C1 *
    ;* Zielsoftware : V2.2.8 *
    ;* Kunde : - *
    ;* Autor : Christian Stein *
    ;* (c) Ch. Stein AG, 5004 Aarau *
    ;*==========================================================*
    ;* AENDERUNGSGESCHICHTE: *
    ;* Vers. Datum/Visum Beschreibung *
    ;*----------------------------------------------------------*
    ;* 0.1 09.08.00 / pk Entwurf *
    ;* 1.0 10.08.00 / pk Nutzungsfreigabe *
    ;* 1.1 27.06.11 /ohu Deklarationen hinter die Def-Zeile




    @ Toud: Dein Beispiel ist für die KRC4...ich hatte das Problem mit der KRC2. Aber Trotzdem Danke.


    Und bei der KRC4 hat sich zum Glück da einiges getan und funktioniert besser.
    Köpfe werden immer wieder gerne mal entfernt ist manchmal ärgerlich.
    Gruß Paulaner

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

  • WolfHenk


    ...mach ich. ist ja schön wenn man merkt dass man ab-und-zu ausser chaos auch mal halbwegs brauchbares zu produzieren scheint. geht dir ja sicher auch so, immerhin spielst du in der top-liga.


    ...hab grad zur kontrolle in den spiegel geschaut. "christian stein" bin ich trotzdem nicht, da hat sich mein ehemaliger chef zum autor gemacht hat, hehe
    :jawohl:


    @Paulaner


    ich glaube mich zu erinnern, dass der 7. softkey auch bei mir manchmal probleme machte, wenn nur leerzeichen angezeigt werden sollten. probier mal für den letzten key irgend ein zeichen das keinem auffällt, z.b. underline _

    APT Techniques GmbH<br />Software-Entwicklung für Roboter &amp; SPS.

  • @ Toud: Dein Beispiel ist für die KRC4...ich hatte das Problem mit der KRC2. Aber Trotzdem Danke.


    Nicht ganz richtig, das zeugs hab ich letztes Jahr geschrieben und da hatten wir noch keinen KRC4.
    Daher weiß ich dass es auf ner KRC 2 auch lauffähig ist, allerdings erst ab dem Softwarestand 5.5.


    Wenns bei dir nicht läuft haste warscheinlich noch nen älteres Modell, dazu hab ich dann leider doch
    nichts.


    Dann mal noch nen schönes WE :beerchug:

  • Hallo Toud,
    ok das wusste ich nicht das man diese Funktionen schon ab der V5.5 verwenden kann. Aber ich habe da eine alte Krüke die Probleme bereitet.
    Version: V4.1.7 SP05


    @APT
    ich habe sowas programmiert:
    if (bdiAblagePlatz1Frei==false) and (bdiAblagePlatz2Frei==false) then
    MSGTXT[]="Alle Plaetze belegt. Robi bewegt sich wieder in Grundstellung "
    KEYTXT[]=" Ok | _ | _ | _ | _ | _ | _ "
    KCPTOOL (#dialog,MSGTXT[],KEYTXT[],0,0.0,I_FKEY)
    return -1
    endif
    if (bdiAblagePlatz2Frei==true) and (bdiAblagePlatz1Frei==false) then
    MSGTXT[]="Greifer wird am Bahnhof 2 abgelegt. "
    KEYTXT[]=" Ok | _ | _ | _ | _ | _ | _ "
    KCPTOOL (#dialog,MSGTXT[],KEYTXT[],0,0.0,I_FKEY)
    return 2
    else
    if (bdiAblagePlatz2Frei==false) and (bdiAblagePlatz1Frei==true) then
    MSGTXT[]="Greifer wird am Bahnhof 1 abgelegt. "
    KEYTXT[]=" Ok | _ | _ | _ | _ | _ | _ "
    KCPTOOL (#dialog,MSGTXT[],KEYTXT[],0,0.0,I_FKEY)
    return 1
    else
    ;beide plätze frei auswahl
    repeat
    MSGTXT[]="Beide Plaetze frei. Welcher Platz soll angefahren werden? "
    KEYTXT[]=" Platz 1 | Platz 2 | _ | _ | _ | _ | Abbrechen "
    KCPTOOL (#dialog,MSGTXT[],KEYTXT[],0,0.0,I_FKEY)
    until ((i_fkey==1) or (i_fkey==2) or (i_fkey==3))
    if (i_fkey==1) then


    Das verrückte ist dass der MSGTXT richtig angezeigt wird. So weit so gut. Aber die Buttons wo eigentlich Ok stehen müsste steht immer Weiter!!
    Von wo kommt das "weiter"? Auch wenn ich über Satzanwahl springe und mehrmals Meldungen ausgebe erscheint "weiter". Erst bei den Plätzen 1 oder 2 wird es wieder richtig angezeigt.
    Selstam seltsam.... Und nirgends habe ich irgendwo im keytxt ein "weiter" verwendet :waffen100:
    Gruß Paulaner

    Für seine Arbeit muß man Zustimmung suchen, aber niemals Beifall.<br />Zitat: Charles-Louis Baron de Montesquieu

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now