3

如何获取摩托罗拉(符号)移动设备序列号?

我正在对带有“符号”库的摩托罗拉 ES400 进行编程。

似乎有办法获取各种扫描仪的序列号,但不是实际设备本身的序列号!

有人有什么想法吗?


TerminalInfo返回的“序列号”(设备上显示的)和“电子序列号”有什么区别?

4

4 回答 4

4

我刚刚在 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);
        }

希望这可以帮助!

于 2010-12-31T13:49:41.053 回答
0

太棒了,谢谢。Symbol SDK 帮助在搜索时没有找到这个!

刚用过:

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

        return Version.ESN;
于 2010-12-31T14:05:22.400 回答
0

还发现了这个:

            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();
于 2010-12-31T15:29:18.677 回答
0

这是快速简便的 VB.Net 解决方案:

添加对 Symbol.ResourceCoordination.dll 的引用(我在这里找到了我的:C:\Program Files\Motorola EMDK for .NET\v2.8\SDK\Smart Devices\Symbol.ResourceCoordination.dll)。

然后使用以下代码访问 ESN(电子序列号)值。

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

在我们的 MC3190S 扫描仪上工作得很好!:)

于 2014-08-22T15:54:09.813 回答