try {ReadFile} -Funktioniert nicht

  • C++

  • Lyricz
  • 1180 Aufrufe 4 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • try {ReadFile} -Funktioniert nicht

    Hi.
    Ich habe folgendes Problem:

    Mein Programm kommuniziert über den Seriellen Port mit einem Mikroprozessor.
    Leider lässt es sich nicht anderst lösen, das in einer Schleife auf den ComPort schau und mir so lange Daten abhole wie welche gesendet werden.

    Sobald aber keine Daten mehr kommen, bleibt mein "dummes" Programm aber leider stehen, da es auf dem ComPort auf Daten wartet.

    Ich habe mir jetzt gedacht ich könnte das ganze mit ner Try-Schleife abfangen:

    try{
    ReadFile(...)
    }
    catch(...)
    {
    MessageBox("Nic mehr da");
    }

    trotzdem bleibt er mir immer in der ReadFile Zeile hängen ;(

    Hat jemand ne Ahnung wie ich das Problem in den Griff bekommen kann?
    (-An der Tatsache das ich nicht weiss wieviel Daten ich am ComPort abholen muss, lässt sich definitv nichts ändern!)


    MfG Lyricz
    Meine Sig war zu lang und wurde deswegen durch einen Moderator gelöscht......
  • Also auf TxD hab ich nur ein definirtes Signal das ich sende (8xcharacter).

    Die liest dann der Microprozessor ein, und sendet mir ca. jede Sekunde einen Status-Bericht (auch jedesmal 8 charater), solange er mit den Dateien Beschäftigt ist.
    Das könnte man sogesehen als Dauersignal interpretieren, nur wenn er halt fertig ist, sendet er nix mehr und meine PC-Software bleibt dabei stehen.


    kannst du die Steuerung darüber machen


    Was meinst du mit Steuerung?
    kannst du die Reihenfolge der Code-Zeilen mal kurz andeuten, damit ich weiss wie du es meinst?.

    Danke aber auf jedenfall schonmal für deine Anteilnahme ;)

    MfG
    Meine Sig war zu lang und wurde deswegen durch einen Moderator gelöscht......
  • Entschuldige, hab' da was durcheinander gehauen. RxD und TxD sind natürlich die Signalleitungen (war wohl doch etwas früh heute morgen ;))

    Mit Steuerung meine ich die native Steuerung der RS232 über die Ready to send / Clear to send (RTS/CTS) Leitungen. Der Controller signalisiert dir damit schon von Haus aus, ob er gerade etwas senden möchte oder nicht. So brauchst du nicht dauernd an der RxD Leitung lauschen, sondern kannst einfach über ein bool den Status abfragen (dazu empfielt sich ein separater Thread)

    Ein schönes - und vor allem für dich fast fertiges - Beispiel findest du hier
  • Hi.
    Das mit den 'Flags' (ob was am Port liegt) ist sicherlich ne gute Lösung. -Da das Beispiel aber "etwas" komplex ist, werd ich´s mir erst die Tage mal genauer anschauen.

    Mir hat dieTage ein Prof. einen Tipp gegeben das man für das "Handle" mit dem ComPort auch direkt über die Config TimeOuts festlegen kann.
    Jetzt springt mein Pogramm einfach wenn es nach x-[ms] nix lesen konnte weiter ;)

    Danke aber für den Link, kann ich sicherlich noch gebrauchen.


    MfG Lyricz
    Meine Sig war zu lang und wurde deswegen durch einen Moderator gelöscht......