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); }