Пример #1
0
 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);
 }
Пример #2
0
        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);
        }