Q:

Changing UI from another thread

UPDATED: I updated it seith some logs inputs, than you for your help.
I'm applying the following code:
@Override
public void run() {

     byte[] bytes = null;

     int TIMEOUT = 5000;

     int status = connection.bulkTransfer(ep, bytes, ep.getMaxPacketSize(), TIMEOUT);

     Log.d(TAG, "status: " + status);

     write_to_screen( bytes );

}

public void write_to_screen( byte[] bytes  ) {

    Log.d(TAG, "bytes: " + bytes);

    String str_non_final = null;

    try {

        str_non_final = new String( bytes, "UTF-8");
        Log.d(TAG, "str_non_final : " + str_non_final );

    } catch (UnsupportedEncodingException e) {

        e.printStackTrace();

    }   

    final String str = str_non_final;

    Log.d(TAG, "str: " + str);

    runOnUiThread(new Runnable() {@Override public void run()
    {
       textView7.setText( str );
       Log.d(TAG, "UI updated");
    }
    });

}   

The result of the logcat is as follows: 
D/EthernetActivity(15721): open SUCCESS
D/EthernetActivity(15721): status: -1
D/EthernetActivity(15721): bytes: null
so it would seem to me that the problem is in "str_non_final = new String( bytes, "UTF-8");". What is wrong with this?

A:

in this statement 
str_non_final = new String( bytes, "UTF-8");

you are using byte and which is null as printed in your logcat. so it will throw the NullPointerException and your catch is able to handle only UnsupportedEncodingException.
make sure that bytes should not null before call
write_to_screen( bytes );

