Here is the declaration of my CSerialDataFrame class
Qt Code:
  1. #ifndef _SERIAL_DATA_FRAME_H
  2. #define _SERIAL_DATA_FRAME_H
  3.  
  4. #include <qstring.h>
  5.  
  6. class CSerialDataFrame
  7. {
  8. // Constructor / Destructor
  9. public:
  10. CSerialDataFrame(QString data="");
  11. CSerialDataFrame(const CSerialDataFrame&);
  12.  
  13. const CSerialDataFrame& operator+= (const CSerialDataFrame&);
  14. const CSerialDataFrame& operator= (const CSerialDataFrame&);
  15. bool operator== (const CSerialDataFrame&);
  16.  
  17.  
  18. // Functions
  19. void setSerialDataFrameValue(QString);
  20. QString getSerialDataFrameValue() const;
  21.  
  22. void setSerialDataFrameStatus(int);
  23. int getSerialDataFrameStatus() const;
  24.  
  25. // Members
  26. public:
  27. static const int SerialDataFrameStatusNotDefined;
  28. static const int SerialDataFrameStatusComplete;
  29. static const int SerialDataFrameStatusIncompleteHasJustTheBeginningPart;
  30. static const int SerialDataFrameStatusIncompleteHasJustTheEndingPart;
  31. static const int SerialDataFrameStatusIncompleteHasJustTheMiddlePart;
  32.  
  33. private:
  34. QString serialDataFrameValue;
  35. int serialDataFrameStatus;
  36. };
  37.  
  38. #endif
To copy to clipboard, switch view to plain text mode 

and the implementation
Qt Code:
  1. #include "SerialDataFrame.h"
  2.  
  3. const int CSerialDataFrame::SerialDataFrameStatusNotDefined = -1;
  4. const int CSerialDataFrame::SerialDataFrameStatusComplete = 0;
  5. const int CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheBeginningPart = 1;
  6. const int CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheEndingPart = 2;
  7. const int CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheMiddlePart = 3;
  8.  
  9.  
  10. // Constructor / Destructor
  11. CSerialDataFrame::CSerialDataFrame(QString data):
  12. serialDataFrameValue(data),
  13. serialDataFrameStatus(SerialDataFrameStatusNotDefined)
  14. {
  15. }
  16.  
  17.  
  18. CSerialDataFrame::CSerialDataFrame(const CSerialDataFrame& frame)
  19. {
  20. this->serialDataFrameValue = frame.serialDataFrameValue;
  21. this->serialDataFrameStatus = frame.serialDataFrameStatus;
  22. }
  23.  
  24.  
  25. const CSerialDataFrame& CSerialDataFrame::operator+=(const CSerialDataFrame& frame)
  26. {
  27. this->serialDataFrameValue += frame.serialDataFrameValue;
  28.  
  29. // Beginnig part + middle part = beginning part
  30. if( (this->serialDataFrameStatus == CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheBeginningPart) && (frame.serialDataFrameStatus == CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheMiddlePart) )
  31. {
  32. this->serialDataFrameStatus = CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheBeginningPart;
  33. }
  34. // Beginning part + ending part = complete part
  35. else if( (this->serialDataFrameStatus == CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheBeginningPart) && (frame.serialDataFrameStatus == CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheEndingPart) )
  36. {
  37. this->serialDataFrameStatus = CSerialDataFrame::SerialDataFrameStatusComplete;
  38. }
  39. // Middle part + middle part = middle part
  40. else if( (this->serialDataFrameStatus == CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheMiddlePart) && (frame.serialDataFrameStatus == CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheMiddlePart) )
  41. {
  42. this->serialDataFrameStatus = CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheMiddlePart;
  43. }
  44. // Middle part + ending part = ending part
  45. else if( (this->serialDataFrameStatus == CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheMiddlePart) && (frame.serialDataFrameStatus == CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheEndingPart) )
  46. {
  47. this->serialDataFrameStatus = CSerialDataFrame::SerialDataFrameStatusIncompleteHasJustTheEndingPart;
  48. }
  49. // Other cases are not defined
  50. else
  51. this->serialDataFrameStatus = CSerialDataFrame::SerialDataFrameStatusNotDefined;
  52.  
  53. return *this;
  54. }
  55.  
  56.  
  57. const CSerialDataFrame& CSerialDataFrame::operator=(const CSerialDataFrame& frame)
  58. {
  59. this->serialDataFrameValue = frame.serialDataFrameValue;
  60. this->serialDataFrameStatus = frame.serialDataFrameStatus;
  61.  
  62. return *this;
  63. }
  64.  
  65.  
  66. bool CSerialDataFrame::operator==(const CSerialDataFrame& frame)
  67. {
  68. if( (this->serialDataFrameValue == frame.serialDataFrameValue) && (this->serialDataFrameStatus == frame.serialDataFrameStatus) )
  69. return true;
  70. else
  71. return false;
  72. }
  73.  
  74.  
  75. // Functions
  76. void CSerialDataFrame::setSerialDataFrameValue(QString value)
  77. {
  78. serialDataFrameValue = value;
  79. }
  80.  
  81.  
  82. QString CSerialDataFrame::getSerialDataFrameValue() const
  83. {
  84. return serialDataFrameValue;
  85. }
  86.  
  87.  
  88. void CSerialDataFrame::setSerialDataFrameStatus(int value)
  89. {
  90. serialDataFrameStatus = value;
  91. }
  92.  
  93.  
  94. int CSerialDataFrame::getSerialDataFrameStatus() const
  95. {
  96. return serialDataFrameStatus;
  97. }
To copy to clipboard, switch view to plain text mode 

All the afternoon I was looking logs delivered by qDebug. What happening is sometime strange. Sometime I can see that my class CSerialDataFrameDecoder is at a particular code line and the next step it is at a previous code line ... and it is not possible