如何检测Windows Mobile 5设备序列号? (.NET CF 3.5)

我工作的设备有多种(主要是Datalogic 4420 Falcon ),有人总是离开基地。 电池耗尽,然后将它们带回来进行全面设置。 (应该有一种方法可以配置SD卡上的文件,以便在出现这样的错误时重新加载,但它不能很好地工作)

当有人在设备上保存更改时(使用我将数据写入SQL Server的应用程序),序列号会随之发送,以便我们可以跟踪正在使用的设备。

每个设备都有一个Serial Number ,我必须在物理上(即手动)将其写入Device name字段,我可以阅读。 如果有人想知道如何在这里工作代码:

 static string deviceId = null; public static string DeviceName { get { if (String.IsNullOrEmpty(deviceId)) { using (RegistryKey key = Registry.LocalMachine.OpenSubKey("Ident", true)) { try { deviceId = key.GetValue("Name", "[Unnamed]").ToString(); } catch (Exception e) { ErrorWrapper("GetDeviceName", e); deviceId = Dns.GetHostName(); } finally { key.Flush(); key.Close(); } } } return deviceId; } } 

我不喜欢手册(即Fat Finger)序列号输入。 是否有人要求查询设备的序列号,或者该供应商是否具体?

Datamax确实制作了一个特定于其设备的SDK,但我们不希望我们的应用程序绑定到任何一个制造商(我们已经绑定到VS2008)。

在此处输入图像描述

我首先尝试P / Invoke来获取设备ID(带有IOCTL_HAL_GET_DEVICEID )并查看它是否与您之后的序列号相匹配。 这是一个例子 。

我不知道您的Datalogic 4420 Falcon设备,但我使用Intermec CK30和CK60并且我有他们的itc50.dll文件。 这是片段:

 [DllImport("itc50.dll")]public static extern int ITCGetSerialNumber(StringBuilder Snumber, int buffSize); StringBuilder hwSN = new StringBuilder(12); if (ITCGetSerialNumber(hwSN, hwSN.Capacity) >= 0) { ; ; }