Einfrieren der Seriellen Schnittstelle



  • Hallo liebe Leute,

    habe folgendes Problem:

    Mein Programm sendet Daten an die serielle Schnittstelle mit 1200 Baud und empfängt danach Meßwerte von einer Anlage, welche 86 HEX-Byte lang sind.
    Dieses Programm wird nun jede Minute mit Hilfe eines Cron-Jobs gestartet.
    Nun habe ich folgendes Problem und zwar, kommt es ständig vor, dass sich die serielle Schnittstelle mit meinem C-Programm nicht mehr öffnen läßt, d.h. das C-Programm bleibt an der Stelle, wo die Schnittstelle geöffnet wird, einfach hängen.
    Nach einem Neustart funktioniert es wieder, bis sie dann irgendwann sich nicht mehr öffnen läßt.

    Habt ihr eine Ahnung woran das liegen kann, bzw. wie kann ich die Serielle Schnittstelle neustarten (RESET) mit Hilfe von C???

    🙂 Wäre echt für jede Hilfe dankbar. 🙂

    MfG

    MTC



  • mtc schrieb:

    und zwar, kommt es ständig vor, dass sich die serielle Schnittstelle mit meinem C-Programm nicht mehr öffnen läßt, d.h. das C-Programm bleibt an der Stelle, wo die Schnittstelle geöffnet wird, einfach hängen.
    Nach einem Neustart funktioniert es wieder, bis sie dann irgendwann sich nicht mehr öffnen läßt.

    Schließt du die Datei wieder korrekt? Ich glaube open() dürfte nicht blockieren. Das Problem tritt nur auf, wenn es zig mal mit cron gestartet und beendet wurde?



  • Also ich schließe die serielle Schnittstelle auch wieder korrekt.

    Daran sollte es nicht liegen.

    So sieht das Öffnen aus:

    fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY );
    

    So schließe ich es wieder:

    close(fd);
    

Anmelden zum Antworten