0

我正在测试 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>


我在-(void)UPnPEvent:(BasicUPnPService*)sender events:(NSDictionary*)events{中没有得到洞事件和错误值

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;
}
4

1 回答 1

1

事件是正确的。我下载了 upnpx 源代码,但无法理解其中的BasicParser逻辑UPnPEventParser——我在 Objective-C 中工作了这么长时间。我想知道 upnpx 是如何解释同一个键可以有多个值的,只是channel属性不同。这是事件命名约定中的一个例外LastChange,键通常是唯一的。事件中的最后一个Volume存在是 100,因此 upnpx 可能一直在替换Volumekey 的 value。

但它没有解释 InstanceID 编号错误。你确定你做对了吗?events您可以发布NSDictionary的完整转储吗?

于 2012-11-02T14:19:54.770 回答