如何知道设备是否为带RFID的MC90G,是否为C#

如何知道设备是否为带RFID的MC90G,是否为C#,c#,compact-framework,device,C#,Compact Framework,Device,我正在为MC90G设备开发C#,我试图在我的代码中知道设备是否有RFID来加载已确定的驱动程序;我使用了coredll.lib库中的SPI_GETOEMINFO,但这会返回相同的模型:“MC9090G”,对于这两个设备,我如何知道哪一个有RFID 如果您想读取制造商硬编码到您的设备中的内容,您应该获得 如果您希望自己设置设备的序列号,您可以使用关于框中的设备名称字段:进入设置(开始>设置),启动关于小程序,然后切换到设备ID屏幕 从这里,您可以将默认值(上图中的Pocket_PC)替换为设备的

我正在为MC90G设备开发C#,我试图在我的代码中知道设备是否有RFID来加载已确定的驱动程序;我使用了coredll.lib库中的SPI_GETOEMINFO,但这会返回相同的模型:“MC9090G”,对于这两个设备,我如何知道哪一个有RFID

如果您想读取制造商硬编码到您的设备中的内容,您应该获得

如果您希望自己设置设备的序列号,您可以使用关于框中的设备名称字段:进入设置(开始>设置),启动关于小程序,然后切换到设备ID屏幕

从这里,您可以将默认值(
上图中的Pocket_PC
)替换为设备的序列号…或者您想在其中写入的任何内容

此字段可以从注册表中读取,如下所示:

using Microsoft.Win32.Registry;

private static string _deviceId = null;

public static string DeviceName {
  get {
    if (String.IsNullOrEmpty(_deviceId)) {
      using (RegistryKey key = Registry.LocalMachine.OpenSubKey("Ident", true)) {
        try {
          _deviceId = (string)key.GetValue("Name", "[Unnamed]");
        } catch (Exception e) {
          ErrorWrapper("GetDeviceName", e);
          _deviceId = System.Net.Dns.GetHostName();
        } finally {
          key.Flush();
          key.Close();
        }
      }
    }
    return _deviceId;
  }
}
请注意,这个特定的getter将只从注册表读取一次,然后存储该值以供进一步使用。不过,可能没有必要这样做,因为注册表读取被设计为快速的

当然,如果您的员工忘记将移动设备放在充电器上,而充电器又没电了,您必须重新输入。

如果您下载,则Symbol.resourcecordination.dll程序集的Symbol.resourcecordination命名空间中有一个名为TerminalInfo的类。创建此类的实例,然后读取ESN属性以获取设备的实际硬件序列号


同一类还包含可用于确定已安装硬件的属性,尽管我自己没有使用过这些属性,也无法直接告诉您应该如何查询它们。

在寻找解决方案以区分是否使用RFID的设备之后,我使用Symbol.RFID.dll程序集创建了一个RFID.Reader实例:

Symbol.RFID.Reader info = new Symbol.RFID.Reader();
因此,当设备没有RFID时,这行抛出一个System.Exception“Exception”;因此,我正在处理这个异常,以便对没有RFID的设备执行我想要的操作

我知道这不是最好的解决办法,但它对我很有效


感谢大家的回答。

我们的设备(Datalogic Falcons)有一个字段,可以在设备设置的“关于”框中填充。当我设置每个设备时,我必须手动进入并设置它们的序列号,否则我不知道如何区分一个设备和另一个设备。感谢您的评论,但是我如何在C#中区分它们,如何检索该序列号?我有很多设备MC90G,所以我不能按序列号编码,它必须是通用的。我找不到在代码中区分它们的方法。好的,请参阅答案。让我知道这是否有帮助。如果支持RFID的设备具有特定的RFID dll或驱动程序,您可以查找它们以区分功能。是的,我同意,但我如何在C#中检索该值?好的,非常感谢您的回答,此解决方案有效,是的,但对我来说,问题是我无法为设备设置序列号或其他内容,我没有访问它们的权限,因此我必须将这些设备与它们的型号区分开来(我尝试检索它们的型号,但没有提供足够的信息)。您是否为您的设备下载、安装并在Visual Studio中使用了?这将允许您阅读MC9090设备的所有特定内容。是的,我这样做了,但我找不到我要查找的内容,我仍在搜索如何使用EMDK区分这些设备。感谢回答Martin,我将尝试此ESN属性并通知您。感谢发布您的解决方案,我在Symbol.ResourceCoordination.dll程序集中尝试了TerminalInfo属性,它返回已安装的硬件配置,但我找不到RFID配置,但它具有触摸板、摄像头、音频和蓝牙的配置。所以,我要用Symbol.RFID.dll程序集发布我的解决方案