Broken alsalib record

This commit is contained in:
IMback
2017-12-30 20:53:12 +01:00
parent 1dd7aca03b
commit 2e79a898e8
9 changed files with 106 additions and 34 deletions

View File

@ -116,22 +116,35 @@ void Microcontroller::processMicroReturn()
{
QString workbuff = _buffer;
workbuff.remove(0, 2);
QStringList workbufList = workbuff.split(',');
int numberOfRelays = workbufList[0].toInt();
if(workbufList.size() >= numberOfRelays+1)
if(_buffer.size() > 2 && _buffer[0] == "S" && _buffer[1] == "T")
{
bool hasChanged = false;
_relayStates.resize(numberOfRelays, false);
for(int i = 0; i < numberOfRelays; i++)
workbuff.remove(0, 2);
QStringList workbufList = workbuff.split(',');
int numberOfRelays = workbufList[0].toInt();
if(workbufList.size() >= numberOfRelays+1)
{
if(_relayStates[i] != (bool)workbufList[i+1].toInt())
bool hasChanged = false;
_relayStates.resize(numberOfRelays, false);
for(int i = 0; i < numberOfRelays; i++)
{
_relayStates[i] = (bool)workbufList[i+1].toInt();
hasChanged = true;
if(_relayStates[i] != (bool)workbufList[i+1].toInt())
{
_relayStates[i] = (bool)workbufList[i+1].toInt();
hasChanged = true;
}
}
if(hasChanged)relayStateChanged(_relayStates);
}
if(hasChanged)relayStateChanged(_relayStates);
}
else if(workbuff.contains("Door Open Warning"))
{
doorOpenTimeout();
}
else if(workbuff.size() > 2 && workbuff[0]=='D' && workbuff[1]=='2')
{
if(workbuff[3] == 'O') doorOpen(1);
else if(workbuff[3] == 'C') doorClosed(1);
}
}
@ -145,10 +158,7 @@ void Microcontroller::doTick()
_buffer.push_back(charBuf);
if( _buffer.endsWith('\n') )
{
if(_buffer.size() > 2 && _buffer[0] == "S" && _buffer[1] == "T")
{
processMicroReturn();
}
processMicroReturn();
textRecived(_buffer);
_buffer.clear();
}