コード例 #1
0
        private byte[] ReadSam100(byte[] requestHeader, byte[] responseHeader, ushort startAddress, ushort endAddress)
        {
            byte[] result = null;

            var numberOfBytesRequested = (byte)(endAddress - startAddress + 1);
            var commandBlock           = new byte[7];

            Buffer.BlockCopy(requestHeader, 0, commandBlock, 0, requestHeader.Length);

            commandBlock[3] = Convert.ToByte(startAddress);
            commandBlock[4] = numberOfBytesRequested;

            var reqChecksum = commandBlock.Sum(y => y);
            var reqMsb      = (reqChecksum >> 8) & byte.MaxValue;
            var reqLsb      = reqChecksum & byte.MaxValue;

            commandBlock[5] = Convert.ToByte(reqMsb);
            commandBlock[6] = Convert.ToByte(reqLsb);

            result = Controller.Execute(commandBlock, numberOfBytesRequested, responseHeader);

            if (result?.Length != numberOfBytesRequested)
            {
                throw new InvalidDataException("Unexpected or no data was received from the SAM100 device.");
            }

            return(result);
        }
コード例 #2
0
ファイル: Sam205Reader.cs プロジェクト: tatyana-dimoff/iot
        private byte[] ReadSam205(byte[] requestHeader, byte[] responseHeader, ushort startAddress, ushort endAddress)
        {
            var addressMsb             = startAddress >> 8;
            var addressLsb             = startAddress & byte.MaxValue;
            var numberOfBytesRequested = (byte)(endAddress - startAddress + 1);
            var commandBlock           = new byte[10];

            Buffer.BlockCopy(requestHeader, 0, commandBlock, 0, requestHeader.Length);

            commandBlock[5] = Convert.ToByte(addressMsb);
            commandBlock[6] = Convert.ToByte(addressLsb);
            commandBlock[7] = Convert.ToByte(numberOfBytesRequested);

            var reqChecksum = commandBlock.Sum(y => y);
            var reqMsb      = (reqChecksum >> 8) & byte.MaxValue;
            var reqLsb      = reqChecksum & byte.MaxValue;

            commandBlock[8] = Convert.ToByte(reqMsb);
            commandBlock[9] = Convert.ToByte(reqLsb);

            var result = Controller.Execute(commandBlock, numberOfBytesRequested, responseHeader);

            return(result);
        }