With rt-preempt kernel 4.19 rt3 on mint 19.3 for 4 year write and send
data to hal with Lcnc2.9 pre0 from my c++ gui .... last week need to
upgrade to 2.9 on actual gihub ..... and my reading become unvaible
and every reading become HAL_TYPE_UNINITIALIZED ..... pieces of code
that I use for reading is these:


int do_gets_cmd(QString nameSig)

{

    hal_sig_t *sig = nullptr;

    hal_type_t type;

    void *d_ptr;

    char *value_str = {};

    static char buf[18];

    std::string str_false = "FALSE";

    std::string str_true = "TRUE";

    std::string str_unknow = "unknown_type";

    int valBIT  = 10;

    char name[strlen(nameSig.toStdString().c_str()) + 1];  // Make
sure there's enough space

    strcpy(name, nameSig.toStdString().c_str());


    qDebug() << Q_FUNC_INFO << "get signal receive ...." << name;

    /* get mutex before accessing shared data */

    rtapi_mutex_get(&(hal_data->mutex));

    /* search signal list for name */

    sig = halpr_find_sig_by_name(name);

    if (sig == 0) {

        rtapi_mutex_give(&(hal_data->mutex));

        qDebug() << Q_FUNC_INFO << "get signal not find ...." << name;

        valBIT = 10;

    }

    else{

        //rtapi_mutex_get(&(hal_data->mutex));

        ////qDebug() << Q_FUNC_INFO << "get signal FIND ...." << name;

        type = sig->type;

        //qDebug() << Q_FUNC_INFO << "get signal FIND .... VALID
HAL_TYPE for sig  :" << name << " ,   value....:" << type;

        if(sig->writers > 0){


           //qDebug() << Q_FUNC_INFO << "get bool receive .... case
HAS WRITER" ;

            d_ptr = SHMPTR(sig->data_ptr);

            if(type == HAL_BIT){

                if (*((hal_bit_t *) d_ptr) == 0){

                   // strcpy(value_str, str_false.c_str());

                    rtapi_mutex_give(&(hal_data->mutex));

                    valBIT = 0;

                    //value_str = "FALSE";

                    qDebug() << Q_FUNC_INFO << "get bool receive ....
case HAL_BIT:   " << valBIT  << "value from sig->name ...." << name;

                }

                else{

                   // strcpy(value_str, str_true.c_str());

                    rtapi_mutex_give(&(hal_data->mutex));

                    valBIT = 1;

                    //value_str = "TRUE";

                    qDebug() << Q_FUNC_INFO << "get bool receive ....
case HAL_BIT:   " << valBIT  << "value from sig->name ...." << name;

                    }

            }

            else if(type == HAL_FLOAT){

            snprintf(buf, 16, "%.7g", (double)*((hal_float_t *) d_ptr));

            rtapi_mutex_give(&(hal_data->mutex));

            value_str = buf;

            qDebug() << Q_FUNC_INFO << "get bool receive .... case
HAL_FLOAT"  << "value from sig->name ...." << name;

            }

            else if(type == HAL_S32){

            snprintf(buf, 16, "%ld", (long)*((hal_s32_t *) d_ptr));

            rtapi_mutex_give(&(hal_data->mutex));

            value_str = buf;

            qDebug() << Q_FUNC_INFO << "get bool receive .... case
HAL_S32"   << "value from sig->name ...." << name;

            }

            else if(type == HAL_U32){

            snprintf(buf, 16, "%ld", (unsigned long)*((hal_u32_t *) d_ptr));

            rtapi_mutex_give(&(hal_data->mutex));

            value_str = buf;

            qDebug() << Q_FUNC_INFO << "get bool receive .... case
HAL_U32"  << "value from sig->name ...." << name;

            }

            else if(type == HAL_PORT){

            //snprintf(buf, 16, "%ld", (unsigned long)*((hal_u32_t *) d_ptr));

            rtapi_mutex_give(&(hal_data->mutex));

           // value_str = buf;

            qDebug() << Q_FUNC_INFO << "get bool receive .... case
HAL_PORT"  << "value from sig->name ...." << name;

            }

            else if(type == HAL_TYPE_UNINITIALIZED){

            //snprintf(buf, 16, "%ld", (unsigned long)*((hal_u32_t *) d_ptr));

            rtapi_mutex_give(&(hal_data->mutex));

           // value_str = buf;

            qDebug() << Q_FUNC_INFO << "get bool receive ....
HAL_TYPE_UNINITIALIZED"  << "value from sig->name ...." << name;

            }

and return every time HAL_TYPE_UNINITIALIZED ..... why?? ... my app is
the same, my SO too, I add only

python3 support, but seems linking of hal_priv.h and hal.h not work
properly ..... or there are something of similar that not run ...

perhaps if use axis gui my machine work perfect .... i use my gui c++,
can read trought command ethercat upload ....., but can not from hal
...

any help type is appreciated

regards


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

Reply via email to