【QNX】pps开发指南(4):发布
第四章:发布
要发布一个PPS对象,发布者只需对该对象文件调用open(),然后使用O_WRONLY标记即可发布,或者使用O_RDWR标记来发布和订阅。发布者然后可以调用write()来修改对象的属性。当然此操作是非阻塞的。
关于如何发布,简单的示例,之后的篇章会进行展现。
当您向文件写入一个属性时,通常使在一个单个操作中完成的。为了保证可以正确地处理来自多个发布者的同时写操作,请使用一个单独的Write()调用。例如,以下写法不建议:
可以使用以下用法:
一:创建/修改/删除对象及其属性
你可以使用下表的方式创建/修改/删除对象和属性:
关于删除操作:
1. 对对象文件调用ftruncate()将删除对象的所有属性,无论长度参数的值是多少。
2. 从命令行输入一个简单的Bourne shell重定向指令(如echo attr::hello > /pps/object),可以打开一个带有O_TRUNC的对象并删除所有属性。
二:多发布者
PPS支持多个发布者发布同一个pps对象。此功能是必需的,因为不同的发布者可以访问应用于同一对象的不同属性的数据。对于多个发布者来说,写入对象是安全的,因为pps管理器保证每个pps write()都是原子的。
例如,在具有PlayCurrent对象的多媒体系统中,io-media可能是time::value属性的源,而HMI可能是duration::value属性的源。对于仅更改time属性的发布者可以在写入对象时只更改time属性,而保持其他属性不变。在上面的例子中,假设PlayCurrent对象有以下属性值:
如果io-media按如下方式更新了PlayCurrent对象的时间属性:
紧接着HMI更新了duration属性:
那么,最终的结果就是: