Kommunikation mit der Seriellen Schnittstelle COM3

  • Hallo liebes Forum, ich bin neu hier :beerchug:


    Ich habe natürlich schon die meisten Beiträge zu seriellen Schnittstellen durchforstet, bin jedoch nicht fündig geworden.


    :shock:


    Deshalb mache ich neues Thema auf.


    :hilfe:


    Ich möchte zwischen Roboter (KR 16/KRC2/KRC V5.2.12/KS V6.74_34) und einem Tintenstrahldrucker KBA-Metronik Alpha-Jet Daten austauschen.


    Die Schnittstelle beim Robi COM3 hat folgende einstellungen:
    Baudrate = 19200 (Panic-Mode-Baud-Rate des Druckers)
    Bits = 8 (1Byte)
    Parity = 2 (gerade)
    Stopbits = 1


    Protokoll XON/XOFF:
    XON = 0
    XOFF = 0
    Steuerleitung = 1/0 (Beides schon getestet, ohne Unterschied)


    Das Problem:


    Der Drucker erwartet am Anfang des Befehls das Steuerzeichen
    SOH (Start of Header) als ASCII-Zeichen "☺" (in Outlook-E-Mail mit [Alt]+[1] eingegeben)
    und am Ende des Befehls das Steuerzeichen
    EOT (End of Text) als ASCII-Zeichen "♦" (in Outlook-E-Mail mit [Alt]+[4] eingegeben).


    Ich kann in der .src meinen String noch korrekt zusammenbasteln und bekomme zur Laufzeit die CHAR[] Variable so angezeigt:
    "☺A1PC^PLk1s3z1♦"
    .
    Ich formatiere bei CWRITE(...) mit %s für Strings.


    Im mithörenden telnet wird dann folgendes ausgegeben (...COM3:...):
    "<0x1>A1PC^PLk1s3z1<0x4>"
    , also werden aus einem Steuerzeichen fünf ASCII-Zeichen.
    Bei anderer Formatierung kommt noch so was raus:
    "1A1PC^PLk1s3z14"
    also die Steuerzeichen in ASCII-Zeichen der entsprechenden Dezimalzahlen, aber leider immer falsch.


    Die anderen Formatiereungen, die ich ausprobiert habe führen zu Fehlern während der Laufzeit.


    Ich wollte noch CAST_TO ausprobieren, da sagt aber der Compiler, dass CAST_TO keine vereinbarte Prozedur sei... :wallbash:


    Also liebes Forum, ich hoffe jemand kann helfen.


    Falls noch Detailinformationen fehlen, bitte nachhaken.


    Vielen Dank schon mal, für mögliche Anstrengungen zur Hilfe!

  • Schritt für Schritt zum Roboterprofi!
  • Hallo, der Fall stellt sich, nach Diagnose der tatsächlich gesendeten Daten ( mit der schönen Freeware TALBreakOut ), ein wenig anders dar.


    telnet auf dem KUKA-PC loggt folgendes:


    -> <-86960087> Msg No. 306
    <-86960079> Msg No. 1356
    <-86960010> Msg No. 5001
    <-86954485> Msg No. 2047
    <-86952965> Msg No. 220
    <-86952965> Msg No. 108
    <-86951886> Msg No. 5001
    FlushR
    FlushW
    SER[3]-TX: <0x1>A1PC^PLk1s3z1<0x4>
    FlushR
    FlushW
    <-86941445> Msg No. 220
    <-86941445> Msg No. 108
    <-86941427> Msg No. 310


    Das Diagnose-Tool (Rechner mit zwei seriellen Schnittstellen durch die Software im durchschleusebetrieb), am anderen Ende der seriellen Leitung empfängt aber nur:


    A1PC^


    D.h. es kommen nicht alle Daten aus der Schnittstelle heraus und telnet wandelt von den Steuerzeichen nur die Anzeige um, da ich im Tool auch teilweise das Zeichen mit dem smiley aus der ASCII-Tabelle gesehen habe.


    Ich habe viele Versuche gemacht, das maximale, was ich heraubekam war:


    "☺A1PC^PLk1s3z1"


    die letzten zwei Zeichen fehlten.


    Meistens kommt aber nur


    "☺A"


    an.


    :denk:


    Vielleicht hat ja jetzt jemand 'ne Idee...


    Nochmals, die BaudRate ist auf 19200, da der Drucker im Zweifelsfall diese Rate nimmt.


    :nocheck:

  • Protokoll XON/XOFF:
    XON = 0
    XOFF = 0


    XON und XOFF sind Zeichen, mit denen die Kommunikation gesteuert wird. Auf welche Ascii-Zeichen ist Dein Drucker eingestellt? SOT und EOT? Trag die an diese Stellen ein.


    Kann der Drucker LANGSAMER als 19200? Dann mach das.

    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.


    Ich habe die Lösung gefunden!


    Der Hund lag in der Formatierung der Zeichenkette begraben:


    ..."Ich formatiere bei CWRITE(...) mit %s für Strings."


    war falsch. Alles hatte ich nicht ausprobiert. Funktioniert hat es mit:


    CWRITE(..,..,"%.15r", sString() )


    Trotzdem :danke: für die Hilfe. Wenn ich nochmal Huddel habe melde ich mich wieder!


    Grüße mahatma.

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