Look at the logs to figure out what's wrong. My suspicion is that the
problem is that you're calling an Android UI function
(button_input.setChecked()) from the IOIO thread. You'd need to use the
same trick with the runOnUiThread() like in toast() and enableUi().

On Mon, Mar 7, 2016 at 3:29 AM, Pranay Sharma <[email protected]>
wrote:

> Hi all,
> I tried modifying the HelloIOIO program to test Input and output on custom
> pins.
> The program starts and shows the Toast for a successful connection.
> But then it disconnects.
> Kindly advice what could wrong.
>
> public class MainActivity extends IOIOActivity {
> private ToggleButton button_;
> private ToggleButton button_input;
>
>
> /**
> * Called when the activity is first created. Here we normally initialize
> * our GUI.
> */
> @Override
> public void onCreate(Bundle savedInstanceState) {
> super.onCreate(savedInstanceState);
> setContentView(R.layout.main);
> button_ = (ToggleButton) findViewById(R.id.button);
> button_input = (ToggleButton) findViewById(R.id.button_input);
> }
>
> /**
> * This is the thread on which all the IOIO activity happens. It will be run
> * every time the application is resumed and aborted when it is paused. The
> * method setup() will be called right after a connection with the IOIO has
> * been established (which might happen several times!). Then, loop() will
> * be called repetitively until the IOIO gets disconnected.
> */
> class Looper extends BaseIOIOLooper {
> /** The on-board LED. */
> private DigitalOutput led_;
> private DigitalOutput mOutput;
> private DigitalInput mInput_;
>
> /**
> * Called every time a connection with IOIO has been established.
> * Typically used to open pins.
> *
> * @throws ConnectionLostException
> *             When IOIO connection is lost.
> *
> * @see ioio.lib.util.IOIOLooper#setup()
> */
> @Override
> protected void setup() throws ConnectionLostException {
> showVersions(ioio_, "IOIO connected!");
> led_ = ioio_.openDigitalOutput(0, true);
>                         /** Output is being tested on PIN 41 and input on
> pin 42 . With PULL_DOWN option on pin42, my assumption is that the pin 42
> should be
>                         setup at 0V **/
> mOutput = ioio_.openDigitalOutput(41, true);
> mInput_ = ioio_.openDigitalInput(42, DigitalInput.Spec.Mode.PULL_DOWN);
> enableUi(true);
> }
>
> /**
> * Called repetitively while the IOIO is connected.
> *
> * @throws ConnectionLostException
> *             When IOIO connection is lost.
> * @throws InterruptedException
> * When the IOIO thread has been interrupted.
> *
> * @see ioio.lib.util.IOIOLooper#loop()
> */
> @Override
> public void loop() throws ConnectionLostException, InterruptedException {
> toast("working 1");
> led_.write(!button_.isChecked());
> toast("working 2");
> Thread.sleep(100);
> toast("working 3");
> if(button_input!= null) {
> button_input.setChecked(mInput_.read());
> }else{
> toast("Bhai null pointer");
> }
> }
>
> /**
> * Called when the IOIO is disconnected.
> *
> * @see ioio.lib.util.IOIOLooper#disconnected()
> */
> @Override
> public void disconnected() {
> enableUi(false);
> toast("IOIO disconnected");
> }
>
> /**
> * Called when the IOIO is connected, but has an incompatible firmware
> version.
> *
> * @see ioio.lib.util.IOIOLooper#incompatible(IOIO)
> */
> @Override
> public void incompatible() {
> showVersions(ioio_, "Incompatible firmware version!");
> }
> }
>
> /**
> * A method to create our IOIO thread.
> *
> * @see ioio.lib.util.AbstractIOIOActivity#createIOIOThread()
> */
> @Override
> protected IOIOLooper createIOIOLooper() {
> return new Looper();
> }
>
> private void showVersions(IOIO ioio, String title) {
> toast(String.format("%s\n" +
> "IOIOLib: %s\n" +
> "Application firmware: %s\n" +
> "Bootloader firmware: %s\n" +
> "Hardware: %s",
> title,
> ioio.getImplVersion(VersionType.IOIOLIB_VER),
> ioio.getImplVersion(VersionType.APP_FIRMWARE_VER),
> ioio.getImplVersion(VersionType.BOOTLOADER_VER),
> ioio.getImplVersion(VersionType.HARDWARE_VER)));
> }
>
> private void toast(final String message) {
> final Context context = this;
> runOnUiThread(new Runnable() {
> @Override
> public void run() {
> Toast.makeText(context, message, Toast.LENGTH_LONG).show();
> }
> });
> }
>
> private int numConnected_ = 0;
>
> private void enableUi(final boolean enable) {
> // This is slightly trickier than expected to support a multi-IOIO
> use-case.
> runOnUiThread(new Runnable() {
> @Override
> public void run() {
> if (enable) {
> if (numConnected_++ == 0) {
> button_.setEnabled(true);
> }
> } else {
> if (--numConnected_ == 0) {
> button_.setEnabled(false);
> }
> }
> }
> });
> }
> }
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "ioio-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/ioio-users.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"ioio-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/ioio-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to