- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 7 von 7

Thema: Multithread in C++ in Klassen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    26.04.2016
    Beiträge
    10
    Hallo,
    vielen Dank für die raschen Antworten. Habe mir mal die links angeschaut und auch die Codes aus dem anderen Thread.
    Desweiteren habe ich noch auf VS2015 umgestellt.

    Gerade habe ich mal versucht meinen Code nach dem Beispiel von schorsch_76 umzuschreiben,
    bekomme dabei allerdings den Fehler "C2039 'atomic': is not a member of std" gefolgt von weiteren Fehlern in dieser Zeile.
    Desweiteren spuckt er bei jedem m_run einen Fehler aus, was aber denke ich daran liegt dass er die Deffinition nicht nimmt.


    Code:
    	std::atomic<bool> m_run;
    Anbei noch mein geänderter Code:
    Code:
    //CommSeriell.cpp
    
    CommSeriell::CommSeriell()
    {
    	m_run.store(true);
    	m_thread = std::thread(std::bind(&CommSeriell::theThread, this));
    }
    
    
    CommSeriell::~CommSeriell()
    {
    	m_run.store(false);
    	if (m_thread.joinable()
    	{
    		m_thread.join();
    	}
    }
    
    void CommSeriell::theThread()
    {
    	initComPort();
    	while (m_run.load())
    	{
    		recieveComPort();
    	}
    	
    	CloseHandle(hComm);//Closing the Serial Port
    	printf("\n +==========================================+\n");
    };
    Code:
    //CommSeriell.h
    
    #pragma once
    class CommSeriell
    {
    public:
    	CommSeriell();
    	~CommSeriell();
    
    private:
    	std::atomic<bool> m_run;
    	std::thread m_thread;
    
    	HANDLE hComm;                          // Handle to the Serial port
    	wchar_t  ComPortName[7];  // Name of the Serial port(May Change) to be opened,
    	BOOL  Status;                          // Status of the various operations 
    	DWORD dwEventMask;                     // Event mask to trigger
    	char  TempChar;                        // Temperory Character
    	char  SerialBuffer[4096];               // Buffer Containing Rxed Data
    	DWORD NoBytesRead;                     // Bytes read by ReadFile()
    	int i = 0;
    	int error = 0;
    
    	BOOL initComPort();
    	BOOL setRecieveMask();
    	BOOL recieveComPort();
    	BOOL readNMEA();
    	void theThread();
    
    };
    MfG
    Florian

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Zitat Zitat von FlorianKr Beitrag anzeigen
    bekomme dabei allerdings den Fehler "C2039 'atomic': is not a member of std" gefolgt von weiteren Fehlern in dieser Zeile.
    Da fehlt dann wohl ein #include <atomic>

  3. #3
    Unregistriert
    Gast
    Oh ja das war der fehler, danke.

    Allerdings bringt er mir jetzt noch einen letzten Fehler:

    Error C2280 'CommSeriell::CommSeriell(const CommSeriell &)': attempting to reference a deleted function ConsoleApplication1 c:\program files (x86)\microsoft visual studio 14.0\vc\include\type_traits 1466

    Beim Doppelklick darauf öffnet sich eine Datei mit dem Namen type_traits.

    Florian

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    26.04.2016
    Beiträge
    10
    Habe meinen Fehler gefunden.
    Hatte noch einen alten Threadaufruf in der Hauptschleife vom ausprobieren.

    Jetzt funktioniert das ganze so wie ich es mir vorgestellt habe.

    Vielen Danke für die schnelle Hilfe
    Florian

Ähnliche Themen

  1. Warum keine Klassen für Ein-/Ausgabe?
    Von p_mork im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 17.03.2007, 14:42
  2. (LEGO MINDSTORMS) lejos Klassen Facharbeit
    Von George Dorn im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 0
    Letzter Beitrag: 01.03.2006, 16:29
  3. Multithread in Basic?
    Von Sommer im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 27.12.2005, 14:50

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress