Я только что имел дело с этим на устройстве 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);
}
Надеюсь, это поможет!