private int readuint32() { int _uint32; if (le) { _uint32 = LE.getuint32(data, datapos); } else { _uint32 = BE.getuint32(data, datapos); } datapos += 4; return(_uint32); }
public void run() { try { String lastValue = tag.value; if (tag.parent == null) { if (!tag.c.IsConnected()) { if (!tag.Connect()) { return; } } } data = tag.Read(); if (data == null) { Console.WriteLine("Error:" + DateTime.GetMilliSecondsSinceEpoch() + ":data==null:host=" + tag.Host + ":tag=" + tag.Name); return; } if (tag.IsBE()) { switch (tag.Size) { case TagType.Bit: tag.value = data[0] == 0 ? "0" : "1"; break; case TagType.Int8: tag.value = Byte.ToString(data[0]); break; case TagType.Int16: tag.value = Int32.ToString(BE.getuint16(data, 0)); break; case TagType.Int32: tag.value = Int32.ToString(BE.getuint32(data, 0)); break; case TagType.Float32: tag.value = Float.ToString(Float.IntBitsToFloat(BE.getuint32(data, 0))); break; case TagType.Float64: tag.value = Double.ToString(Double.LongBitsToDouble(BE.getuint64(data, 0))); break; } } else { switch (tag.Size) { case TagType.Bit: tag.value = data[0] == 0 ? "0" : "1"; break; case TagType.Int8: tag.value = Byte.ToString(data[0]); break; case TagType.Int16: tag.value = Int32.ToString((short)LE.getuint16(data, 0)); break; case TagType.Int32: tag.value = Int32.ToString(LE.getuint32(data, 0)); break; case TagType.Float32: tag.value = Float.ToString(Float.IntBitsToFloat(LE.getuint32(data, 0))); break; case TagType.Float64: tag.value = Double.ToString(Double.LongBitsToDouble(LE.getuint64(data, 0))); break; } } lock (tag.pendingLock) { if (tag.pending != null) { tag.Write(tag.pending); } } if (tag.listener == null) { return; } if (lastValue == null || !tag.value.Equals(lastValue)) { tag.listener.TagChanged(tag, tag.value); } } catch (Exception e) { Console.WriteLine(e.ToString()); } }