Handshake mit Isel-Steuerung

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    Handshake mit Isel-Steuerung

    Hallo Leute

    Ich arbeite im Moment an einer Fräsemaschine und erstelle ein VB-Programm dafür.
    Ich möchte diese Maschine mehrere Punkte abfahren lassen. Ist eigentlich kein Problem, nur das sie ab 5 Punkten ein paar vergisst. wenn ich eine MsgBox zwischen setze klappt es ohne Probleme.

    Ich habe eine Isel-Steuerung und schon nachgelesen, dass ich ein Handshake implementieren muss. Ich hatte den Seriellen Port schon auf RequestToSend und XOnXOff usw. gehabt. Bei RequestToSend hängt er sich auf.

    Was kann ich tun?? Ich bin relativ neu in VB und würde mich über ein paar Quellcodebeispiele sehr freun. .)

    Vielen Dank schonmal

    Marian
    XONXoff sendet ein ausgemachtes Steuerzeichen zum Händeschütteln. Diese muss dafür bekannt sein. Dafür reichen 3 Adern aus. Für RTS/CTS oder auch DSR/DTR benötigst Du ein (fast) vollbeschaltetes Kabel (7 Adern). Einfach mal in die Grundlagen der RS232 und Handshaking einlesen. Auch mal das Datenblatt für die Fräsmaschine nach der genauen Methode durchforsten.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Danke für die Hilfe.
    Jedoch komm ich trotzdem grad nicht weiter.

    Was ich im Moment schaffe, ist die Antwort auszulesen.

    VB.NET-Quellcode

    1. Antwort = SerialPort1.ReadByte()


    Er gibt mir dann 48 raus. Meine Idee war nun mit einer Do-Loop-Scheife, so lange zu warten, bis er die Aktion durchgeführt hat. Aber meistens hängt er sich einfach auf oder übergeht die Schleife einfach.

    Also was muss ich Antwort deklarieren? Und wie kann ich ihm sagen, er soll warten bis eine Antwort kommt?

    Danke schonmal

    Marian
    Laut Datenblatt wird nur Software-Handshake benutzt. 3 Adern reichen also. Deswegen hängt es sich bei RTS/CTS auch auf, weil dieses nie gesetzt wird. Wenn der Befehl verstanden wurde, wird "0" zurückgesendet, ansonsten eine Fehlermeldung/Fehlercode. Antwort ist ein String.
    Ich würde einen Befehl senden, dann eine gewisse Zeit lang auf Antwort warten. (Im Intervall die Anzahl Daten im Input-Buffer abfragen) Wenn eine 0 kommt, oder nach einem TimeOut nichts kommt, die Fehlerbearbeitung durchführen. Irgendwo hier im Forum müsste mein Code sein, wo ich eine Stopuhr auf allen Ports suchen lassen. Da ist das mit dem Timeout auch drin. Allerdings progge ich "nur" in VB6, so dass ein paar Anpassungen nötig sein werden.
    Gruß
    Peterfido

    Keine Unterstützung per PN!