int set_pin_FLOAT_calc(float pinFVc, QString pinVNc){ int retval; hal_sig_t *sig; hal_type_t type; void *d_ptr; QString Htype; /* hal_data_u *value; bool *con = nullptr; float checkVal = 0;*/ char name[strlen(pinVNc.toStdString().c_str()) + 1]; // Make sure there's enough space strcpy(name, pinVNc.toStdString().c_str()); rtapi_mutex_get(&(hal_data->mutex)); sig = halpr_find_sig_by_name(name); type = sig->type; if((sig != 0) && (type == HAL_FLOAT) && (sig->writers <= 0)){ //rtapi_mutex_get(&(hal_data->mutex)); d_ptr = SHMPTR(sig->data_ptr); *((hal_float_t *) (d_ptr)) = pinFVc; rtapi_mutex_give(&(hal_data->mutex)); /*int r=hal_get_pin_value_by_name(name,&type,&value,con); checkVal = value->f; rtapi_mutex_give(&(hal_data->mutex)); qDebug() << Q_FUNC_INFO << "sig " << name << " have these value: " << checkVal;*/ retval = 0; } else{ rtapi_mutex_give(&(hal_data->mutex)); switch (type) { case HAL_BIT: Htype = "HAL_BIT"; break; case HAL_FLOAT: Htype = "HAL_FLOAT"; break; case HAL_S32: Htype = "HAL_S32"; break; case HAL_U32: Htype = "HAL_U32"; break; default: Htype = "ERROR"; } qDebug() << Q_FUNC_INFO << "sig " << name << " is not writable or not exist ... type is: " << Htype << " and (sig>0 no good) sig->writers = " << sig->writers; retval = 100; } rtapi_mutex_give(&(hal_data->mutex)); return retval; } #endif // SEND_COMMAND_H