Frage

Wie erhalte ich eine Seriennummer für mobile Geräte mit Motorola (Symbol)?

Ich programmiere den Motorola ES400, der mit "Symbol" -Bibliotheken geliefert wird.

Es scheint Möglichkeiten zu geben, die serielle Zahlen der verschiedenen Scanner zu erhalten, aber nicht das tatsächliche Gerät selbst!

Hat jemand irgendwelche Ideen?


Was ist der Unterschied zwischen "Seriennummer" (wie auf dem Gerät gezeigt) und "elektronische Seriennummer" von TerminalInfo zurückgegeben?

War es hilfreich?

Lösung

Ich habe mich gerade auf dem MC9090 -Gerät umgegangen, das auch die Symbolbibliotheken verwendet (nicht sicher, ob sie gleich sind, aber dies ist eine Aufnahme wert). Ich habe Reflexion verwendet, weil ich Geräte von verschiedenen Herstellern habe und den gleichen Code ausführen möchte. Sie können auf dieses Feld direkt aus der Eigenschaft zugreifen oder Reflexion verwenden:

Hier ist die Eigenschaft:

Symbol.ResourceCoordination.Terminalinfo.ESN

Hier ist meine Methode mit Reflexion:

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

Hoffe das hilft!

Andere Tipps

Das ist fantastisch, danke. Die Symbol -SDK -Hilfe fand dies bei der Suche nicht!

Nur verwendet:

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

        return Version.ESN;

Fand auch das:

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

Hier ist die schnelle und einfache VB.NET -Lösung:

Fügen Sie einen Verweis auf Symbol hinzu.

Verwenden Sie dann den folgenden Code, um auf den ESN -Wert (elektronische Seriennummer) zuzugreifen.

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

Arbeitete großartig an unseren MC3190S -Scannern! :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top