269 lines
11 KiB
Java
269 lines
11 KiB
Java
package com.example.user.myapp;
|
|
|
|
import android.content.BroadcastReceiver;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.IntentFilter;
|
|
import android.os.Handler;
|
|
import android.support.v4.content.LocalBroadcastManager;
|
|
import android.support.v7.app.AppCompatActivity;
|
|
import android.os.Bundle;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.widget.ImageView;
|
|
|
|
public class MainActivity extends AppCompatActivity {
|
|
|
|
private Handler handlerCoil;
|
|
private Handler handlerDiscreteInput;
|
|
|
|
private GlobalState state;
|
|
private static final Integer REFRESH_DELAY = 1000;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
state = (GlobalState) getApplicationContext();
|
|
// listener
|
|
LocalBroadcastManager.getInstance(this).registerReceiver(coilMessageReceiver, new IntentFilter("readOnlyCoil"));
|
|
LocalBroadcastManager.getInstance(this).registerReceiver(discreteInputMessageReceiver, new IntentFilter("readOnlyDiscreteInput"));
|
|
// handler
|
|
handlerCoil = new Handler();
|
|
handlerCoil.post(refreshCoil);
|
|
|
|
handlerDiscreteInput = new Handler();
|
|
handlerDiscreteInput.post(refreshDiscreteInput);
|
|
|
|
setContentView(R.layout.activity_main);
|
|
|
|
// swipe event
|
|
OnSwipeTouchListener onSwipeTouchListener = new OnSwipeTouchListener(MainActivity.this) {
|
|
@Override
|
|
public void onSwipeLeft() {
|
|
Intent nextIntent = new Intent(MainActivity.this, ManualDriveActivity.class);
|
|
startActivity(nextIntent);
|
|
// handlerCoil.removeCallbacks(refreshCoil);
|
|
// handlerDiscreteInput.removeCallbacks(refreshDiscreteInput);
|
|
}
|
|
};
|
|
|
|
final ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this.findViewById(android.R.id.content)).getChildAt(0);
|
|
viewGroup.setOnTouchListener(onSwipeTouchListener);
|
|
}
|
|
|
|
@Override
|
|
public void onPause () {
|
|
super.onPause();
|
|
handlerCoil.removeCallbacks(refreshCoil);
|
|
handlerDiscreteInput.removeCallbacks(refreshDiscreteInput);
|
|
}
|
|
|
|
@Override
|
|
public void onResume () {
|
|
super.onResume();
|
|
handlerCoil.post(refreshCoil);
|
|
handlerDiscreteInput.post(refreshDiscreteInput);
|
|
}
|
|
|
|
Runnable refreshCoil = new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
Intent serviceIntent = new Intent(getApplicationContext(), MyIntentService.class);
|
|
serviceIntent.setAction("read.coil");
|
|
serviceIntent.putExtra("extra.ip.address", state.getIpAddress());
|
|
serviceIntent.putExtra("extra.ip.port", state.getPort());
|
|
serviceIntent.putExtra("extra.ref", GlobalState.InputConfig.Q_COIL.getStartReference());
|
|
serviceIntent.putExtra("extra.count", GlobalState.InputConfig.Q_COIL.getCount());
|
|
serviceIntent.putExtra("extra.intent.name", "readOnlyCoil");
|
|
getApplicationContext().startService(serviceIntent);
|
|
|
|
handlerCoil.postDelayed(this, REFRESH_DELAY);
|
|
}
|
|
};
|
|
|
|
Runnable refreshDiscreteInput = new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
Intent serviceIntent = new Intent(getApplicationContext(), MyIntentService.class);
|
|
serviceIntent.setAction("read.discrete.input");
|
|
serviceIntent.putExtra("extra.ip.address", state.getIpAddress());
|
|
serviceIntent.putExtra("extra.ip.port", state.getPort());
|
|
serviceIntent.putExtra("extra.ref", GlobalState.InputConfig.I_DI.getStartReference());
|
|
serviceIntent.putExtra("extra.count", GlobalState.InputConfig.I_DI.getCount());
|
|
serviceIntent.putExtra("extra.intent.name", "readOnlyDiscreteInput");
|
|
getApplicationContext().startService(serviceIntent);
|
|
|
|
handlerDiscreteInput.postDelayed(this, REFRESH_DELAY);
|
|
}
|
|
};
|
|
|
|
// on message receive, update the lights with dependings on coil value
|
|
private BroadcastReceiver coilMessageReceiver = new BroadcastReceiver() {
|
|
@Override
|
|
public void onReceive(Context context, Intent intent) {
|
|
Bundle bundle = intent.getExtras();
|
|
boolean[] booleanArray = bundle.getBooleanArray("coilValues");
|
|
|
|
// ============= Light ===============
|
|
ImageView pu1StatusLightOn = findViewById(R.id.pu1_status_light_on_mainview);
|
|
ImageView pu1StatusLightOff = findViewById(R.id.pu1_status_light_off_mainview);
|
|
ImageView pu2StatusLightOn = findViewById(R.id.pu2_status_light_on_mainview);
|
|
ImageView pu2StatusLightOff = findViewById(R.id.pu2_status_light_off_mainview);
|
|
|
|
ImageView sp1StatusLightOn = findViewById(R.id.sp1_status_light_on_mainview);
|
|
ImageView sp1StatusLightOff = findViewById(R.id.sp1_status_light_off_mainview);
|
|
ImageView b1StatusLightOn = findViewById(R.id.b1_status_light_on_mainview);
|
|
ImageView b1StatusLightOff = findViewById(R.id.b1_status_light_off_mainview);
|
|
|
|
ImageView m1StatusLightOn = findViewById(R.id.m1_status_light_on_mainview);
|
|
ImageView m1StatusLightOff = findViewById(R.id.m1_status_light_off_mainview);
|
|
ImageView m2StatusLightOn = findViewById(R.id.m2_status_light_on_mainview);
|
|
ImageView m2StatusLightOff = findViewById(R.id.m2_status_light_off_mainview);
|
|
|
|
// ============== Coil : Range 8192 - 8199 =================
|
|
// 8199
|
|
if (booleanArray[7]) {
|
|
b1StatusLightOn.setVisibility(View.VISIBLE);
|
|
b1StatusLightOff.setVisibility(View.INVISIBLE);
|
|
} else {
|
|
b1StatusLightOn.setVisibility(View.INVISIBLE);
|
|
b1StatusLightOff.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
// 8194
|
|
if (booleanArray[2]) {
|
|
m1StatusLightOn.setVisibility(View.VISIBLE);
|
|
m1StatusLightOff.setVisibility(View.INVISIBLE);
|
|
} else {
|
|
m1StatusLightOn.setVisibility(View.INVISIBLE);
|
|
m1StatusLightOff.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
// 8195
|
|
if (booleanArray[3]) {
|
|
m2StatusLightOn.setVisibility(View.VISIBLE);
|
|
m2StatusLightOff.setVisibility(View.INVISIBLE);
|
|
} else {
|
|
m2StatusLightOn.setVisibility(View.INVISIBLE);
|
|
m2StatusLightOff.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
// 8196
|
|
if (booleanArray[4]) {
|
|
pu1StatusLightOn.setVisibility(View.VISIBLE);
|
|
pu1StatusLightOff.setVisibility(View.INVISIBLE);
|
|
} else {
|
|
pu1StatusLightOn.setVisibility(View.INVISIBLE);
|
|
pu1StatusLightOff.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
// 8197
|
|
if (booleanArray[5]) {
|
|
pu2StatusLightOn.setVisibility(View.VISIBLE);
|
|
pu2StatusLightOff.setVisibility(View.INVISIBLE);
|
|
} else {
|
|
pu2StatusLightOn.setVisibility(View.INVISIBLE);
|
|
pu2StatusLightOff.setVisibility(View.VISIBLE);
|
|
}
|
|
|
|
// 8198
|
|
if (booleanArray[6]) {
|
|
sp1StatusLightOn.setVisibility(View.VISIBLE);
|
|
sp1StatusLightOff.setVisibility(View.INVISIBLE);
|
|
} else {
|
|
sp1StatusLightOn.setVisibility(View.INVISIBLE);
|
|
sp1StatusLightOff.setVisibility(View.VISIBLE);
|
|
}
|
|
}
|
|
};
|
|
|
|
private BroadcastReceiver discreteInputMessageReceiver = new BroadcastReceiver() {
|
|
@Override
|
|
public void onReceive(Context context, Intent intent) {
|
|
Bundle bundle = intent.getExtras();
|
|
boolean[] booleanArray = bundle.getBooleanArray("discreteInputValues");
|
|
|
|
// Lights
|
|
ImageView h1StatusLightOn = findViewById(R.id.h1_status_light_on_mainview);
|
|
ImageView h1StatusLightOff = findViewById(R.id.h1_status_light_off_mainview);
|
|
ImageView h2StatusLightOn = findViewById(R.id.h2_status_light_on_mainview);
|
|
ImageView h2StatusLightOff = findViewById(R.id.h2_status_light_off_mainview);
|
|
|
|
ImageView ind1StatusLightOn = findViewById(R.id.ind1_status_light_on_mainview);
|
|
ImageView ind1StatusLightOff = findViewById(R.id.ind1_status_light_off_mainview);
|
|
ImageView ls5StatusLightOn = findViewById(R.id.ls5_status_light_on_mainview);
|
|
ImageView ls5StatusLightOff = findViewById(R.id.ls5_status_light_off_mainview);
|
|
ImageView ls1StatusLightOn = findViewById(R.id.ls1_status_light_on_mainview);
|
|
ImageView ls1StatusLightOff = findViewById(R.id.ls1_status_light_off_mainview);
|
|
ImageView ls4StatusLightOn = findViewById(R.id.ls4_status_light_on_mainview);
|
|
ImageView ls4StatusLightOff = findViewById(R.id.ls4_status_light_off_mainview);
|
|
|
|
// ============ Discrete Input : Range 0 - 11 ========================
|
|
// di 1
|
|
if (booleanArray[1]) {
|
|
h1StatusLightOff.setVisibility(View.VISIBLE);
|
|
} else {
|
|
h1StatusLightOff.setVisibility(View.INVISIBLE);
|
|
}
|
|
|
|
// di 2
|
|
if (booleanArray[2]) {
|
|
h1StatusLightOn.setVisibility(View.VISIBLE);
|
|
} else {
|
|
h1StatusLightOn.setVisibility(View.INVISIBLE);
|
|
}
|
|
|
|
// di 10
|
|
if (booleanArray[10]) {
|
|
h2StatusLightOff.setVisibility(View.VISIBLE);
|
|
} else {
|
|
h2StatusLightOff.setVisibility(View.INVISIBLE);
|
|
}
|
|
|
|
// di 9
|
|
if (booleanArray[9]) {
|
|
h2StatusLightOn.setVisibility(View.VISIBLE);
|
|
} else {
|
|
h2StatusLightOn.setVisibility(View.INVISIBLE);
|
|
}
|
|
|
|
// di 11
|
|
if (booleanArray[11]) {
|
|
ind1StatusLightOff.setVisibility(View.INVISIBLE);
|
|
ind1StatusLightOn.setVisibility(View.VISIBLE);
|
|
} else {
|
|
ind1StatusLightOff.setVisibility(View.VISIBLE);
|
|
ind1StatusLightOn.setVisibility(View.INVISIBLE);
|
|
}
|
|
|
|
// di 4
|
|
if (booleanArray[4]) {
|
|
ls5StatusLightOff.setVisibility(View.INVISIBLE);
|
|
ls5StatusLightOn.setVisibility(View.VISIBLE);
|
|
} else {
|
|
ls5StatusLightOff.setVisibility(View.VISIBLE);
|
|
ls5StatusLightOn.setVisibility(View.INVISIBLE);
|
|
}
|
|
|
|
// di 0
|
|
if (booleanArray[0]) {
|
|
ls1StatusLightOff.setVisibility(View.INVISIBLE);
|
|
ls1StatusLightOn.setVisibility(View.VISIBLE);
|
|
} else {
|
|
ls1StatusLightOff.setVisibility(View.VISIBLE);
|
|
ls1StatusLightOn.setVisibility(View.INVISIBLE);
|
|
}
|
|
|
|
// di 3
|
|
if (booleanArray[3]) {
|
|
ls4StatusLightOff.setVisibility(View.INVISIBLE);
|
|
ls4StatusLightOn.setVisibility(View.VISIBLE);
|
|
} else {
|
|
ls4StatusLightOff.setVisibility(View.VISIBLE);
|
|
ls4StatusLightOn.setVisibility(View.INVISIBLE);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|