EthernetKRLXML: kriege den Empfang nicht hin

  • Hallo


    Ich probiere mit KUKA.EthernetKRLXML über einen java socket server Abfragen auf eine Datenbank zu machen. Um das im Vorfeld zu testen, hab ich einen kleinen java server geschrieben, der einfach mal empfangen und senden soll.


    Aus KUKA sicht klappt das Senden, empfangen kann ich aber nicht.


    Wie im C# Beispiel von KUKA konvertiere ich den zu sendenden String erst in einen Byte Array.


    Die Konsolenausgabe im Eclipse ist:

    Code
    received: <mc>32</mc><mr>8</mr><ms>80</ms><s>select * from TJobData</s><t/>
    sending: <sql><cr>1</cr><cc>1</cc><mr>1</mr><mc>1</mc><sd>blah</sd></sql>


    ...allerdings bleibt der KUKA in der Funktion: EKX_WaitForSensorData( ... ) stehen, beziehungsweise im "HALT" danach. Der KUKA wartet nicht auf das Timeout (10s) sondern fällt in den "HALT", nachdem der java server gesendet hat (nach der einen Sekunde Verweilzeit).


    Ich habe probiert:
    - ohne / mit der einen Sekunde Verweilzeit im java server
    - ohne / mit input.close() / output.close() / output.flush() im java server
    - mit newlines im zu sendenden String (zwischen den tags und am Schluss)


    Da der KUKA den timeout nicht abwartet gehe ich davon aus, dass etwas ankommt, denn ohne die Verweilzeit im java server wartet er die vollen 10 Sekunden ab.


    Falls ich mich mit HyperTerminal mit dem java server verbinde, bekomme ich den korrekten String :denk:


    Falls sich jemand mit diesem TP auskennt, wäre für jede Hilfe dankbar.


    Gruss, rob


    Der Java Server:


    Das KRL source file:


    das dat:


    und die entsprechende Emfangsstruktur:

    Code
    <Elements>
     <Element Tag="sql" Type="STRUCTTAG" Stacksize="5" />
     <Element Tag="sql.cr" Type="INTEGER" Stacksize="5" />
     <Element Tag="sql.cc" Type="INTEGER" Stacksize="5" />
     <Element Tag="sql.mr" Type="INTEGER" Stacksize="5" />
     <Element Tag="sql.mc" Type="INTEGER" Stacksize="5" />
     <Element Tag="sql.sd" Type="STRING" Size="80" Stacksize="5" />
    </Elements>

    &quot;When using vi the screen of your terminal acts as a window into the file which you are editing. Changes which you make to the file are reflected in what you see.&quot;<br />Bill Joy 1978

    Einmal editiert, zuletzt von rob ()

  • Schritt für Schritt zum Roboterprofi!
  • Ja, der DemoServer funktioniert in Werkskonfiguration. In beide Richtungen.


    Sobald ich aber "Use own Data" mit eigenen files probiere geht fast nichts mehr. Die KRC Data werden erst empfangen, wenn ich das (mein eigenes von oben) src abwähle oder zurücksetze (die xml files vom Server hab ich angepasst, dabei konnte ich mir nicht ausmalen, wozu das Krcdata.xml gut sein soll. Die Daten kommen ja sowieso vom Roboter...). Interessanterweise klappt das (KRC->Server) aber gut mit meinem Java Server. KRC-seitiges Empfangen geht mit beiden nicht (obwohl WireShark und HyperTerminal was Anderes behaupten :) ).


    Dann hab ich noch einen VB Server probiert (6 nicht .net). Auch dieser empfängt nichts. Das geht bis jetzt nur mit dem Java Server.


    Vielen Dank für den Tip :)
    Werde erst Donnerstag wieder hier 'reinschauen können.

    &quot;When using vi the screen of your terminal acts as a window into the file which you are editing. Changes which you make to the file are reflected in what you see.&quot;<br />Bill Joy 1978

  • Es funktioniert jetzt so halbwegs. Hab aber keine Ahnung warum sry.

    &quot;When using vi the screen of your terminal acts as a window into the file which you are editing. Changes which you make to the file are reflected in what you see.&quot;<br />Bill Joy 1978

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