From d8a6c256d5d207d6aa17c7d673febd298369ef1b Mon Sep 17 00:00:00 2001 From: Arity-T Date: Tue, 11 Feb 2025 00:48:08 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0=20=D1=81?= =?UTF-8?q?=D0=B8=D0=BC=D1=83=D0=BB=D1=8F=D1=86=D0=B8=D0=B8=20=D1=81=D0=B5?= =?UTF-8?q?=D0=BD=D1=81=D0=BE=D1=80=D0=BE=D0=B2=20=D1=82=D0=B5=D0=BC=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=D1=82=D1=83=D1=80=D1=8B=20=D0=B8=20=D0=B2?= =?UTF-8?q?=D0=BB=D0=B0=D0=B6=D0=BD=D0=BE=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/spbstu/telematics/java/Sensor.java | 43 +++++++++++++++++-- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/lab3/src/main/java/ru/spbstu/telematics/java/Sensor.java b/lab3/src/main/java/ru/spbstu/telematics/java/Sensor.java index 5e0ea2c..c221ece 100644 --- a/lab3/src/main/java/ru/spbstu/telematics/java/Sensor.java +++ b/lab3/src/main/java/ru/spbstu/telematics/java/Sensor.java @@ -1,15 +1,50 @@ package ru.spbstu.telematics.java; +import java.util.Random; + /* * Симулирует работу сенсоров, установленных в комнате. */ public class Sensor implements Runnable { - Room room; - private double temperature; - private double humidity; + private Room room; + + public Sensor(Room room) { + this.room = room; + } + + // Температура + private volatile double temperature; + + public double getTemperature() { + return temperature; + } + + // Влажность + private volatile double humidity; + + public double getHumidity() { + return humidity; + } + + // Частота считывания значений с сенсоров + private long updateIntervalMs = 1000; + + // Параметры произвольной ошибки измерений сенсоров + private Random random = new Random(); + private double maxTemperatureError = 0.5; + private double maxHumidityError = 0.02; @Override public void run() { - + while (!Thread.interrupted()) { + temperature = room.getTemperature() + (random.nextDouble() - 0.5) * 2 * maxTemperatureError; + humidity = room.getHumidity() + (random.nextDouble() - 0.5) * 2 * maxHumidityError; + + try { + Thread.sleep(updateIntervalMs); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + } } }