Empfang über RS232 unter XP



  • Also, folgendes Problem: Ich habe ein Konsolenprogramm, was COM6 öffnet, DCB setzt und Timeouts auch, was auch alles positiv verläuft. In einer Endlosschleife wird jetzt immer wieder geprüft, ob was empfangen wurde und wenn ja wird das in der Konsole ausgegeben. Auf einem XP-System installiert läuft das Programm auch fehlerfrei, solange nichts empfangen wird. Passiert das doch, wird nichts ausgegeben und das Programm wird nach 1-2 Sekunden beendet. Hilfe?
    Vergessen: Unter Win2000 funktioniert alles!



  • Hallo

    Und was hat das mit der VCL zu tun, so das es hier ins Builder-Forum gehört?
    Das gehört wohl eher ins WinAPI-Forum.

    bis bald
    akari



  • Weil ich unter Borland programmiere und es scheinbar was mit meinem Quelltext zu tun hat...



  • Hallo

    wenn du aber keine VCL-Sachen benutzt, sondern reine WinAPI, dann spielt es keine Rolle das du mit dem Borland Compiler arbeitest.

    Desweiteren wird niemand ohne relevanten Quellcode helfen können.

    bis bald
    akari



  • while(1)
    {
      if(com6_ok)
      {
        printf("\nSerielle Schnittstellen erfolgreich eingerichtet!\n");
    
        while(1)
        {
          NumRxBytes = ReceiveData(hCom6, Buffer, BufSize);
    
          for (DWORD i=0;i<NumRxBytes;i++)
          {
            RxHex = IntToHex(Buffer[i],2);
    
            printf("COM6 RxD: %s  %s\n", Buffer[i], RxHex);
          }
        }
      }
      else
      {
        printf("\nFehler\n");
      }
    }
    

    So viel zum Quellcode, arbeite mit CreateFile, ReadFile, etc.

    [edit="junix"]sfds[/edit] << Danke! 😃



  • Wozu zweimal "while (1)"?
    Es ist unmöglich, dass sich dein Programm beendet (while (1))
    Compilerwarnungen (unreachable Code) sollten beachtet werden
    Was ist ReceiveData?
    Wieso arbeitest du nicht im Overlapped-Betrieb und wartest auf Events welche dir gesetzt werden?
    Ausserdem bezweifle ich, dass die Ausgabe dem entspricht, was du tatsächlich machen willst.



  • Ursprünglich stand in der ersten while-Schleife eine Variable die mittels else-Teil am Ende auf 0 gesetzt werden konnte. Was bewirkt denn das overlappen?
    Das ideale wäre eine Möglichkeit, nur bei Empfang etwas auszuführen, hab aber im Konsolenexperten bisher keine Möglichkeit gefunden, das umzusetzen...



  • Problem behoben, das Buffer[i] hat einen Fehler in der printf-Anweisung verursacht. Gestrichen -> gelöst 😉


Log in to reply