/** Queues pending data to be written on next cycle. (only valid if start() has been called). */ public void SetValue(String value) { byte[] data = null; if (IsBE()) { switch (Size) { case TagType.Bit: data = new byte[] { (byte)(value.Equals("0") ? 0 : 1) }; break; case TagType.Int8: data = new byte[] { Byte.ValueOf(value) }; break; case TagType.Int16: data = new byte[2]; BE.setuint16(data, 0, Int32.ValueOf(value)); break; case TagType.Int32: data = new byte[4]; BE.setuint32(data, 0, Int32.ValueOf(value)); break; case TagType.Float32: data = new byte[4]; BE.setuint32(data, 0, Float.FloatToIntBits(Float.ValueOf(value))); break; case TagType.Float64: data = new byte[4]; BE.setuint64(data, 0, Double.DoubleToLongBits(Double.ValueOf(value))); break; } } else { switch (Size) { case TagType.Bit: data = new byte[] { (byte)(value.Equals("0") ? 0 : 1) }; break; case TagType.Int8: data = new byte[] { Byte.ValueOf(value) }; break; case TagType.Int16: data = new byte[2]; LE.setuint16(data, 0, Int32.ValueOf(value)); break; case TagType.Int32: data = new byte[4]; LE.setuint32(data, 0, Int32.ValueOf(value)); break; case TagType.Float32: data = new byte[4]; LE.setuint32(data, 0, Float.FloatToIntBits(Float.ValueOf(value))); break; case TagType.Float64: data = new byte[4]; LE.setuint64(data, 0, Double.DoubleToLongBits(Double.ValueOf(value))); break; } } lock (pendingLock) { pending = data; } }