Пример #1
0
        /// <summary>
        /// Read value 3 retourne un DataObserver
        /// </summary>
        /// <param name="completeVariable"></param>
        /// <param name="dateTime"></param>
        /// <returns></returns>
        private DataObserver readValue3(DataObserver oldDataObs)
        {
            DataObserver dObs = oldDataObs;
            string completeVariable = oldDataObs.PathName;
            int importOk = vc.importVariable(completeVariable);
            int typeVS = -1;
            long oldTimeStamp = oldDataObs.Timestamp;
            long timeStamp = 0;
            string value = "-10";
            vc = Vs.getVariableController();
            vc.getType(completeVariable, out typeVS);
            Console.WriteLine("readValue : " + completeVariable + " TYPE " + typeVS + " VC " + importOk);

            if (importOk != 0 && !oldDataObs.IsChanging)
            {
                switch (typeVS)
                {
                    ///=================================================================================================
                    /// Si le type est égal à 1 alors c'est un entier
                    ///=================================================================================================
                    case 1:
                        dObs.Type = VS_Type.INTEGER;
                        IntegerReader intr = vc.createIntegerReader(completeVariable);
                        int valVarInt;

                        if (intr != null)
                        {
                            intr.setBlocking(1 * 200);
                            VariableState t = intr.waitForConnection();

                            if (t == VariableState.Ok)
                            {
                                intr.get(out valVarInt, out timeStamp);
                                value = valVarInt.ToString();
                            }
                        }

                        break;
                    ///=================================================================================================
                    ///=================================================================================================
                    /// Si le type est égal à 2 alors c'est un double
                    ///=================================================================================================
                    case 2:
                        dObs.Type = VS_Type.DOUBLE;
                        DoubleReader dblr = vc.createDoubleReader(completeVariable);
                        double valVarDbl;

                        if (dblr != null)
                        {
                            dblr.setBlocking(1 * 200);
                            VariableState t = dblr.waitForConnection();

                            if (t == VariableState.Ok)
                            {
                                dblr.get(out valVarDbl, out timeStamp);
                                value = valVarDbl.ToString();
                            }
                        }
                        break;
                    ///=================================================================================================
                    default:
                        dObs.Type = VS_Type.INVALID;
                        value = "Undefined";
                        break;
                }

                if (!oldDataObs.ValueObs.Equals(value))
                {
                    dObs.ValueObs = value;
                    dObs.ValueHasChanged = true;
                }
                else
                {
                    dObs.ValueHasChanged = false;
                }

                dObs.Timestamp = timeStamp;
            }

            return dObs;
        }
Пример #2
0
        private DataObserver readValue3(DataObserver oldDataObs)
        {
            DataObserver dObs             = oldDataObs;
            string       completeVariable = oldDataObs.PathName;
            int          importOk         = vc.importVariable(completeVariable);
            int          typeVS           = -1;
            long         oldTimeStamp     = oldDataObs.Timestamp;
            long         timeStamp        = 0;
            string       value            = "";

            vc.getType(completeVariable, out typeVS);



            if (importOk != 0 /*&& !oldDataObs.IsChanging*/)
            {
                //vc.waitForConnection(completeVariable,500);
                switch (typeVS)
                {
                ///=================================================================================================
                /// Si le type est égal à 1 alors c'est un entier
                ///=================================================================================================
                case 1:
                    dObs.Type = VS_Type.INTEGER;
                    IntegerReader intr = vc.createIntegerReader(completeVariable);
                    int           valVarInt;

                    if (intr != null)
                    {
                        intr.setBlocking(1 * 20);
                        //intr.waitForEventConnection();
                        VariableState t = intr.waitForFirstValue();

                        if (t == VariableState.Ok)
                        {
                            intr.get(out valVarInt, out timeStamp);
                            value = valVarInt.ToString();
                        }
                    }

                    break;

                ///=================================================================================================
                ///=================================================================================================
                /// Si le type est égal à 2 alors c'est un double
                ///=================================================================================================
                case 2:

                    dObs.Type = VS_Type.DOUBLE;
                    DoubleReader dblr = vc.createDoubleReader(completeVariable);
                    double       valVarDbl;

                    if (dblr != null)
                    {
                        dblr.setBlocking(1 * 20);
                        //dblr.waitForEventConnection();
                        VariableState t = dblr.waitForFirstValue();

                        if (t == VariableState.Ok)
                        {
                            dblr.get(out valVarDbl, out timeStamp);
                            value = valVarDbl.ToString();
                        }
                    }
                    break;

                ///=================================================================================================
                case 3:
                    break;

                ///=================================================================================================
                /// Si le type est égal à 4 alors c'est un Vector Integer (Tableau d'entier)
                ///=================================================================================================

                /*
                 * case 4:
                 *  dObs.Type = VS_Type.VECTOR_INTEGER;
                 *  VectorIntegerReader vecIntReader = vc.createVectorIntegerReader(completeVariable);
                 *  IntegerVector valVarVecInt = new IntegerVector();
                 *
                 *  if (vecIntReader != null)
                 *  {
                 *      vecIntReader.setBlocking(1 * 200);
                 *      VariableState t = vecIntReader.waitForConnection();
                 *
                 *      if (t == VariableState.Ok)
                 *      {
                 *          vecIntReader.get(valVarVecInt, out timeStamp);
                 *          value = tableToString(valVarVecInt);
                 *      }
                 *  }
                 *  break;
                 */
                ///=================================================================================================
                default:
                    dObs.Type = VS_Type.INVALID;
                    value     = "Undefined";
                    break;
                }

                if (!oldDataObs.Value.Equals(value))
                {
                    dObs.Value           = value;
                    dObs.ValueHasChanged = true;
                }
                else
                {
                    dObs.ValueHasChanged = false;
                }
                dObs.Timestamp = timeStamp;
                //dObs.WhenUpdated = howManyTime(oldTimeStamp, dObs.Timestamp);
                dObs.WhenUpdated = createDateTime(dObs.Timestamp);
            }
            displayValues(dObs);
            return(dObs);
        }