Come ottenere un Motorola (Symbol) Mobile Device numero di serie?
-
14-10-2019 - |
Domanda
Come ottenere un Motorola (Symbol) Mobile Device numero di serie?
Sto programmando il Motorola ES400 che viene fornito con le librerie "Symbol".
Sembra che ci sia modi di ottenere i numeri di serie dei vari scanner, ma non del dispositivo vero e proprio!
Qualcuno ha qualche idea?
cosa è la differenza tra "numero di serie" (come mostrato sul dispositivo) e "numero di serie elettronico" restituito da TerminalInfo?
Soluzione
Ho appena affrontato questo sul dispositivo MC9090, che utilizza anche le librerie di simboli (non so se sono uguali, ma questo vale la pena di un colpo). Ho usato riflessione perché ho dispositivi di diversi produttori e voglio lo stesso codice per l'esecuzione. Si potrebbe accedere a questo campo direttamente dalla riflessione proprietà o l'uso:
Qui è dove la proprietà è:
Symbol.ResourceCoordination.Terminalinfo.ESN
Ecco il mio metodo che utilizza riflessione:
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);
}
Spero che questo aiuti!
Altri suggerimenti
Questo è favolose, grazie. Il simbolo di aiuto SDK non ha trovato questo durante la ricerca!
Proprio utilizzato:
Symbol.ResourceCoordination.TerminalInfo Version = new Symbol.ResourceCoordination.TerminalInfo();
return Version.ESN;
trovato anche questo:
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();
Ecco la soluzione semplice e veloce VB.Net:
Aggiungere un riferimento alla Symbol.ResourceCoordination.dll (ho trovato la mia qui: C: \ Program Files \ Motorola EMDK per NET \ v2.8 \ SDK \ smart Devices \ Symbol.ResourceCoordination.dll).
Quindi utilizzare il seguente codice per accedere al valore ESN (numero di serie elettronico).
Dim Version As New Symbol.ResourceCoordination.TerminalInfo
MsgBox(Version.ESN)
ha lavorato molto sui nostri scanner MC3190S! :)