>   @ N  *for sure problem is related to gcc version and qt *.... because if
> run other ubuntu 18.04 with gcc 5.x all work like my develop pc that
> contains gcc 5.5.

It could also be a coincidence, at least my myself quite often make wrong 
conclusion then similar errors happen so I use to double checkt.

> Any how now I have other problem related previous post .....
> 
>           if(counter>=50 && counter<51)
>             {
>                  QTextStream(stdout) <<  "state_msg try zone" << endl;
>                  EMC_TASK_SET_STATE *state_msg = (EMC_TASK_SET_STATE
> *)malloc(sizeof (EMC_TASK_SET_STATE));
>                  QTextStream(stdout) <<  "spy 1" << endl;
>                 // state_msg->clear();  /* these not work because  try to
> clear empty array? */
>                  QTextStream(stdout) <<  "spy 2" << endl;
>                  state_msg->state = EMC_TASK_STATE_OFF;
>                  QTextStream(stdout) <<  "spy 3" << endl;
>                  state_msg->serial_number = ++emcCommandSerialNumber;
>                  QTextStream(stdout) <<  "actual value of state_msg: " <<
>  state_msg->state << endl;
>                  QTextStream(stdout) <<  "these steps seems right .. now
> try to write" << endl;
>                  emcCommandBuffer->write(state_msg);
>                  QTextStream(stdout) <<  "just write on emcCommandBuffer"
> << endl;
>                  free(state_msg);
> 
>             }
> 
>             counter++;

Most often use C and more seldom C++ so I might make misstake without compiling 
it for myself first. Would suggest this code to get rid of malloc(...) function 
and initialize variable then declared and as a const if not supposed to change.

if(counter>=50 && counter<51)
{
  QTextStream(stdout) <<  "state_msg try zone" << endl;
  EMC_TASK_SET_STATE state_msg();

  QTextStream(stdout) <<  "spy 1" << endl;
  state_msg->clear();  /* these not work because  try to clear empty array? */
  QTextStream(stdout) <<  "spy 2" << endl;
  state_msg->state = EMC_TASK_STATE_OFF;
  QTextStream(stdout) <<  "spy 3" << endl;
  state_msg->serial_number = ++emcCommandSerialNumber;
  QTextStream(stdout) <<  "actual value of state_msg: " <<
  state_msg->state << endl;
  QTextStream(stdout) <<  "these steps seems right .. now try to write" << endl;
  emcCommandBuffer->write(state_msg);
  QTextStream(stdout) <<  "just write on emcCommandBuffer" << endl;
}
counter++;

If I get it correct your code does not work because you allocate memory but 
does not create object, C++ have a constructor for this which I conclude from 
Linuxcnc code have no parameters.
  EMC_TASK_SET_STATE *state_msg = new EMC_TASK_SET_STATE();
  ...
  free(state_msg)

As you free memory at bottom I would suggest to use local variable as in first 
example above, then you will not forget to free memory, it also make possible 
stack like memory allocation.
  EMC_TASK_SET_STATE state_msg();


I use Eclipse then finding declarations is easier even though it does not work 
well for C++ or if Linuxcnc code is the problem. Codeblocks might be another 
good option if it works.


Nicklas Karlsson


_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to