我正在测试upnpx库来控制sonos多房间音响系统...工作做得很好。我对事件只有一个主要问题。如果我从sonos渲染器获得一个音量更改事件,如下所示
<Event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/"><InstanceID val="0"><Volume channel="Master" val="66"/><Volume channel="LF" val="100"/><Volume channel="RF" val="100"/></InstanceID></Event>我得到的不是洞事件和错误的值
-(空)UPnPEvent:(BasicUPnPService*)发送方事件:(NSDictionary*)事件{
InstanceID = 100; Volume = 100;应该是..。
InstanceID = 0; Volume = 66;如果有人能告诉我正确的方向,我会很高兴的!
向自贸区致以最好的敬意
upnpxdemo[66489:1310b] BasicParser.h didStartElement: propertyset
upnpxdemo[66489:1310b] BasicParser.h didStartElement: property
upnpxdemo[66489:1310b] BasicParser.h didStartElement: LastChange
upnpxdemo[66489:1310b] BasicParser.h didEndElement: LastChange, obj: <Event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/"><InstanceID val="0"><Volume channel="Master" val="52"/><Volume channel="LF" val="100"/><Volume channel="RF" val="100"/></InstanceID></Event>
upnpxdemo[66489:1310b] LastChange - element:LastChange, value:<Event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/"><InstanceID val="0"><Volume channel="Master" val="52"/><Volume channel="LF" val="100"/><Volume channel="RF" val="100"/></InstanceID></Event>
upnpxdemo[66489:1310b] BasicParser.h didStartElement: Event
upnpxdemo[66489:1310b] BasicParser.h didStartElement: InstanceID
upnpxdemo[66489:1310b] BasicParser.h didStartElement: Volume
upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:Volume value:52
upnpxdemo[66489:1310b] BasicParser.h didStartElement: Volume
upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:Volume value:100
upnpxdemo[66489:1310b] BasicParser.h didStartElement: Volume
upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:Volume value:100
upnpxdemo[66489:1310b] LastChangeParser.h void propertyName name:InstanceID value:100
upnpxdemo[66489:1310b] Event Digctionary: {
InstanceID = 100;
Volume = 100;
}发布于 2012-11-02 22:19:55
事件是正确的。我下载了UPnPEventParser源代码,但不能很容易地理解BasicParser和upnpx逻辑--我在Objective-C中工作了这么长时间。我想知道upnpx是如何解释同一个键可以有多个值的事实,只是channel属性不同。这是LastChange事件命名约定中的一个例外,键通常是唯一的。事件中出现的最后一个Volume是100,因此upnpx可能一直在替换Volume键的值。
不过,这并不能解释InstanceID编号错误。你确定你做对了吗?你能发布一个完整的events NSDictionary转储吗?
https://stackoverflow.com/questions/13186460
复制相似问题