Как получить серийный номер мобильного устройства Motorola (символ)?
-
14-10-2019 - |
Вопрос
Как получить серийный номер мобильного устройства Motorola (символ)?
Я программирую Motorola ES400, который поставляется с библиотеками «символов».
Кажется, есть способы получить серийные номера различных сканеров, но не самого устройства!
У кого -нибудь есть идеи?
В чем разница между «серийным номером» (как показано на устройстве) и «электронным серийным номером», возвращенным TerminalInfo?
Решение
Я только что имел дело с этим на устройстве 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);
}
Надеюсь это поможет!
Другие советы
Это фантазировано, спасибо. Символ SDK Help не нашел этого при поиске!
Только что использовалось:
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 для .net v2.8 sdk Smart Devices symbol.resourcoordination.dll).
Затем используйте следующий код для доступа к значению ESN (электронный серийный номер).
Dim Version As New Symbol.ResourceCoordination.TerminalInfo
MsgBox(Version.ESN)
Отлично работал над нашими сканерами MC3190S! :)