Question

Comment obtenir un Motorola (Symbol) Mobile Device Numéro de série?

Je programme le Motorola ES400 qui vient avec les bibliothèques "Symbol".

Il semble y avoir des moyens d'obtenir les numéros de série des différents scanners, mais pas de l'appareil réel lui-même!

Quelqu'un at-il des idées?


Quelle est la différence entre « numéro de série » (comme indiqué sur l'appareil) et « numéro de série électronique » retourné par TerminalInfo?

Était-ce utile?

La solution

Je viens de traiter cela sur le dispositif de MC9090, qui utilise également les bibliothèques de symboles (pas sûr si elles sont les mêmes, mais cela vaut un coup de feu). J'utilisé la réflexion parce que j'ai des appareils de différents fabricants et que vous souhaitez le même code à exécuter. Vous pouvez accéder à ce domaine directement à partir de la réflexion de la propriété ou de l'utilisation:

Voici où la propriété est:

Symbol.ResourceCoordination.Terminalinfo.ESN

Voici ma méthode utilisant la réflexion:

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

Hope this helps!

Autres conseils

Cest fantatic, merci. L'aide SDK Symbol n'a pas trouvé ce lors de la recherche!

Juste utilisé:

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

        return Version.ESN;

On trouve également ceci:

            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();

Voici la solution VB.Net rapide et facile:

Ajouter une référence à Symbol.ResourceCoordination.dll (j'ai trouvé le mien ici: C: \ Program Files \ Motorola EMDK pour .NET \ v2.8 \ SDK \ Smart Devices \ Symbol.ResourceCoordination.dll).

Ensuite, utilisez le code suivant pour accéder à la valeur ESN (numéro de série électronique).

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

grand sur nos Travaillé scanners MC3190S! :)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top