/// <summary> /// Constructs a read date/time packet. /// </summary> /// <returns> /// Constructed and encoded read date/time packet /// </returns> public static byte[] ConstructReadDateTimePacket() { byte[] decodedPacket = new byte[] { (byte)PacketHeaders.ReadDateTime, 0 }; decodedPacket = InsertChecksum(decodedPacket); return(PacketEncoding.EncodePacket(decodedPacket)); }
/// <summary> /// Constructs a read register packet. /// </summary> /// <param name="registerData"> /// <see cref="RegisterData"/> instance containing register address to be read. /// </param> /// <returns> /// Constructed and encoded read register packet /// </returns> public static byte[] ConstructReadRegisterPacket(RegisterData registerData) { byte[] decodedPacket = new byte[] { (byte)PacketHeaders.ReadRegister, (byte)((ushort)registerData.Address >> 8), (byte)registerData.Address, 0 }; decodedPacket = InsertChecksum(decodedPacket); return(PacketEncoding.EncodePacket(decodedPacket)); }
/// <summary> /// Constructs an encoded command packet. /// </summary> /// <param name="commandCode"> /// Command code. See <see cref="CommandCodes"/>. /// </param> /// <returns> /// Constructed and encoded command packet. /// </returns> public static byte[] ConstructCommandPacket(CommandCodes commandCode) { byte[] decodedPacket = new byte[] { (byte)PacketHeaders.Command, (byte)((ushort)commandCode >> 8), (byte)commandCode, 0 }; decodedPacket = InsertChecksum(decodedPacket); return(PacketEncoding.EncodePacket(decodedPacket)); }
/// <summary> /// Constructs an encoded digital I/O packet. /// </summary> /// <param name="digitalIOdata"> /// DigitalIOdata object containing output states to be set. /// </param> /// <returns> /// Constructed and encoded digital I/O packet. /// </returns> public static byte[] ConstructDigitalIOpacket(DigitalIOdata digitalIOdata) { byte[] decodedPacket = new byte[] { (byte)PacketHeaders.DigitalIOdata, 0x00, digitalIOdata.State.ConvertToByte(), 0 }; decodedPacket = InsertChecksum(decodedPacket); return(PacketEncoding.EncodePacket(decodedPacket)); }
/// <summary> /// Constructs a write date/time packet. /// </summary> /// <param name="dateTimeData"> /// <see cref="DateTimeData"/> instance containing data to be written. /// </param> /// <returns> /// Constructed and encoded write date/time packet /// </returns> public static byte[] ConstructWriteDateTimePacket(DateTimeData dateTimeData) { byte[] decodedPacket = new byte[] { (byte)PacketHeaders.WriteDateTime, (byte)(((((dateTimeData.Year - 2000) % 100) / 10) << 4) | ((dateTimeData.Year - 2000) % 10)), (byte)(((((dateTimeData.Month) % 100) / 10) << 4) | (dateTimeData.Month % 10)), (byte)(((((dateTimeData.Day) % 100) / 10) << 4) | (dateTimeData.Day % 10)), (byte)(((((dateTimeData.Hours) % 100) / 10) << 4) | (dateTimeData.Hours % 10)), (byte)(((((dateTimeData.Minutes) % 100) / 10) << 4) | (dateTimeData.Minutes % 10)), (byte)(((((dateTimeData.Seconds) % 100) / 10) << 4) | (dateTimeData.Seconds % 10)), 0 }; decodedPacket = InsertChecksum(decodedPacket); return(PacketEncoding.EncodePacket(decodedPacket)); }
/// <summary> /// Constructs an encoded PWM output data packet. /// </summary> /// <param name="PWMoutputData"> /// PWM output data. /// </param> /// <returns> /// Constructed and encoded PWM output data packet. /// </returns> public static byte[] ConstructPWMoutputPacket(PWMoutputData PWMoutputData) { byte[] decodedPacket = new byte[] { (byte)PacketHeaders.PWMoutputData, (byte)(PWMoutputData.AX0 >> 8), (byte)PWMoutputData.AX0, (byte)(PWMoutputData.AX2 >> 8), (byte)PWMoutputData.AX2, (byte)(PWMoutputData.AX4 >> 8), (byte)PWMoutputData.AX4, (byte)(PWMoutputData.AX6 >> 8), (byte)PWMoutputData.AX6, 0 }; decodedPacket = InsertChecksum(decodedPacket); return(PacketEncoding.EncodePacket(decodedPacket)); }