【发布时间】:2011-06-02 00:05:47
【问题描述】:
如何获取摩托罗拉(Symbol)移动设备序列号?
我正在为带有“符号”库的摩托罗拉 ES400 编程。
似乎有办法获取各种扫描仪的序列号,但不是实际设备本身的序列号!
有人有什么想法吗?
TerminalInfo返回的“序列号”(设备上显示的)和“电子序列号”有什么区别?
【问题讨论】:
标签: api windows-mobile mobile pocketpc
如何获取摩托罗拉(Symbol)移动设备序列号?
我正在为带有“符号”库的摩托罗拉 ES400 编程。
似乎有办法获取各种扫描仪的序列号,但不是实际设备本身的序列号!
有人有什么想法吗?
TerminalInfo返回的“序列号”(设备上显示的)和“电子序列号”有什么区别?
【问题讨论】:
标签: api windows-mobile mobile pocketpc
我刚刚在 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);
}
希望这会有所帮助!
【讨论】:
太棒了,谢谢。 Symbol SDK 帮助在搜索时没有找到这个!
刚用过:
Symbol.ResourceCoordination.TerminalInfo Version = new Symbol.ResourceCoordination.TerminalInfo();
return Version.ESN;
【讨论】:
还发现了这个:
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();
【讨论】:
这是快速简便的 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 扫描仪上表现出色! :)
【讨论】: