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
Lesezeichen