Note that there are some explanatory texts on larger screens.

plurals
  1. POSerial to USB Android application with health device
    primarykey
    data
    text
    <p>I am creating an Android application to let communicate my Galaxy Tablet with an health device, via serial to USB connection.</p> <p>The code I implemented does not work! neither the OUT nor IN communication starts</p> <p>Does someone has any idea?</p> <pre><code>public void recordData(View _view){ text = (TextView)findViewById(R.id.textView1); manager=(UsbManager) getSystemService(Context.USB_SERVICE); PendingIntent mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0); IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION); registerReceiver(mUsbReceiver, filter); HashMap&lt;String, UsbDevice&gt; deviceList = manager.getDeviceList(); Iterator&lt;UsbDevice&gt; deviceIterator = deviceList.values().iterator(); while(deviceIterator.hasNext()){ UsbDevice device = deviceIterator.next(); manager.requestPermission(device, mPermissionIntent); text.setText(text.getText()+"\n"+device.getDeviceName()); } } private UsbManager manager=null; private boolean forceClaim = true; private UsbDeviceConnection connection; private UsbEndpoint input = null,output=null; private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION"; private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (ACTION_USB_PERMISSION.equals(action)) { synchronized (this) { isRecording=true; UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) { if(device != null){ //call method to set up device communication UsbInterface intf = device.getInterface(0); connection = manager.openDevice(device); connection.claimInterface(intf, forceClaim); //connection settings int op= connection.controlTransfer(0x40, 0, 0, 0, null, 0, 0);// reset //0x40 int op2= connection.controlTransfer(0x40, 0, 1, 0, null, 0, 0);//clear Rx int op3= connection.controlTransfer(0x40, 0, 2, 0, null, 0, 0);// clear Tx int op3b= connection.controlTransfer(0x40, 0x02, 0x0000, 0, null, 0, 0);//control flow int op4= connection.controlTransfer(0x40, 0x03, 0x001A, 0, null, 0, 0);// baud rate 115200 int op5= connection.controlTransfer(0x40, 0x04, 0x0008, 0, null, 0, 0);//8 bit int endPts = intf.getEndpointCount(); for(int e = 0; e &lt; endPts; e++){ UsbEndpoint endpoint = intf.getEndpoint(e); endpoint.getAttributes(); if( endpoint.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK){ if(endpoint.getDirection() == UsbConstants.USB_DIR_IN){ input = endpoint; Log.d("Endpoint", "Got input"); }else if(endpoint.getDirection() == UsbConstants.USB_DIR_OUT){ output = endpoint; Log.d("Endpoint", "Got output"); } } } text.setText(text.getText()+"\nOut= "+String.valueOf(output.getEndpointNumber())); text.setText(text.getText()+"\nIn= "+String.valueOf(input.getEndpointNumber())); byte [] buffer = {77}; // M\n in ascii for (int i = 0; i &lt; buffer.length; ++i) { connection.bulkTransfer(output, new byte[] {buffer[i]}, 1, 0); } read(); } } else { //error } } } } }; //read thread private void read() { Runnable r = new Runnable() { byte[] buffer = new byte[64]; byte[] buffer2; public void run() { while (isRecording) { { int op = connection.bulkTransfer(input, buffer, 64, 0); if (op &gt; 2) { buffer2 = new byte[op]; for (int i = 0; i &lt; op - 2; ++i) { buffer2[i] = buffer[i+2]; text.setText(text.getText()+"\n"+String.valueOf(buffer2[i])); } } } } } }; Thread t = new Thread(r); t.start(); </code></pre> <p>Thank you very much!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload