如何发现设备
答案:2 悬赏:0 手机版
解决时间 2021-01-25 12:26
- 提问者网友:蓝莓格格巫
- 2021-01-24 15:28
如何发现设备
最佳答案
- 五星知识达人网友:人间朝暮
- 2021-01-24 16:18
您可以自动实现设备发现,也可以从客户端手动实现设备发现。当RFID 服务提供程序对已注册的提供程序调用 StartDiscovery 时,会自动进行设备发现。提供程序返回 DeviceDiscoveryEvent,它包含设备 ID、设备名称(如果支持)和相关的连接信息。而服务则根据从提供程序检索到的信息对返回的信息作出反应。下面的参数在发现期间起着很关键的作用。DeviceID:在以下方案说明中使用 ID1、ID2、ID3 代表此参数。
DeviceName(如果受支持):在以下方案说明中使用 N1、N2、N3 代表此参数。
ConnectionInformation:在以下方案说明中使用 C1、C2、C3 代表此参数。
假设有两个设备带有参数 ID1 – N1 – C1 和 ID2 – N2 – C2,这些参数已经存在于 RFID 服务存储中。还假设该服务现在已接收到具有以下参数的发现事件:ID1 - N1 - C1 或 ID1 - NoName - C1:此参数表示这是现有设备的发现事件。这是不需要任何更新的最简单情况,除非设备处于“失败”状态,如果是那样,会引起自动启用设备。
ID3 - N3 - C3 或 ID3 - NoName - C3:此参数表示这是新设备的发现事件。服务向 RFID 存储添加具有这些参数的新设备。如果未报告名称,服务将自动为设备生成名称。新添加的设备被初始化为“禁用(未配置)”状态,必须先手动启用,然后才能使用。
ID1 - N1 - C3 或 ID1 - NoName - C3:此参数表示现有设备的连接信息已更改,它表示“物理漫游”方案(同一个设备,但地址不同,这可能是 DHCP 服务器导致的)。服务用以下方式响应此事件:如果 RFID 服务存储中的现有设备为“未配置”状态,则服务会直接将其 ConnectionInformation 从C1 更新到 C3;否则,服务会首先连接到 C3,并且,如果连接有效,服务会将设备的 ConnectionInformation 更新到 C3,并且会启用此设备(如果设备处于“故障”状态)。
ID3 - N1 - C1 或 ID3 - NoName - C1:此参数表示 ConnectionInformation 与现有设备的一样,但 DeviceID 已更改,这就是“逻辑漫游”情况。例如,如果刚刚用一个新的设备更换原有的设备,就可能发生这种情况。服务通过以下方式响应此事件:将对应于设备(对应于 C1)的 DeviceID 从ID1 更新到 ID3。另外要注意,如果设备处于“失败”状态,则引发设备的自动启用。
ID3 - N1 - C3:此参数表示新设备,但其名称与现有设备的名称匹配。服务对此事件作出的响应是,生成默认新名称 N3(基于提供程序名称自动生成),将此新设备添加到存储,再将其初始化为“禁用(未配置)”状态。我们不用相同的名称来更新现有设备,因为这样会导致“名称强占”。
ID1 - N3 - C1:如果设备处于未配置状态,服务会尝试将设备的名称从 N1 更新为 N3,否则,服务将在日志中记录一个名称冲突,然后放弃该事件。
ID1 - N1 - C2 或ID1 - NoName - C2:此参数表示正在报告现有设备的新连接信息,并且报告的连接信息与另一现有设备的相应信息冲突。服务用以下方式响应此事件:服务首先尝试连接到新报告的连接信息 (C2),如果发现新连接有效,则服务会使有此连接信息的旧设备的连接信息变为无效,并使其进入禁用状态。然后,此服务会将对应于 ID1 的设备连接信息从 C1 更新到 C2。可以手动对已禁用的设备进行更新,或通过该设备的另一发现事件完成更新。
ID3 - N3 - C1:此参数表示正在报告发现新设备,但报告的连接信息与另一现有设备的相应信息冲突。服务用以下方式响应此事件:服务首先尝试连接到新报告的连接信息 (C1),如果发现新连接有效,则服务会使有此连接信息的旧设备的连接信息变为无效,并使其进入禁用状态。然后,服务会添加一个对应于 ID3-N3-C1 的新设备。可以手动对已禁用的设备进行更新,或通过该设备的另一发现事件完成更新。
对于其参数影响多个设备的发现事件,服务会先在日志中记录描述冲突的事件日志条目,然后放弃该事件。同样,对于更改了现有已配置设备的名称的发现事件,服务也会先在日志中记录描述名称冲突的事件日志条目,然后放弃该事件。 实现设备发现的步骤实现StartDiscovery 和StopDiscovery 以支持自动发现。实现StartDiscovery 时,应搜索提供程序支持的设备。找到设备后,提供程序应触发发现事件,该事件应包括关于设备的详细信息。
DeviceName(如果受支持):在以下方案说明中使用 N1、N2、N3 代表此参数。
ConnectionInformation:在以下方案说明中使用 C1、C2、C3 代表此参数。
假设有两个设备带有参数 ID1 – N1 – C1 和 ID2 – N2 – C2,这些参数已经存在于 RFID 服务存储中。还假设该服务现在已接收到具有以下参数的发现事件:ID1 - N1 - C1 或 ID1 - NoName - C1:此参数表示这是现有设备的发现事件。这是不需要任何更新的最简单情况,除非设备处于“失败”状态,如果是那样,会引起自动启用设备。
ID3 - N3 - C3 或 ID3 - NoName - C3:此参数表示这是新设备的发现事件。服务向 RFID 存储添加具有这些参数的新设备。如果未报告名称,服务将自动为设备生成名称。新添加的设备被初始化为“禁用(未配置)”状态,必须先手动启用,然后才能使用。
ID1 - N1 - C3 或 ID1 - NoName - C3:此参数表示现有设备的连接信息已更改,它表示“物理漫游”方案(同一个设备,但地址不同,这可能是 DHCP 服务器导致的)。服务用以下方式响应此事件:如果 RFID 服务存储中的现有设备为“未配置”状态,则服务会直接将其 ConnectionInformation 从C1 更新到 C3;否则,服务会首先连接到 C3,并且,如果连接有效,服务会将设备的 ConnectionInformation 更新到 C3,并且会启用此设备(如果设备处于“故障”状态)。
ID3 - N1 - C1 或 ID3 - NoName - C1:此参数表示 ConnectionInformation 与现有设备的一样,但 DeviceID 已更改,这就是“逻辑漫游”情况。例如,如果刚刚用一个新的设备更换原有的设备,就可能发生这种情况。服务通过以下方式响应此事件:将对应于设备(对应于 C1)的 DeviceID 从ID1 更新到 ID3。另外要注意,如果设备处于“失败”状态,则引发设备的自动启用。
ID3 - N1 - C3:此参数表示新设备,但其名称与现有设备的名称匹配。服务对此事件作出的响应是,生成默认新名称 N3(基于提供程序名称自动生成),将此新设备添加到存储,再将其初始化为“禁用(未配置)”状态。我们不用相同的名称来更新现有设备,因为这样会导致“名称强占”。
ID1 - N3 - C1:如果设备处于未配置状态,服务会尝试将设备的名称从 N1 更新为 N3,否则,服务将在日志中记录一个名称冲突,然后放弃该事件。
ID1 - N1 - C2 或ID1 - NoName - C2:此参数表示正在报告现有设备的新连接信息,并且报告的连接信息与另一现有设备的相应信息冲突。服务用以下方式响应此事件:服务首先尝试连接到新报告的连接信息 (C2),如果发现新连接有效,则服务会使有此连接信息的旧设备的连接信息变为无效,并使其进入禁用状态。然后,此服务会将对应于 ID1 的设备连接信息从 C1 更新到 C2。可以手动对已禁用的设备进行更新,或通过该设备的另一发现事件完成更新。
ID3 - N3 - C1:此参数表示正在报告发现新设备,但报告的连接信息与另一现有设备的相应信息冲突。服务用以下方式响应此事件:服务首先尝试连接到新报告的连接信息 (C1),如果发现新连接有效,则服务会使有此连接信息的旧设备的连接信息变为无效,并使其进入禁用状态。然后,服务会添加一个对应于 ID3-N3-C1 的新设备。可以手动对已禁用的设备进行更新,或通过该设备的另一发现事件完成更新。
对于其参数影响多个设备的发现事件,服务会先在日志中记录描述冲突的事件日志条目,然后放弃该事件。同样,对于更改了现有已配置设备的名称的发现事件,服务也会先在日志中记录描述名称冲突的事件日志条目,然后放弃该事件。 实现设备发现的步骤实现StartDiscovery 和StopDiscovery 以支持自动发现。实现StartDiscovery 时,应搜索提供程序支持的设备。找到设备后,提供程序应触发发现事件,该事件应包括关于设备的详细信息。
全部回答
- 1楼网友:猎心人
- 2021-01-24 16:24
[这是预发布文档,可能会在将来的版本中进行更改。空白主题以占位符的形式显示。]
设备发现指的是使用一组方法使 biztalk rfid mobile 能确定您的提供程序支持哪些设备。您可以自动实现设备发现,也可以从客户端手动实现设备发现。通常,在对已注册的提供程序调用 startdiscovery 方法时会进行设备发现。提供程序返回 devicediscoveryevent,它包含设备 id、设备名称(如果支持)和相关的连接信息。实现设备发现实现devicelistener.startdiscovery 方法和 devicelistener.stopdiscovery 方法,以支持设备发现。实现startdiscovery 时,应搜索提供程序支持的设备。找到设备后,提供程序应触发发现事件,该事件应包含关于设备的详细信息。 public override void startdiscovery() { logger.info("startdiscovery called"); } public override void stopdiscovery() { logger.info("stopdiscovery called"); } public override void triggerdiscovery() { logger.info("starting triggered discovery..this will raise a dummy device discovery event"); discovermydevice(); } private void discovermydevice() { transportsettings tsettings = new vendordefinedtransportsettings("virtualdevice", null); connectioninformation cinfo = new connectioninformation(providername, tsettings); deviceinformation dinfo = new deviceinformation("1", cinfo, null); propertyprofile pp = new propertyprofile(); pp.add(new propertykey(standarddevicepropertygroups.general, generalpropertygroup.name), (object)"mycedevice"); discoveryeventargs args = new discoveryeventargs(dinfo, pp); if (this.discoveryevent != null) { this.discoveryevent(this, args); } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯