public void WriteFrame(XBeeFrame frame) { var data = frame.FrameData.ToArray(); _port.Write(new byte[] {_FRAME_START}, 0, 1); _port.Write(new[] {(byte)((data.Length & 0xFF00) >> 8), (byte)(data.Length & 0xFF)}, 0, 2); _port.Write(data, 0, data.Length); _port.Write(new[] {CalculateChecksum(data)}, 0, 1); }
public XBeeIOFrame(XBeeFrame frame) { Frame = frame; SourceAddress = frame.DataValue(1, 8); SourceNetworkAddress = (ushort)frame.DataValue(9, 2); ReceiveOptions = frame.FrameData[11]; NumberOfSamples = frame.FrameData[12]; DigitalChannelMask = (ushort)frame.DataValue(13, 2); AnalogChannelMask = frame.FrameData[15]; var nextIndex = 16; if (DigitalChannelMask > 0) { DigitalSamples = (ushort)frame.DataValue(nextIndex, 2); nextIndex += 2; } if ((AnalogChannelMask & 0x1) > 0) { Analog0Sample = (ushort)frame.DataValue(nextIndex, 2); nextIndex += 2; } if ((AnalogChannelMask & 0x2) > 0) { Analog1Sample = (ushort)frame.DataValue(nextIndex, 2); nextIndex += 2; } if ((AnalogChannelMask & 0x4) > 0) { Analog2Sample = (ushort)frame.DataValue(nextIndex, 2); nextIndex += 2; } if ((AnalogChannelMask & 0x8) > 0) Analog3Sample = (ushort)frame.DataValue(nextIndex, 2); }