Autore Topic: Minipc mk809 HOST USB + pic18f4550 , comunicazione device  (Letto 2683 volte)

Offline MarkRider

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    motorola e minipc
  • Sistema operativo:
    Win 7,Win XP
Minipc mk809 HOST USB + pic18f4550 , comunicazione device
« il: 21 Novembre 2013, 21:02:56 CET »
0
Salve a tutti è il mio primo post.
Ho letto un po in giro nel forum e penso che sia la sezione giusta, è da un pezzo che cerco di sviluppare una semplicissima applicazione host usb che veda un dispositivo embeded.

In realtà non sono riuscito a vedere ancora niente. Ho seguito le istruzioni dettate dalle guida ufficiale sdk http://java.labsoft.dcc.ufmg.br/apiminer/static/docs/guide/topics/connectivity/usb/host.html[/url] , che a leggerla sembra abbastanza chiara, mentre ad eseguirla non mi funziona per niente.

Quando provo a debuggare la mia app, la lista dei dispositivi è vuota completamente nonostante ci sia collegata una pennetta bluethoot e il dispositivo.

11-22 03:40:29.136: W/Vold(78): subsystem found in netlink event
11-22 03:40:29.136: D/Vold(78): usb, 2
11-22 03:40:29.136: W/Vold(78): subsystem found in netlink event
11-22 03:40:29.136: D/Vold(78): usb, 2
11-22 03:40:37.036: W/Vold(78): subsystem found in netlink event
11-22 03:40:37.036: D/Vold(78): usb, 1
11-22 03:40:37.036: D/Vold(78): == current usb device: 04D8/003F ===
11-22 03:40:37.036: W/Vold(78): subsystem found in netlink event

Il sistema mi vede il dispositivo.

Codice: [Seleziona]
package com.example.sdkusb;

import java.util.HashMap;
import java.util.Iterator;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;

public class MainActivity extends Activity {

       
        private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";
        protected static final String TAG = "USB STATUS:";
       
        @SuppressLint("UseValueOf")
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
               
               
                PendingIntent mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
                IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);
                registerReceiver(mUsbReceiver, filter);
               
                UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
               
                Log.d(TAG,"activity created");
                String s = new Boolean(manager.getDeviceList().isEmpty() ).toString();
                Log.d(TAG, s  );
               
                HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
                Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
                while(deviceIterator.hasNext()){
                    UsbDevice device = deviceIterator.next();
                    //your code
                    manager.requestPermission(device, mPermissionIntent);
                    Log.d(TAG, device.getDeviceName());
                    int i = 0;
                }
               
               
               
               
        }

                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) {
                                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
                                   }
                                }
                                else {
                                    Log.d(TAG, "permission denied for device " + device);
                                }
                            }
                        }
                    }
                };

        @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;
        }

}


molto codice è copia incolla dalla guida ufficiale, ho provato sia con il filtro con le specifiche vid e pid del device, poi ho provato a vedere se mi stampava a video i device... niente da fare.

Non so che strada intraprendere.

ho visto un'app fatta da costui: [url]http://android.sztupy.hu/usbhub.html
E la sua app mi rileva tutti i dispisitivi, ma proprio tutti.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Minipc mk809 HOST USB + pic18f4550 , comunicazione device
« Risposta #1 il: 22 Novembre 2013, 07:10:09 CET »
0
che terminale stai usando? con che versione di android?

hai proprio provato la sua app sul tuo terminale e funziona?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline MarkRider

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    motorola e minipc
  • Sistema operativo:
    Win 7,Win XP
Re:Minipc mk809 HOST USB + pic18f4550 , comunicazione device
« Risposta #2 il: 22 Novembre 2013, 18:53:40 CET »
0
Android 4.1 Jelly Bean.

Sono molto ignorante in materia Android e linux,mi sto documentando a riguardo del terminale che non uso e non so come usarlo. So che posso fare dei comandi con l'adb.

Citazione
hai proprio provato la sua app sul tuo terminale e funziona?
Se ti riferisci all'app fatta da Sztupy, si, funziona sul mio dispositivo e legge tutte le usb agganciate.

Perdonate l'ignoranza.

Ho messo un log sul broadcastReceiver, e non lo vedo stampare sul logcat di Eclipse. Può essere che è sbagliato l'intentfilter?
« Ultima modifica: 22 Novembre 2013, 20:00:01 CET da MarkRider »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Minipc mk809 HOST USB + pic18f4550 , comunicazione device
« Risposta #3 il: 23 Novembre 2013, 10:59:06 CET »
0
E' scritto nella guida, ma lo chiedo lo stesso: il manifest lo hai modificato come richiesto, giusto?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline MarkRider

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    motorola e minipc
  • Sistema operativo:
    Win 7,Win XP
Re:Minipc mk809 HOST USB + pic18f4550 , comunicazione device
« Risposta #4 il: 23 Novembre 2013, 15:28:40 CET »
0
Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sdkusb"
    android:versionCode="1"
    android:versionName="1.0" >
<uses-feature android:name="android.hardware.usb.host" />
    <uses-sdk
       
        android:minSdkVersion="14"
        android:targetSdkVersion="14" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.sdkusb.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                               
                <category android:name="android.intent.category.LAUNCHER" />
               
            </intent-filter>
                    <intent-filter>
                <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
            </intent-filter>
            <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
                android:resource="@xml/filter" />
        </activity>
    </application>

</manifest>

il mio manifest

e il filter:

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>

<resources>
    <usb-device vendor-id="04d8" product-id="003f" />
</resources>

Ho provato anche con vid e pid scritti in decimale ma il risultato non cambia. Cmq non capisco perchè non riesco ad enumerare le usb.

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Minipc mk809 HOST USB + pic18f4550 , comunicazione device
« Risposta #5 il: 23 Novembre 2013, 15:42:51 CET »
0
Premetto che vado a sensazione, perchè non ho mai provato queste cose.

A me sembra che il filter ti faccia vedere SOLO le periferiche che hanno quei parametri, quindi potrebbe essere quello ad impedirti di vederle tutte. Mi sbaglio? Vale la pena provare a togliere del tutto il filter?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline MarkRider

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    motorola e minipc
  • Sistema operativo:
    Win 7,Win XP
Re:Minipc mk809 HOST USB + pic18f4550 , comunicazione device
« Risposta #6 il: 23 Novembre 2013, 18:46:06 CET »
0
Dunque, il filter servirebbe solo per il famoso popup di quando viene allacciato un dispositivo tra quelli elencati.

Per chi avesse avuto il mio stesso problema invito a leggersi questo post:

http://stackoverflow.com/questions/11183792/android-usb-host-and-hidden-devices

Vorrei comunque approfondire perchè non è una soluzione ma un escamotage o come cavolo si scrive :)
Qualcuno sa per caso, se ci sono delle possibilità che questo tag <uses-feature android:name="android.hardware.usb.host" /> non funzioni come dovrebbe?
Perchè quello che ho fatto è aggiungere quella riga al file che controlla i permessi dell'hardware. In teoria lo doveva fare il manifest

P.S. Un mese e 3 settimane che sto dietro a sto scherzetto di questo andorid.