Serielle Schnittstelle Com1 ansteuern



  • schon was von wochenende gehört?! 🕶



  • Dagegen ist nichts einzuwenden, wäre aber trotzdem schön, wenn jemand helfen könnte, da ich ohne die Abfrage nicht weiterkomme.

    Weißt du nicht zufällig was? Du scheinst ja Ahnung zu haben.

    MfG ACU





  • ACU schrieb:

    Dagegen ist nichts einzuwenden, wäre aber trotzdem schön, wenn jemand helfen könnte, da ich ohne die Abfrage nicht weiterkomme.

    Äh ja, ... leider sind die 50 Spezialisten meines unterirdischen Labors in der Gewerkschaft, und die verbietet Sonntagsarbeit ausdrücklich. Aber heute arbeiten sie wieder mit Hochdruck einzig an der Lösung deines Problems. Ich schätze heute Abend dürfte eine Lösung vor Feierabend ausfallen...

    ...wobei ich schon irgendwas gehört habe von einem Wissenschaftler, das er sich in der Art geäussert hat wie "Soll er die Doku doch selber lesen". Aber der Kerl wird natürlich sofort von mir freigestellt. Ist ja ne Frechheit, sowas!



  • So ich habe bei meinem Programm weitergemacht.
    Leider komme ich immernoch nicht weiter.
    Ich habe einiges aus den MSDN Beispielen schon probiert, aber leider funktioniert alles nicht.
    Was ich will ist eigentlich nur ein Code, der mir zurückliefert, ob Daten von der Seriellen Schnittstelle im Puffer bereitliegen. Das kann doch nicht so schwer sein oder?

    Da junix ja lieber intelligente seine Zeit mit intelligenten Texten verschwendet, hoffe ich auf die Hilfe Anderer.



  • 1.) Für was sind eigentlich die Timeouts gut.
    2.) Wie macht man eigentlich das Empfangen am besten. Ich weis ja nicht wann von dem externen Gerät etwas zu meinem PC geschickt wird. Ich dachte mir, dass ich hierfür einen Thread starte indem ich immer abfrage bis etwas zum PC kommt. Oder gibt es noch eine andere Möglichkeit?



  • Eine Andere Möglichkeit wäre die Funktion für das Empfangen in einen Timer zu packen.



  • Sunday schrieb:

    die schnittstelle muss geöffnet sein, bevor du sie konfigurieren kannst.

    // Timeouts fuer Port setzen
    void SetReadTimeouts(HANDLE hCom)
    {
      COMMTIMEOUTS timeouts;
    
      timeouts.ReadIntervalTimeout         = 100; // Zeit zwischen 2 Zeichen
      timeouts.ReadTotalTimeoutMultiplier  = 0;   // pro Zeichen
      timeouts.ReadTotalTimeoutConstant    = 1;
      timeouts.WriteTotalTimeoutConstant   = 0;   // kein Timeout beim Schreiben
      timeouts.WriteTotalTimeoutMultiplier = 0;
    
      if (!::SetCommTimeouts(hCom, &timeouts))
      {
        // ... Fehler
      }
    }
    
    // hCom ist im Header definiert (HANDLE hCom)
    void __fastcall TForm1::OpenComPort(char *Port)
    {
      if ((hCom = OpenComm(Port)) != INVALID_HANDLE_VALUE)
      {
        // mit default-Werten initialisieren
        SetDeviceControlBlock(hCom, CBR_9600, 8, NOPARITY, ONESTOPBIT);
    
        // Timeouts setzen
        SetReadTimeouts(hCom);
      }
    }
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      OpenComPort("COM1");
    }
    

    wenn du auf Button1 klickst, solltest du schonmal keine fehler bekommen, es sein denn deine Com existiert nicht.

    🙂

    Könnten Sie mir an meine E-Mail Adresse

    techniker100@hotmail.de

    Wie ich den Anschluss COM1 über C++ ansteuern kann.
    Bei mir Funktioniert das Irgend wie nicht.
    Könnten Sie mir vielleicht einen einfachen Quellcode mailen.



  • Gilt das für alle Windows_Betriebssysteme.
    Also kann ich die Funktion auf einem XP-Sytem und auch auf einen anderen wie Win-95 oder was muss ich dann beachten. Wenn ich das auf einem anderem Betriebssystem tun möchte?

    HANDLE hCom = ::CreateFile(Port,
    GENERIC_READ | GENERIC_WRITE,
    0,
    0,
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    0);



  • Hallo

    hier findest du die Doku zu der Funktion, dort stehen auch Versionspezifische Eigenheiten.

    bis bald
    akari



  • Diese Seite kenne ich schon hab schon ein paar mal versucht dort irgendwas zu verstehen. Bin aber leider voll die Englisch Niete.
    Könntest du mir vielleicht sagen wie der unterschied zwischn XP und 98 ist.



  • bronstein schrieb:

    Bin aber leider voll die Englisch Niete.

    schau mal bei Langenscheidt oder Pons vorbei. die haben gute englisch wörterbücher. sind ja auch nur 2 kleine sätze die auf einen unterschied zwischen winxp und win98 hinweisen.


Anmelden zum Antworten