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.
Anbei noch mein geänderter Code:Code:std::atomic<bool> m_run;
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"); };MfGCode://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(); };
Florian







Zitieren


Lesezeichen