getline hängt alles auf



  • also wenn ich beide getlines auskommentiere hängt sich nichts auf und ja sry das ichs vergessen hab zu sagen "/dev/ttyS0" is mein serieller port

    also so hängt sich nichts auf:

    void GetClass::getText()
    {
        std::string a;
        std::ifstream get("/dev/ttyS0");
    
    //    if(std::getline(get, a))
        {
    //        getline(get,a);
            QString b(a.c_str());
            list->addItem(b);
        }
    }
    


  • So hab auch eben mal ausprobiert selbst wenn ich die Schnittstelle zu spam dann hängt er sich auf 😞



  • Aber dein serieller Port ist kompatibel zu den C++-Streams?



  • Lies doch mal Zeichenweise zum Test.



  • Hab mal deinen Tipp ausprobiert

    void GetClass::getText()
    {
        char a[5];
        std::ifstream get("/dev/ttyS0");
    
        if(get.getline(a, 5))
        {
            get.getline(a, 5);
    //        QString b(a.c_str());
    	QString b=a;
            list->addItem(b);
        }
    }
    

    leider mit dem selben Resultat wie vorher 😞


  • Administrator

    @Irods,
    1. Ich habe einen Fehler im Code gemacht. Habe ihn per Edit korrigiert. Das zweite getline ist unnötig, bzw. sogar falsch. Also weg damit. Aber das ist nur ein Fehler von mir und hängt nicht mit dem Problem zusammen, nehme ich zumindest an.
    2. Wie spamst du die Sache denn zu? Was willst du überhaupt machen? Vielleicht liegt das Problem bei der falschen Verwendung. Gehört dann auch langsam ehers ins Linux Forum 😉

    Grüssli



  • Ah gar nicht gesehen jjjjop mein Port ist kompatibel zu denen strings sende auch mit denen und das funktioniert wunderbar.



  • hab deinen code so geändert:

    void GetClass::getText()
    {
        char a[5];
        std::ifstream get("/dev/ttyS0");
    
        if(get.getline(a, 5))
        {
    //        QString b(a.c_str());
    	QString b=a;
            list->addItem(b);
        }
    }
    

    also ich Spam den über einen Mikrocontroller zu, von dem kann ich bei putty auch was empfangen und für diesen Zweck um mit dem zu kommunizieren wollte ich auch die Funktion schreiben. so als Test



  • Hi hab ma ne programm füre console gschrieben

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    
    int main()
    {
    	char empfangeneNachricht1[255];
    	ifstream empfaenger("/dev/ttyS0");
    	empfaenger.getline(empfangeneNachricht1, 4);
    	cout<<endl<<empfangeneNachricht1<<endl;
    return 0;
    }
    

    das funktioniert komischerweise 😞



  • hab die funktion jetzt mal so umgeschirben:

    void GetClass::getText()
    {
    	char empfangeneNachricht1[255];
    	std::ifstream empfaenger("/dev/ttyS0");
    	empfaenger.getline(empfangeneNachricht1, 10);
    	QString b=empfangeneNachricht1;
            list->addItem(b);
    }
    

    jetzt kann ich was empfangen aber das nur wenn ich etwas empfangen kann sonst-> endlos schleife hängt sich auf und wenn ich was empfange dann hängt er sich auch kurz auf und wärden dessen kann ich das programm nicht nutzen.


Anmelden zum Antworten