Finally sometings change .... I arrange the code in these manner:

    const char *nmlfile =
"/home/bkt/linuxcnc-dev/configs/common/linuxcnc.nml";
    RCS_STAT_CHANNEL *stat = new RCS_STAT_CHANNEL(emcFormat, "emcStatus",
"xemc", nmlfile);
    RCS_CMD_CHANNEL *cmd = new RCS_CMD_CHANNEL(emcFormat, "emcCommand",
"xemc", nmlfile, 0);
    NML *error = new NML(emcFormat, "emcError", "xemc", nmlfile);

/***************** start while cicle  with some non-relevant code
**************************/

            if(counter>=50 && counter<51)
            {
                 QTextStream(stdout) <<  "state_msg try zone" << endl;
                 EMC_TASK_SET_STATE *state_msg = (EMC_TASK_SET_STATE
*)malloc(sizeof (cmd));
                 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;
                 cmd->write(state_msg);
                 //emcCommandBuffer->write(state_msg);
                 QTextStream(stdout) <<  "just write on emcCommandBuffer"
<< endl;
                 free(state_msg);

            }

            counter++;

/*************** thread continue ********************/

and the terminal output was these:

state_msg try zone
spy 1
spy 2
spy 3
actual value of state_msg: 3
these steps seems right .. now try to write
libnml/cms/cms_in.cc 1476: CMS: emcCommand message queue is full.
libnml/cms/cms_in.cc 1477: (continued) CMS: Message requires
139790984994912 bytes but only 0 bytes are left.

**********************************************************
* Current Directory = /home/bkt/linuxcnc-dev
*
**********************************************************
* BufferName = emcCommand
* BufferType = 0
* ProcessName = xemc
* Configuration File = /home/bkt/linuxcnc-dev/configs/common/linuxcnc.nml
* CMS Status = -7 (CMS_QUEUE_FULL:=  A write failed because queuing was
enabled but there was no room to add to the queue. )
* Recent errors repeated:

CMS: emcCommand message queue is full.

(continued) CMS: Message requires 139790984994912 bytes but only 0 bytes
are left.


* BufferLine: B emcCommand            SHMEM   localhost       8192    0
  0       1       16 1001 TCP=5005 xdr queue confirm_write serial
* ProcessLine: P xemc          emcCommand      LOCAL   localhost       W
    0       10.0    0       10
* error_type = 8 ( )
************************************************************

just write on emcCommandBuffer

Obviusly there is some error .... but at least now I have an intellegible
answer from terminal .... Now I know queque is full because I not start one
.... I still don't know how to start the queque, but at least I know there
is this to do.
If anyone can suggest it to me, it is welcome.


Good end of the year to all and a good start for a great 2020 to all
those who deal with Linuxcnc.



Il giorno lun 30 dic 2019 alle ore 15:26 theman whosoldtheworld <
bleachk...@gmail.com> ha scritto:

>   @ 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.
>
>
> 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++;
>
> get these terminal output:
>
>
>
>
>
>
>
> *state_msg try zonespy 1spy 2spy 3actual value of state_msg: 3these steps
> seems right .. now try to writeSegmentation error (core dump creato)*
>
> Anyone know because these row is not right?
>                  emcCommandBuffer->write(state_msg);
>
> error on malloc?? I need to call state_msg->update()?? I need to implement
> a function like these?
>
> int emcCommandSend(RCS_CMD_MSG & cmd)
> {
> // write command
> if (emcCommandBuffer->write(&cmd)) {
> return -1;
> }
> emcCommandSerialNumber = cmd.serial_number;
> return 0;
> }
>
> Really not know why these.
>
> Accept any suggest.
>
>
>
>
> Il giorno sab 28 dic 2019 alle ore 08:40 N <nicklas.karlsso...@gmail.com>
> ha scritto:
>
>> I would use the latest version available in whatever distribution you
>> happen to use but are not totally sure where sure where might be some issue
>> with some version. I compile Linuxcnc for myself and never thought to much
>> about which version of the compiler to use.
>>
>> I assume the warnings are about comppiled code then they should be there
>> whatever version of compiler you use. To get rid of the warnings you have
>> to figure out a better way to write program if possible, sometimes it's
>> possible but not always. If you wrote the code warnings are about you of
>> course have to check it to make sure there is no problem.
>>
>>
>> > other problem .... I try to copy my project on ubuntu 18.04 pc with gcc
>> 7.4
>> > .... I have a lot of warning .... the major issue seems stdio.hand
>> cstdlib
>> > is not well accept from qt + gcc7.4 ..... wath is the ideal version of
>> gcc
>> > for use with Linuxcnc file?
>> >
>> > Il giorno ven 27 dic 2019 alle ore 18:47 N <
>> nicklas.karlsso...@gmail.com>
>> > ha scritto:
>> >
>> > >   EMC_TASK_SET_STATE state_msg;
>> > > There is no malloc because memory is allocated automatically then
>> function
>> > > is entered and deallocated automatically then it exit. It is allocated
>> > > stack like and most probably on the stack but are not sure this is
>> always
>> > > the case.
>> > >
>> > > Local variable I consider the best method to allocate memory then it
>> could
>> > > be used for several reasons, usually most important because it is a
>> local
>> > > variable. But it also have advantage memory could be allocated with
>> > > increasing pointer, this is fast and deterministic. Think ADA have a
>> method
>> > > so that pointer to allocated memory is not remembered by misstake at
>> > > compile time but not C/C++. If you do not know what the stack is, it
>> is a
>> > > pointer to a memory set aside this purpose, then a function is called
>> > > adress before jump is stored on stack while stack pointer is updated
>> > > increased/decreased, then function exit it is the opposite order.
>> malloc
>> > > have to find a free area while stack like memory just
>> increase/decrease a
>> > > pointer but it only work for local variables in functions.
>> > >
>> > >
>> > > Variable is initialized by row below although I are not sure all
>> fields
>> > > are initialized. Compiler may warn if it is not initialized but as I
>> > > remember it will not warn if some fields are unitialized.
>> > >   state_msg.state = EMC_TASK_STATE_ESTOP;
>> > >
>> > >
>> > > malloc return a pointer to "void" which is more or less equivalent to
>> > > pointer to unknown data type which must be the reason you get "no
>> viable
>> > > conversion from int to EMC_TASK_SET_STATE" warning. You have to use
>> type
>> > > conversion to get rid of warning (EMC_TASK_SET_STATE)malloc(...) and
>> make
>> > > sure correct size is allocated by using sizof(...) and you also have
>> to
>> > > remember deallocate/free memory then not used anymore but not before.
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > > >
>> > > > > Memory may be allocated with malloc but unless function
>> > > > > emcCommandBuffer->write(...) store the pointer internally, copy
>> data
>> > > > > internally is below might be a much better idea. If state_msg
>> variable
>> > > is
>> > > > > not used further down or at least is not supposed the block will
>> also
>> > > limit
>> > > > > life time of variable.
>> > > > >
>> > > >
>> > > > this row of code is extract from shcom.cc:
>> > > >
>> > > > int emcCommandSend(RCS_CMD_MSG & cmd)
>> > > > {
>> > > >     // write command
>> > > >     if (emcCommandBuffer->write(&cmd)) {
>> > > >         return -1;
>> > > >     }
>> > > >     emcCommandSerialNumber = cmd.serial_number;
>> > > >     return 0;
>> > > > }
>> > > >
>> > > > int sendEstop()
>> > > > {
>> > > >     EMC_TASK_SET_STATE state_msg;
>> > > >
>> > > >     state_msg.state = EMC_TASK_STATE_ESTOP;
>> > > >     emcCommandSend(state_msg);
>> > > >     if (emcWaitType == EMC_WAIT_RECEIVED) {
>> > > > return emcCommandWaitReceived();
>> > > >     } else if (emcWaitType == EMC_WAIT_DONE) {
>> > > > return emcCommandWaitDone();
>> > > >     }
>> > > >
>> > > >     return 0;
>> > > > }
>> > > >
>> > > > but there is not malloc for state_msg and not see where is
>> initialized
>> > > ....
>> > > >
>> > > > In my row code is the same situation .... but if try to use malloc
>> obtain
>> > > > warning like "no viable conversion from int to EMC_TASK_SET_STATE"
>> ....
>> > > is
>> > > > because I try to use malloc with bad variable type?
>> > > > In my QtDro.h file I use these .hh file of Lcnc:
>> > > >
>> > > > #include "include/cmd_msg.hh"
>> > > > #include "include/stat_msg.hh"
>> > > > #include "include/emc_nml.hh"
>> > > > #include <stat_msg.hh>
>> > > > #include <cmd_msg.hh>
>> > > > #include <nml.hh>
>> > > > #include "emc.hh"               // EMC NML
>> > > > #include "include/emcglb.h"             // EMC_NMLFILE,
>> > > TRAJ_MAX_VELOCITY,
>> > > > TOOL_TABLE_FILE
>> > > > #include "include/emccfg.h"             // DEFAULT_TRAJ_MAX_VELOCITY
>> > > > #include "inifile.hh"           // INIFILE
>> > > >
>> > > > Not understand how to initialize state_msg.
>> > > >
>> > > > thanks and good end of 2019 and new 2020 at all.
>> > > >
>> > > > bkt
>> > > >
>> > > > Il giorno gio 19 dic 2019 alle ore 17:54 N <
>> nicklas.karlsso...@gmail.com
>> > > >
>> > > > ha scritto:
>> > > >
>> > > > > > just a guess.
>> > > > > >
>> > > > > > EMC_TASK_SET_STATE *state_msg;
>> > > > > >
>> > > > > > state_msg is a pointer, yet no memory allocated for it.
>> > > > > >
>> > > > > > state_msg->state = EMC_TASK_STATE_OFF;
>> > > > > >
>> > > > > > you try to write in a memory space that officially has no memory
>> > > > > assigned yet.
>> > > > > >
>> > > > > > ju
>> > > > > You are correct no memory assigned. Maybe no warning for using an
>> > > > > unitialized variable, if turned a warning would be issued for
>> using
>> > > > > unitizialized variable.
>> > > > >
>> > > > > Memory may be allocated with malloc but unless function
>> > > > > emcCommandBuffer->write(...) store the pointer internally, copy
>> data
>> > > > > internally is below might be a much better idea. If state_msg
>> variable
>> > > is
>> > > > > not used further down or at least is not supposed the block will
>> also
>> > > limit
>> > > > > life time of variable.
>> > > > >
>> > > > > {
>> > > > >   EMC_TASK_SET_STATE state_msg;
>> > > > >
>> > > > >   state_msg.state = EMC_TASK_STATE_OFF;
>> > > > >   state_msg.serial_number = ++emcCommandSerialNumber;
>> > > > >   emcCommandBuffer->write(&state_msg);
>> > > > > }
>> > > > >
>> > > > >
>> > > > > _______________________________________________
>> > > > > Emc-developers mailing list
>> > > > > Emc-developers@lists.sourceforge.net
>> > > > > https://lists.sourceforge.net/lists/listinfo/emc-developers
>> > > > >
>> > > >
>> > > > _______________________________________________
>> > > > Emc-developers mailing list
>> > > > Emc-developers@lists.sourceforge.net
>> > > > https://lists.sourceforge.net/lists/listinfo/emc-developers
>> > >
>> > >
>> > > --
>> > > N <nicklas.karlsso...@gmail.com>
>> > >
>> > >
>> > > _______________________________________________
>> > > Emc-developers mailing list
>> > > Emc-developers@lists.sourceforge.net
>> > > https://lists.sourceforge.net/lists/listinfo/emc-developers
>> > >
>> >
>> > _______________________________________________
>> > Emc-developers mailing list
>> > Emc-developers@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/emc-developers
>>
>>
>> _______________________________________________
>> Emc-developers mailing list
>> Emc-developers@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/emc-developers
>>
>

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

Reply via email to