示例#1
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);
        }