Как получить серийный номер мобильного устройства Motorola (Symbol)? - PullRequest
3 голосов
/ 31 декабря 2010

Как получить серийный номер мобильного устройства Motorola (Symbol)?

Я программирую Motorola ES400, который поставляется с библиотеками Symbol.

Кажется, есть способы получитьсерийные номера различных сканеров, но не самого устройства!

У кого-нибудь есть идеи?


Какая разница между "серийным номером" (как показано на устройстве?) и "электронный серийный номер", возвращенный TerminalInfo?

Ответы [ 4 ]

4 голосов
/ 31 декабря 2010

Я только что имел дело с этим на устройстве MC9090, которое также использует библиотеки символов (не уверен, если они одинаковы, но это стоит попробовать). Я использовал рефлексию, потому что у меня есть устройства разных производителей и я хочу, чтобы один и тот же код работал. Вы можете получить доступ к этому полю непосредственно из свойства или использовать отражение:

Здесь находится недвижимость:

Symbol.ResourceCoordination.Terminalinfo.ESN

Вот мой метод с использованием отражения:

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

Надеюсь, это поможет!

0 голосов
/ 22 августа 2014

Вот быстрое и простое решение VB.Net:

Добавить ссылку на Symbol.ResourceCoordination.dll (я нашел мой здесь: C: \ Program Files \ Motorola EMDK для .NET \ v2.8 \SDK \ Smart Devices \ Symbol.ResourceCoordination.dll).

Затем используйте следующий код для доступа к значению ESN (электронный серийный номер).

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

Отлично работает на наших сканерах MC3190S!:)

0 голосов
/ 31 декабря 2010

Также нашел это:

            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();
0 голосов
/ 31 декабря 2010

Это фантастика, спасибо. Справка Symbol SDK не нашла этого при поиске!

Просто используется:

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

        return Version.ESN;
...