Pregunta

Cómo obtener un dispositivo móvil Número de serie Motorola (Symbol)?

estoy programando el Motorola ES400 que viene con bibliotecas "símbolo".

Parece que hay maneras de conseguir los números de serie de los diferentes escáneres, pero no del dispositivo en sí!

¿Alguien tiene alguna idea?


¿Cuál es la diferencia entre "número de serie" (como se muestra en el dispositivo) y "número de serie electrónico" devuelto por TerminalInfo?

¿Fue útil?

Solución

Yo sólo se ocupó de este dispositivo en el MC9090, que también utiliza las bibliotecas de símbolos (no estoy seguro si son los mismos, pero esto es digno de un tiro). Solía ??reflexión porque tengo dispositivos de diferentes fabricantes y quiero el mismo código se ejecute. Se podía acceder a este campo directamente de la propiedad o el uso de reflexión:

Aquí es donde la propiedad es:

Symbol.ResourceCoordination.Terminalinfo.ESN

Aquí es mi método utilizando la reflexión:

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

Espero que esto ayude!

Otros consejos

Eso es fantástico, gracias. El símbolo de la ayuda SDK no encontramos que esto en la búsqueda!

Sólo utiliza:

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

        return Version.ESN;

También encontraron esta:

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

Here's the quick and easy VB.Net solution:

Add a reference to Symbol.ResourceCoordination.dll (I found mine here: C:\Program Files\Motorola EMDK for .NET\v2.8\SDK\Smart Devices\Symbol.ResourceCoordination.dll).

Then use the following code to access the ESN (Electronic Serial Number) value.

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

Worked great on our MC3190S scanners! :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top