afebb110d33b791c208e2edd3d7969bda4d6c842
3 import java
.util
.Queue
;
5 import lejos
.robotics
.SampleProvider
;
7 public class RemoteSensors
{
8 public static final int DELAY
= 250;
9 private SampleProvider left
, right
, ultra
, color
;
10 private float[] leftSamples
, rightSamples
, ultraSamples
, colorSamples
;
11 private float leftLatest
, rightLatest
, ultraLatest
, colorLatest
;
13 public enum RemoteSensorEnum
{
14 LEFT
, RIGHT
, ULTRA
, COLOR
;
17 public RemoteSensors(SampleProvider left
, SampleProvider right
, SampleProvider ultra
, SampleProvider color
){
22 leftSamples
= new float[left
.sampleSize()];
23 rightSamples
= new float[right
.sampleSize()];
24 ultraSamples
= new float[ultra
.sampleSize()];
25 colorSamples
= new float[color
.sampleSize()];
28 public void start(Queue
<String
> q
){
29 long last
= System
.currentTimeMillis();
30 LCDPrinter
.print("Start sending values...");
32 if(System
.currentTimeMillis()-last
> DELAY
&& q
.size()<5){
33 last
= System
.currentTimeMillis();
34 left
.fetchSample(leftSamples
, 0);
35 if(leftSamples
[0] != leftLatest
){
36 leftLatest
= leftSamples
[0];
37 q
.add(Integer
.toString(RemoteSensorEnum
.LEFT
.ordinal())+Integer
.toString((int)leftLatest
)+"\n");
39 right
.fetchSample(rightSamples
, 0);
40 if(rightSamples
[0] != rightLatest
){
41 rightLatest
= rightSamples
[0];
42 q
.add(Integer
.toString(RemoteSensorEnum
.RIGHT
.ordinal())+Integer
.toString((int)rightLatest
)+"\n");
45 ultra
.fetchSample(ultraSamples
, 0);
46 if(ultraSamples
[0] != ultraLatest
){
47 ultraLatest
= ultraSamples
[0];
48 q
.add(Integer
.toString(RemoteSensorEnum
.ULTRA
.ordinal())+Float
.toString(ultraLatest
)+"\n");
51 color
.fetchSample(colorSamples
, 0);
52 if(colorSamples
[0] != colorLatest
){
53 colorLatest
= colorSamples
[0];
54 q
.add(Integer
.toString(RemoteSensorEnum
.COLOR
.ordinal())+Integer
.toString((int)colorLatest
)+"\n");