Domanda

Come ottenere un Motorola (Symbol) Mobile Device numero di serie?

Sto programmando il Motorola ES400 che viene fornito con le librerie "Symbol".

Sembra che ci sia modi di ottenere i numeri di serie dei vari scanner, ma non del dispositivo vero e proprio!

Qualcuno ha qualche idea?


cosa è la differenza tra "numero di serie" (come mostrato sul dispositivo) e "numero di serie elettronico" restituito da TerminalInfo?

È stato utile?

Soluzione

Ho appena affrontato questo sul dispositivo MC9090, che utilizza anche le librerie di simboli (non so se sono uguali, ma questo vale la pena di un colpo). Ho usato riflessione perché ho dispositivi di diversi produttori e voglio lo stesso codice per l'esecuzione. Si potrebbe accedere a questo campo direttamente dalla riflessione proprietà o l'uso:

Qui è dove la proprietà è:

Symbol.ResourceCoordination.Terminalinfo.ESN

Ecco il mio metodo che utilizza riflessione:

try
        {                   
                Assembly symbolApi = Assembly.LoadFrom("Symbol.ResourceCoordination.dll");      

                Type terminalInfo = null;

                foreach (Type t in symbolApi.GetTypes())
                {
                    if (t.Name == "TerminalInfo")
                    {
                        terminalInfo = t;                       
                        break;
                    }
                }

                LogService.log(terminalInfo.Name);

                if (terminalInfo != null)
                {
                    object objTerminalInfo = Activator.CreateInstance(terminalInfo);

                    PropertyInfo esn = null;
                    foreach (PropertyInfo info in terminalInfo.GetProperties())
                    {                           
                        if (info.Name == "ESN")
                        {
                            esn = info;
                            break;
                        }
                    }

                    if (esn != null)
                    {
                        object objSn = esn.GetValue(objTerminalInfo, null);
                        sn = objSn.ToString();
                    }
                }
                else
                    LogService.log("TerminalInfo type not found in " + symbolApi.FullName);

        }
        catch (MissingFieldException e)
        {               
            LogService.log("MissingFieldException, not Symbol Unit: " + e.Message);
        }
        catch (Exception e)
        {
            LogService.log("Error in SymbolAPI: " + e.Message);
        }

Spero che questo aiuti!

Altri suggerimenti

Questo è favolose, grazie. Il simbolo di aiuto SDK non ha trovato questo durante la ricerca!

Proprio utilizzato:

Symbol.ResourceCoordination.TerminalInfo  Version = new Symbol.ResourceCoordination.TerminalInfo();

        return Version.ESN;

trovato anche questo:

            Symbol.ResourceCoordination.TerminalInfo  Version = new Symbol.ResourceCoordination.TerminalInfo();

        System.Text.StringBuilder MyUUID = new StringBuilder("0x") ;

        if (Version.UniqueUnitID != null)
        {
            //this code is actually from the Motorola SDK guid 
            foreach (byte b in Version.UniqueUnitID)

                MyUUID.Append(b.ToString("X2"));

        }

        return MyUUID.ToString();

Ecco la soluzione semplice e veloce VB.Net:

Aggiungere un riferimento alla Symbol.ResourceCoordination.dll (ho trovato la mia qui: C: \ Program Files \ Motorola EMDK per NET \ v2.8 \ SDK \ smart Devices \ Symbol.ResourceCoordination.dll).

Quindi utilizzare il seguente codice per accedere al valore ESN (numero di serie elettronico).

Dim Version As New Symbol.ResourceCoordination.TerminalInfo
MsgBox(Version.ESN)

ha lavorato molto sui nostri scanner MC3190S! :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top