FAQs
Download example app from the Google Play store:
Brainboxes provides a JAR which allows easy integration of Brainboxes Remote IO modules into your Java code.
Requirements
- Windows, Linux, Mac OS X
- Android Studio
- Brainboxes Remote IO Module (e.g. ED-588, ED-038 etc)
- Basic Java Programming Knowledge
- The Brainboxes.IO.jar download here
Java Code Samples


Example Code
package com.brainboxes.edconsole2;
import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.text.method.ScrollingMovementMethod;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
private EDDevice EDDevice;
Button bConnect, bSend;
EditText etIP1, etIP2, etIP3, etIP4, etPortNumber, etSendCommand;
RelativeLayout rlIpAddress, rlPortNumber, rlSendCommand, rlConnect;
TextView tvConsole;
String ipAddress = "";
int portNumber = 9500;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InitializeUI();
EditTextListeners();
ButtonOnClickListeners();
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
public void InitializeUI() {
rlIpAddress = (RelativeLayout) findViewById(R.id.rlIpAddress);
rlPortNumber = (RelativeLayout) findViewById(R.id.rlPortNumber);
rlConnect = (RelativeLayout) findViewById(R.id.rlConnect);
rlSendCommand = (RelativeLayout) findViewById(R.id.rlSendCommand);
rlSendCommand.setVisibility(View.GONE);
bConnect = (Button) findViewById(R.id.bConnect);
bSend = (Button) findViewById(R.id.bSend);
etIP1 = (EditText) findViewById(R.id.etIP1);
etIP2 = (EditText) findViewById(R.id.etIP2);
etIP3 = (EditText) findViewById(R.id.etIP3);
etIP4 = (EditText) findViewById(R.id.etIP4);
etPortNumber = (EditText) findViewById(R.id.etPortNumber);
etSendCommand = (EditText) findViewById(R.id.etSendCommand);
etSendCommand.setAllCaps(true);
tvConsole = (TextView) findViewById(R.id.tvConsole);
tvConsole.append("nn");
tvConsole.setMovementMethod(new ScrollingMovementMethod());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void ButtonOnClickListeners() {
bConnect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (bConnect.getText().equals("Connect")) {
if(ConnectionBoxes()){
ipAddress = etIP1.getText() + "." + etIP2.getText() + "." + etIP3.getText() + "." + etIP4.getText();
portNumber = Integer.parseInt(etPortNumber.getText().toString());
EDDevice = new EDDeviceTCP(ipAddress, portNumber);
connect();
}
}else{
disconnect();
}
}
});
bSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String command = (etSendCommand.getText().toString().toUpperCase()) + "r";
String response;
try {
response = EDDevice.SendCommand(command);
appendTextAndScroll("Sending: " + command + "n");
appendTextAndScroll("Received: " + response + "nn");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public void connect(){
appendTextAndScroll("Connecting to " + ipAddress.toString() + "...n");
try{
System.out.println("Connecting...");
EDDevice.Connect();
System.out.println("Connected");
appendTextAndScroll("Connected!nn");
bConnect.setText("Disconnect");
rlIpAddress.setVisibility(View.GONE);
rlPortNumber.setVisibility(View.GONE);
rlSendCommand.setVisibility(View.VISIBLE);
bSend.setEnabled(true);
etSendCommand.requestFocus();
} catch (Exception e){
System.out.println("Error Connecting: " + e.getMessage());
}
}
public void disconnect(){
EDDevice.Disconnect();
bConnect.setText("Connect");
appendTextAndScroll("Disconnectednn");
rlIpAddress.setVisibility(View.VISIBLE);
rlPortNumber.setVisibility(View.VISIBLE);
rlSendCommand.setVisibility(View.GONE);
bSend.setEnabled(false);
}
public void appendTextAndScroll(String text) {
tvConsole.append(text);
final int scrollAmount = tvConsole.getLayout().getLineTop(tvConsole.getLineCount()) - tvConsole.getHeight();
if (scrollAmount [gt] 0)
tvConsole.scrollTo(0, scrollAmount);
else
tvConsole.scrollTo(0, 0);
}
private void EditTextListeners() {
etIP1.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
if (etIP1.getText().toString().length() == 3) {
etIP2.requestFocus();
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
etIP2.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
if (etIP2.getText().toString().length() == 3) {
etIP3.requestFocus();
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
etIP3.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
if (etIP3.getText().toString().length() == 3) {
etIP4.requestFocus();
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
etIP4.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
if (etIP4.getText().toString().length() == 3) {
etPortNumber.requestFocus();
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
private boolean ConnectionBoxes() {
boolean CanWeConnect = true;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
DialogInterface.OnClickListener dialogInterface = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
};
if (etIP1.getText().length() == 0 || etIP2.getText().length() == 0 || etIP3.getText().length() == 0 || etIP4.getText().length() == 0) {
builder.setMessage("Please enter a valid IP address");
builder.setTitle("Incorrect IP Address");
builder.setPositiveButton("OK", dialogInterface);
builder.show();
CanWeConnect = false;
} else if (etPortNumber.getText().length() == 0) {
builder.setMessage("Please enter a valid port number");
builder.setTitle("Incorrect Port Number");
builder.setPositiveButton("OK", dialogInterface);
builder.show();
CanWeConnect = false;
}
return CanWeConnect;
}
}
Reference
For a full list of ASCII protocol commands which can be sent to the device see: Brainboxes Remote IO ASCII protocol reference
Related FAQs
-
How do I use Android to communicate with my Remote IO Module?
-
How do I use C# to communicate with my Remote IO Module?
-
How do I use C++ to communicate with my Remote IO Module?
-
How do I use Perl to communicate with my Remote IO Module?
-
How do I use PHP to communicate with my Remote IO Module?
-
How do I use Visual Basic (VB) to communicate with my Remote IO Module?
Related Products
Related Range
FAQs