关于photon和nonphoton进程间的消息通讯?

photon向非photon进程发送消息比较容易实现,但是接收非photon的消息较为费事。从其文档来看,似乎可以通过name_attach() and PtAppAddInput()两种方式?但我都没有成功:),不知道哪位高人用过,给点提示,谢谢!
比如,PtAppAddInput(),如果PtAppAddInput(NULL, 0,(PtInputCallbackProc_t)input_proc, NULL),那么nonphoton进程如何
向其发送消息?期待您的解答。

用name_attach()可以实现,方法与非photon没有什么区别,需要注意的是在photon接收消息时MsgReceive()放置的位置,我试了很多方法,最后发现放在一个新开的线程中比较好,这样可以防止对photon的内部loop造成影响

谢谢QNX master,我接受消息也是放在一个线程里,而且可以接受到消息,问题是图形窗口却不见了。暂时还没找到原因。我倒是想用PtAppAddInput,但还不知道如何从nonphoton向photon发消息。

终于找到问题所在,但不知道如何解决。如果先调用name_attach,则用于刷新窗口的定时器无法创建,
如: timer = RtTimerCreate(CLOCK_REALTIME, -1, &refrash_window, NULL);
if(timer == NULL)
{
printf(“RtTimerCreate fail…\n”);

}
printf(“RtTimerCreate ok…\n”);
好像是RtTimerCreate没有返回,而且photon进程结束了。
如果先RtTimerCreate,则无法name_attach。即name_attach(NULL, ATTACH_POINT, 0) 返回NULL。
谁遇到过啊,给点提示?QNX master ?谢谢!

photon不是有自带的timer控件吗?直接用不就行了,为什么要自己麻烦呢?:slight_smile:

就实时方面来说,pttimer最差,其次是RtTimerCreate,最精确是timer_create,但一个比一个用起来不方便。本想折中一下用RtTimerCreate,呵呵,却如此结果。

界面程序就是一个显示,你还要做的多实时,

不太懂,什么叫“不够实时”?

没有具体比较,只是从帮助里找到“PtTimer widget – easy, but not very accurate. RtTimer* functions – a bit more work, a bit more accurate.”
我的目的是通过定时器刷新当前系统的实时显示信息,所以要选择一个相对精确的timer。谢谢两位。

你的photon与nophoton之间的消息传递问题解决了吗?

可以了。就用name_attach()好了,不麻烦的。