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); }
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); }