first writing
This commit is contained in:
		@@ -12,7 +12,7 @@
 | 
				
			|||||||
        android:roundIcon="@mipmap/ic_launcher_round"
 | 
					        android:roundIcon="@mipmap/ic_launcher_round"
 | 
				
			||||||
        android:supportsRtl="true"
 | 
					        android:supportsRtl="true"
 | 
				
			||||||
        android:theme="@style/AppTheme">
 | 
					        android:theme="@style/AppTheme">
 | 
				
			||||||
        <activity android:name=".MainActivity">
 | 
					        <activity android:name=".ManualDriveActivity">
 | 
				
			||||||
            <intent-filter>
 | 
					            <intent-filter>
 | 
				
			||||||
                <action android:name="android.intent.action.MAIN" />
 | 
					                <action android:name="android.intent.action.MAIN" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -34,7 +34,7 @@
 | 
				
			|||||||
            android:exported="false" />
 | 
					            android:exported="false" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <activity android:name=".MeasurementActivity" />
 | 
					        <activity android:name=".MeasurementActivity" />
 | 
				
			||||||
        <activity android:name=".ManualDriveActivity"></activity>
 | 
					        <activity android:name=".MainActivity"></activity>
 | 
				
			||||||
    </application>
 | 
					    </application>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</manifest>
 | 
					</manifest>
 | 
				
			||||||
@@ -8,6 +8,7 @@ import android.os.Handler;
 | 
				
			|||||||
import android.support.v4.content.LocalBroadcastManager;
 | 
					import android.support.v4.content.LocalBroadcastManager;
 | 
				
			||||||
import android.support.v7.app.AppCompatActivity;
 | 
					import android.support.v7.app.AppCompatActivity;
 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					import android.widget.ImageView;
 | 
				
			||||||
import android.widget.TextView;
 | 
					import android.widget.TextView;
 | 
				
			||||||
import android.widget.Toast;
 | 
					import android.widget.Toast;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,17 +11,10 @@ import java.net.UnknownHostException;
 | 
				
			|||||||
public class GlobalState extends Application {
 | 
					public class GlobalState extends Application {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // coil
 | 
					    // coil
 | 
				
			||||||
    private String ipAddress;
 | 
					    private String ipAddress = "192.168.157.16";
 | 
				
			||||||
    private int port = 502;
 | 
					    private int port = 503;
 | 
				
			||||||
    private int coilRef;
 | 
					 | 
				
			||||||
    private int coilCount;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    public enum InputConfig {
 | 
					    public enum InputConfig {
 | 
				
			||||||
     /*   Q_COIL (8192, 8),
 | 
					 | 
				
			||||||
        AI_IR (1, 1),
 | 
					 | 
				
			||||||
        I_DI(1, 12);
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
        Q_COIL(8192, 8),
 | 
					        Q_COIL(8192, 8),
 | 
				
			||||||
        VM_COIL2 (1, 8),
 | 
					        VM_COIL2 (1, 8),
 | 
				
			||||||
        VM_COIL3 (65, 8),
 | 
					        VM_COIL3 (65, 8),
 | 
				
			||||||
@@ -63,20 +56,4 @@ public class GlobalState extends Application {
 | 
				
			|||||||
    public void setPort(int port) {
 | 
					    public void setPort(int port) {
 | 
				
			||||||
        this.port = port;
 | 
					        this.port = port;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getCoilCount() {
 | 
					 | 
				
			||||||
        return coilCount;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setCoilCount(int coilCount) {
 | 
					 | 
				
			||||||
        this.coilCount = coilCount;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setCoilRef(int coilRef) {
 | 
					 | 
				
			||||||
        this.coilRef = coilRef;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getCoilRef() {
 | 
					 | 
				
			||||||
        return coilRef;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,19 @@ import android.view.View;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public class MainActivity extends AppCompatActivity {
 | 
					public class MainActivity extends AppCompatActivity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // constant for extra in intent
 | 
				
			||||||
 | 
					    private static final String EXTRA_IP_ADDRESS = "extra.ip.address";
 | 
				
			||||||
 | 
					    private static final String EXTRA_IP_PORT = "extra.ip.port";
 | 
				
			||||||
 | 
					    private static final String EXTRA_REF = "extra.ref";
 | 
				
			||||||
 | 
					    private static final String EXTRA_COUNT = "extra.count";
 | 
				
			||||||
 | 
					    private static final String EXTRA_INTENT_NAME = "extra.intent.name";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // constant for action name
 | 
				
			||||||
 | 
					    private static final String ACTION_READ_COIL = "read.coil";
 | 
				
			||||||
 | 
					    private static final String ACTION_READ_DISCRETE_INPUT = "read.discrete.input";
 | 
				
			||||||
 | 
					    private static final String ACTION_READ_INPUT_REGISTER = "read.input.register";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
					    protected void onCreate(Bundle savedInstanceState) {
 | 
				
			||||||
        super.onCreate(savedInstanceState);
 | 
					        super.onCreate(savedInstanceState);
 | 
				
			||||||
@@ -20,8 +33,8 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			|||||||
        //String ipAddress = editText1.getText().toString();
 | 
					        //String ipAddress = editText1.getText().toString();
 | 
				
			||||||
        //String ipAddress = "172.16.202.14";
 | 
					        //String ipAddress = "172.16.202.14";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String ipAddress = "10.0.0.60";
 | 
					        String ipAddress = "192.168.157.16";
 | 
				
			||||||
        int port = 502;
 | 
					        int port = 503;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //EditText editText2 = (EditText) findViewById(R.id.port);
 | 
					        //EditText editText2 = (EditText) findViewById(R.id.port);
 | 
				
			||||||
        //int port = Integer.parseInt(editText2.getText().toString());
 | 
					        //int port = Integer.parseInt(editText2.getText().toString());
 | 
				
			||||||
@@ -30,33 +43,53 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			|||||||
        state.setIpAddress(ipAddress);
 | 
					        state.setIpAddress(ipAddress);
 | 
				
			||||||
        state.setPort(port);
 | 
					        state.setPort(port);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // read only
 | 
				
			||||||
        Intent coilServiceIntent = new Intent(this, MyIntentService.class);
 | 
					        Intent coilServiceIntent = new Intent(this, MyIntentService.class);
 | 
				
			||||||
        coilServiceIntent.setAction("read.coil");
 | 
					        coilServiceIntent.setAction(ACTION_READ_COIL);
 | 
				
			||||||
        coilServiceIntent.putExtra("extra.ip.address", ipAddress);
 | 
					        coilServiceIntent.putExtra(EXTRA_IP_ADDRESS, ipAddress);
 | 
				
			||||||
        coilServiceIntent.putExtra("extra.ip.port", port);
 | 
					        coilServiceIntent.putExtra(EXTRA_IP_PORT, port);
 | 
				
			||||||
        coilServiceIntent.putExtra("extra.ref", GlobalState.InputConfig.Q_COIL.getStartReference());
 | 
					        coilServiceIntent.putExtra(EXTRA_REF, GlobalState.InputConfig.Q_COIL.getStartReference());
 | 
				
			||||||
        coilServiceIntent.putExtra("extra.count", GlobalState.InputConfig.Q_COIL.getCount());
 | 
					        coilServiceIntent.putExtra(EXTRA_COUNT, GlobalState.InputConfig.Q_COIL.getCount());
 | 
				
			||||||
        coilServiceIntent.putExtra("extra.intent.name", "readOnlyCoil");
 | 
					        coilServiceIntent.putExtra(EXTRA_INTENT_NAME, "readOnlyCoil");
 | 
				
			||||||
        this.startService(coilServiceIntent);
 | 
					        this.startService(coilServiceIntent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Intent discretInputserviceIntent = new Intent(this, MyIntentService.class);
 | 
					        Intent discretInputserviceIntent = new Intent(this, MyIntentService.class);
 | 
				
			||||||
        discretInputserviceIntent.setAction("read.discrete.input");
 | 
					        discretInputserviceIntent.setAction(ACTION_READ_DISCRETE_INPUT);
 | 
				
			||||||
        discretInputserviceIntent.putExtra("extra.ip.address", ipAddress);
 | 
					        discretInputserviceIntent.putExtra(EXTRA_IP_ADDRESS, ipAddress);
 | 
				
			||||||
        discretInputserviceIntent.putExtra("extra.ip.port", port);
 | 
					        discretInputserviceIntent.putExtra(EXTRA_IP_PORT, port);
 | 
				
			||||||
        discretInputserviceIntent.putExtra("extra.ref", GlobalState.InputConfig.I_DI.getStartReference());
 | 
					        discretInputserviceIntent.putExtra(EXTRA_REF, GlobalState.InputConfig.I_DI.getStartReference());
 | 
				
			||||||
        discretInputserviceIntent.putExtra("extra.count", GlobalState.InputConfig.I_DI.getCount());
 | 
					        discretInputserviceIntent.putExtra(EXTRA_COUNT, GlobalState.InputConfig.I_DI.getCount());
 | 
				
			||||||
        discretInputserviceIntent.putExtra("extra.intent.name", "readOnlyDiscreteInput");
 | 
					        discretInputserviceIntent.putExtra(EXTRA_INTENT_NAME, "readOnlyDiscreteInput");
 | 
				
			||||||
        this.startService(discretInputserviceIntent);
 | 
					        this.startService(discretInputserviceIntent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Intent inputRegisterServiceIntent = new Intent(this, MyIntentService.class);
 | 
					        Intent inputRegisterServiceIntent = new Intent(this, MyIntentService.class);
 | 
				
			||||||
        inputRegisterServiceIntent.setAction("read.input.register");
 | 
					        inputRegisterServiceIntent.setAction(ACTION_READ_INPUT_REGISTER);
 | 
				
			||||||
        inputRegisterServiceIntent.putExtra("extra.ip.address", ipAddress);
 | 
					        inputRegisterServiceIntent.putExtra(EXTRA_IP_ADDRESS, ipAddress);
 | 
				
			||||||
        inputRegisterServiceIntent.putExtra("extra.ip.port", port);
 | 
					        inputRegisterServiceIntent.putExtra(EXTRA_IP_PORT, port);
 | 
				
			||||||
        inputRegisterServiceIntent.putExtra("extra.ref", GlobalState.InputConfig.AI_IR.getStartReference());
 | 
					        inputRegisterServiceIntent.putExtra(EXTRA_REF, GlobalState.InputConfig.AI_IR.getStartReference());
 | 
				
			||||||
        inputRegisterServiceIntent.putExtra("extra.count", GlobalState.InputConfig.AI_IR.getCount());
 | 
					        inputRegisterServiceIntent.putExtra(EXTRA_COUNT, GlobalState.InputConfig.AI_IR.getCount());
 | 
				
			||||||
        inputRegisterServiceIntent.putExtra("extra.intent.name", "readOnlyInputRegister");
 | 
					        inputRegisterServiceIntent.putExtra(EXTRA_INTENT_NAME, "readOnlyInputRegister");
 | 
				
			||||||
        this.startService(inputRegisterServiceIntent);
 | 
					        this.startService(inputRegisterServiceIntent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Intent vmCoil2ServiceIntent = new Intent(this, MyIntentService.class);
 | 
				
			||||||
 | 
					        vmCoil2ServiceIntent.setAction(ACTION_READ_COIL);
 | 
				
			||||||
 | 
					        vmCoil2ServiceIntent.putExtra(EXTRA_IP_ADDRESS, ipAddress);
 | 
				
			||||||
 | 
					        vmCoil2ServiceIntent.putExtra(EXTRA_IP_PORT, port);
 | 
				
			||||||
 | 
					        vmCoil2ServiceIntent.putExtra(EXTRA_REF, GlobalState.InputConfig.VM_COIL2.getStartReference());
 | 
				
			||||||
 | 
					        vmCoil2ServiceIntent.putExtra(EXTRA_COUNT, GlobalState.InputConfig.VM_COIL2.getCount());
 | 
				
			||||||
 | 
					        vmCoil2ServiceIntent.putExtra(EXTRA_INTENT_NAME, "readVmCoil2");
 | 
				
			||||||
 | 
					        this.startService(vmCoil2ServiceIntent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Intent vmCoil3ServiceIntent = new Intent(this, MyIntentService.class);
 | 
				
			||||||
 | 
					        vmCoil3ServiceIntent.setAction(ACTION_READ_COIL);
 | 
				
			||||||
 | 
					        vmCoil3ServiceIntent.putExtra(EXTRA_IP_ADDRESS, ipAddress);
 | 
				
			||||||
 | 
					        vmCoil3ServiceIntent.putExtra(EXTRA_IP_PORT, port);
 | 
				
			||||||
 | 
					        vmCoil3ServiceIntent.putExtra(EXTRA_REF, GlobalState.InputConfig.VM_COIL3.getStartReference());
 | 
				
			||||||
 | 
					        vmCoil3ServiceIntent.putExtra(EXTRA_COUNT, GlobalState.InputConfig.VM_COIL3.getCount());
 | 
				
			||||||
 | 
					        vmCoil3ServiceIntent.putExtra(EXTRA_INTENT_NAME, "readVmCoil3");
 | 
				
			||||||
 | 
					        this.startService(vmCoil3ServiceIntent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Intent nextIntent = new Intent(this, DisplayMessageActivity.class);
 | 
					        Intent nextIntent = new Intent(this, DisplayMessageActivity.class);
 | 
				
			||||||
        this.startActivity(nextIntent);
 | 
					        this.startActivity(nextIntent);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,13 +1,83 @@
 | 
				
			|||||||
package com.example.user.myapp;
 | 
					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.support.v7.app.AppCompatActivity;
 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					import android.view.View;
 | 
				
			||||||
 | 
					import android.widget.CompoundButton;
 | 
				
			||||||
 | 
					import android.widget.ImageView;
 | 
				
			||||||
 | 
					import android.widget.ToggleButton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class ManualDriveActivity extends AppCompatActivity {
 | 
					public class ManualDriveActivity extends AppCompatActivity {
 | 
				
			||||||
 | 
					    private GlobalState state;
 | 
				
			||||||
 | 
					    private Handler coilHandler;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
					    protected void onCreate(Bundle savedInstanceState) {
 | 
				
			||||||
        super.onCreate(savedInstanceState);
 | 
					        super.onCreate(savedInstanceState);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LocalBroadcastManager.getInstance(this).registerReceiver(coilWriterMessageReceiver, new IntentFilter("readVmCoil2"));
 | 
				
			||||||
 | 
					        LocalBroadcastManager.getInstance(this).registerReceiver(coilWriterMessageReceiver, new IntentFilter("checkCoilValue"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        state = (GlobalState) getApplicationContext();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        coilHandler = new Handler();
 | 
				
			||||||
 | 
					    //    coilHandler.post(refreshCoil);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        setContentView(R.layout.activity_manual_drive);
 | 
					        setContentView(R.layout.activity_manual_drive);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ToggleButton button = (ToggleButton) findViewById(R.id.h1_control_button);
 | 
				
			||||||
 | 
					        button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
 | 
				
			||||||
 | 
					                if (isChecked) {
 | 
				
			||||||
 | 
					                    // writing the value true
 | 
				
			||||||
 | 
					                    Intent serviceIntent = new Intent(getApplicationContext(), MyIntentService.class);
 | 
				
			||||||
 | 
					                    serviceIntent.setAction("write.coil");
 | 
				
			||||||
 | 
					                    serviceIntent.putExtra("extra.ip.address", state.getIpAddress());
 | 
				
			||||||
 | 
					                    serviceIntent.putExtra("extra.ip.port", state.getPort());
 | 
				
			||||||
 | 
					                    serviceIntent.putExtra("extra.ref", GlobalState.InputConfig.VM_COIL2.getStartReference());
 | 
				
			||||||
 | 
					                    serviceIntent.putExtra("extra.bit", true);
 | 
				
			||||||
 | 
					                    serviceIntent.putExtra("extra.intent.name", "readVmCoil2");
 | 
				
			||||||
 | 
					                    getApplicationContext().startService(serviceIntent);
 | 
				
			||||||
 | 
					                } else {
 | 
				
			||||||
 | 
					                    // writing the value false
 | 
				
			||||||
 | 
					                    Intent serviceIntent = new Intent(getApplicationContext(), MyIntentService.class);
 | 
				
			||||||
 | 
					                    serviceIntent.setAction("write.coil");
 | 
				
			||||||
 | 
					                    serviceIntent.putExtra("extra.ip.address", state.getIpAddress());
 | 
				
			||||||
 | 
					                    serviceIntent.putExtra("extra.ip.port", state.getPort());
 | 
				
			||||||
 | 
					                    serviceIntent.putExtra("extra.ref", GlobalState.InputConfig.VM_COIL2.getStartReference());
 | 
				
			||||||
 | 
					                    serviceIntent.putExtra("extra.bit", false);
 | 
				
			||||||
 | 
					                    serviceIntent.putExtra("extra.intent.name", "readVmCoil2");
 | 
				
			||||||
 | 
					                    getApplicationContext().startService(serviceIntent);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private BroadcastReceiver coilWriterMessageReceiver = new BroadcastReceiver() {
 | 
				
			||||||
 | 
					        @Override
 | 
				
			||||||
 | 
					        public void onReceive(Context context, Intent intent) {
 | 
				
			||||||
 | 
					            String action = intent.getAction();
 | 
				
			||||||
 | 
					            boolean supposedToBeValue = intent.getBooleanExtra("coil", false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ImageView lightOn = (ImageView) findViewById(R.id.h1_status_light_on);
 | 
				
			||||||
 | 
					            ImageView lightOff = (ImageView) findViewById(R.id.h1_status_light_off);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (supposedToBeValue) {
 | 
				
			||||||
 | 
					                lightOn.setVisibility(View.VISIBLE);
 | 
				
			||||||
 | 
					                lightOff.setVisibility(View.INVISIBLE);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                lightOn.setVisibility(View.INVISIBLE);
 | 
				
			||||||
 | 
					                lightOff.setVisibility(View.VISIBLE);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,10 +21,16 @@ import java.util.List;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class MyIntentService extends IntentService {
 | 
					public class MyIntentService extends IntentService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // read action
 | 
				
			||||||
    private static final String ACTION_READ_COIL = "read.coil";
 | 
					    private static final String ACTION_READ_COIL = "read.coil";
 | 
				
			||||||
    private static final String ACTION_READ_INPUT_REGISTER = "read.input.register";
 | 
					    private static final String ACTION_READ_INPUT_REGISTER = "read.input.register";
 | 
				
			||||||
    private static final String ACTION_READ_DISCRETE_INPUT = "read.discrete.input";
 | 
					    private static final String ACTION_READ_DISCRETE_INPUT = "read.discrete.input";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // write action
 | 
				
			||||||
 | 
					    private static final String ACTION_WRITE_COIL = "write.coil";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final String ACTION_CHECK_COIL = "check.coil";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private ModbusTCPMaster master;
 | 
					    private ModbusTCPMaster master;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // TODO: Rename parameters
 | 
					    // TODO: Rename parameters
 | 
				
			||||||
@@ -33,8 +39,10 @@ public class MyIntentService extends IntentService {
 | 
				
			|||||||
    private static final String EXTRA_REF = "extra.ref";
 | 
					    private static final String EXTRA_REF = "extra.ref";
 | 
				
			||||||
    private static final String EXTRA_COUNT = "extra.count";
 | 
					    private static final String EXTRA_COUNT = "extra.count";
 | 
				
			||||||
    private static final String EXTRA_INTENT_NAME = "extra.intent.name";
 | 
					    private static final String EXTRA_INTENT_NAME = "extra.intent.name";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final String EXTRA_BIT_TO_SET = "extra.bit";
 | 
				
			||||||
    //turns out modbus on siemens logo is crap and isnt responding for at least 50ms
 | 
					    //turns out modbus on siemens logo is crap and isnt responding for at least 50ms
 | 
				
			||||||
    private static final Integer CAPWAITTIME = 100;
 | 
					    private static final Integer CAP_WAIT_TIME = 100;
 | 
				
			||||||
    //this is not a type, idiot.
 | 
					    //this is not a type, idiot.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public MyIntentService() {
 | 
					    public MyIntentService() {
 | 
				
			||||||
@@ -74,7 +82,7 @@ public class MyIntentService extends IntentService {
 | 
				
			|||||||
                listBooleanBit.add(bv.getBit(i));
 | 
					                listBooleanBit.add(bv.getBit(i));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            sendBooleanListToActivity(listBooleanBit, intentReceiveName, "discreteInputValues");
 | 
					            sendBooleanListToActivity(listBooleanBit, intentReceiveName, "discreteInputValues");
 | 
				
			||||||
            Thread.sleep(CAPWAITTIME);
 | 
					            Thread.sleep(CAP_WAIT_TIME);
 | 
				
			||||||
            master.disconnect();
 | 
					            master.disconnect();
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            System.out.println("Exception in reading discrete input " + e);
 | 
					            System.out.println("Exception in reading discrete input " + e);
 | 
				
			||||||
@@ -93,7 +101,7 @@ public class MyIntentService extends IntentService {
 | 
				
			|||||||
                listBooleanBit.add(bv.getBit(i));
 | 
					                listBooleanBit.add(bv.getBit(i));
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            sendBooleanListToActivity(listBooleanBit, intentReceiveName, "coilValues");
 | 
					            sendBooleanListToActivity(listBooleanBit, intentReceiveName, "coilValues");
 | 
				
			||||||
            Thread.sleep(CAPWAITTIME);
 | 
					            Thread.sleep(CAP_WAIT_TIME);
 | 
				
			||||||
            master.disconnect();
 | 
					            master.disconnect();
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            System.out.println("Exception in reading coil " + e);
 | 
					            System.out.println("Exception in reading coil " + e);
 | 
				
			||||||
@@ -112,13 +120,39 @@ public class MyIntentService extends IntentService {
 | 
				
			|||||||
                System.out.println(ir.getValue()+" input register "+Math.random());
 | 
					                System.out.println(ir.getValue()+" input register "+Math.random());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            sendIntegerListToActivity (listIntegerInputRegister, intentReceiveName);
 | 
					            sendIntegerListToActivity (listIntegerInputRegister, intentReceiveName);
 | 
				
			||||||
            Thread.sleep(CAPWAITTIME);
 | 
					            Thread.sleep(CAP_WAIT_TIME);
 | 
				
			||||||
            master.disconnect();
 | 
					            master.disconnect();
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            System.out.println("Exception in reading input register " + e);
 | 
					            System.out.println("Exception in reading input register " + e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void writeCoilAction (String ipAddress, int port, int ref, boolean value, String intentReceiveName) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            master = new ModbusTCPMaster(ipAddress, port);
 | 
				
			||||||
 | 
					            master.connect();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // writing the value
 | 
				
			||||||
 | 
					            boolean expectedValue = master.writeCoil(ref, value);
 | 
				
			||||||
 | 
					            System.out.println("I wrote "+expectedValue+" to coil "+ref);
 | 
				
			||||||
 | 
					            Thread.sleep(CAP_WAIT_TIME);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            boolean currentValue = master.readCoils(8192, 1).getBit(0);
 | 
				
			||||||
 | 
					            sendNewBitValueToActivity (currentValue, intentReceiveName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Thread.sleep(CAP_WAIT_TIME);
 | 
				
			||||||
 | 
					            master.disconnect();
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            System.out.println("Exception in reading coil " + e);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void sendNewBitValueToActivity (boolean newValue, String intentReceive) {
 | 
				
			||||||
 | 
					        Intent intent = new Intent(intentReceive);
 | 
				
			||||||
 | 
					        intent.putExtra("coil", newValue);
 | 
				
			||||||
 | 
					        sendLocationBroadcast(intent);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    protected void onHandleIntent(Intent intent) {
 | 
					    protected void onHandleIntent(Intent intent) {
 | 
				
			||||||
        if (intent != null) {
 | 
					        if (intent != null) {
 | 
				
			||||||
@@ -129,6 +163,11 @@ public class MyIntentService extends IntentService {
 | 
				
			|||||||
            final int count = intent.getIntExtra(EXTRA_COUNT, 8);
 | 
					            final int count = intent.getIntExtra(EXTRA_COUNT, 8);
 | 
				
			||||||
            final String intentName = intent.getStringExtra(EXTRA_INTENT_NAME);
 | 
					            final String intentName = intent.getStringExtra(EXTRA_INTENT_NAME);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // for write
 | 
				
			||||||
 | 
					            final Boolean value = intent.getBooleanExtra(EXTRA_BIT_TO_SET, false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            final Boolean expectedValue = intent.getBooleanExtra("extra.coil.status", false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            switch(action) {
 | 
					            switch(action) {
 | 
				
			||||||
                case ACTION_READ_DISCRETE_INPUT:
 | 
					                case ACTION_READ_DISCRETE_INPUT:
 | 
				
			||||||
                    readDiscreteInputAction (ipAddress, port, ref, count, intentName);
 | 
					                    readDiscreteInputAction (ipAddress, port, ref, count, intentName);
 | 
				
			||||||
@@ -139,10 +178,14 @@ public class MyIntentService extends IntentService {
 | 
				
			|||||||
                case ACTION_READ_INPUT_REGISTER :
 | 
					                case ACTION_READ_INPUT_REGISTER :
 | 
				
			||||||
                    readInputRegisterAction (ipAddress, port,ref, count, intentName);
 | 
					                    readInputRegisterAction (ipAddress, port,ref, count, intentName);
 | 
				
			||||||
                    break;
 | 
					                    break;
 | 
				
			||||||
 | 
					                case ACTION_WRITE_COIL:
 | 
				
			||||||
 | 
					                    writeCoilAction(ipAddress, port, ref, value, intentName);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private boolean[] toPrimitiveArray(final List<Boolean> booleanList) {
 | 
					    private boolean[] toPrimitiveArray(final List<Boolean> booleanList) {
 | 
				
			||||||
        final boolean[] primitives = new boolean[booleanList.size()];
 | 
					        final boolean[] primitives = new boolean[booleanList.size()];
 | 
				
			||||||
        int index = 0;
 | 
					        int index = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user