X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;ds=sidebyside;f=dsl%2Fruntime%2Fsrc%2Fnl%2Fru%2Fdes%2FRemoteSensors.java;fp=dsl%2Fruntime%2Fsrc%2Fnl%2Fru%2Fdes%2FRemoteSensors.java;h=afebb110d33b791c208e2edd3d7969bda4d6c842;hb=34dae1e7f9c49481d90b3d26978cc5ab52ccc050;hp=0000000000000000000000000000000000000000;hpb=c9506d94c22f96ba5ffea707f5040fcc9d6c3c3f;p=des2015.git diff --git a/dsl/runtime/src/nl/ru/des/RemoteSensors.java b/dsl/runtime/src/nl/ru/des/RemoteSensors.java new file mode 100644 index 0000000..afebb11 --- /dev/null +++ b/dsl/runtime/src/nl/ru/des/RemoteSensors.java @@ -0,0 +1,60 @@ +package nl.ru.des; + +import java.util.Queue; + +import lejos.robotics.SampleProvider; + +public class RemoteSensors{ + public static final int DELAY = 250; + private SampleProvider left, right, ultra, color; + private float[] leftSamples, rightSamples, ultraSamples, colorSamples; + private float leftLatest, rightLatest, ultraLatest, colorLatest; + + public enum RemoteSensorEnum{ + LEFT, RIGHT, ULTRA, COLOR; + } + + public RemoteSensors(SampleProvider left, SampleProvider right, SampleProvider ultra, SampleProvider color){ + this.left = left; + this.right = right; + this.ultra = ultra; + this.color = color; + leftSamples = new float[left.sampleSize()]; + rightSamples = new float[right.sampleSize()]; + ultraSamples = new float[ultra.sampleSize()]; + colorSamples = new float[color.sampleSize()]; + } + + public void start(Queue q){ + long last = System.currentTimeMillis(); + LCDPrinter.print("Start sending values..."); + while(true){ + if(System.currentTimeMillis()-last > DELAY && q.size()<5){ + last = System.currentTimeMillis(); + left.fetchSample(leftSamples, 0); + if(leftSamples[0] != leftLatest){ + leftLatest = leftSamples[0]; + q.add(Integer.toString(RemoteSensorEnum.LEFT.ordinal())+Integer.toString((int)leftLatest)+"\n"); + } + right.fetchSample(rightSamples, 0); + if(rightSamples[0] != rightLatest){ + rightLatest = rightSamples[0]; + q.add(Integer.toString(RemoteSensorEnum.RIGHT.ordinal())+Integer.toString((int)rightLatest)+"\n"); + } + + ultra.fetchSample(ultraSamples, 0); + if(ultraSamples[0] != ultraLatest){ + ultraLatest = ultraSamples[0]; + q.add(Integer.toString(RemoteSensorEnum.ULTRA.ordinal())+Float.toString(ultraLatest)+"\n"); + } + + color.fetchSample(colorSamples, 0); + if(colorSamples[0] != colorLatest){ + colorLatest = colorSamples[0]; + q.add(Integer.toString(RemoteSensorEnum.COLOR.ordinal())+Integer.toString((int)colorLatest)+"\n"); + } + } + Thread.yield(); + } + } +}