QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1009|回复: 5

信号越弄越晕了!

[复制链接]
发表于 2005-7-5 14:20:25 | 显示全部楼层 |阅读模式
进程间通信的信号方法,我现在晕死了!
我在父进程中发射一个信号X给子进程,子进程收到之后做一些操作A,再发射一个Y信号通知父进程做另一些画图操作,包括计算坐标点的值和画曲线,现在,我可以看到画图操作之前的坐标值计算,可是却没有曲线画出来,郁闷!
P.S:画图框是父进程里的,如果我之前不用X信号通知子进程,而是直接让子进程做操作A,之后都一样,这样,就可以画图了,可是可是,看起来,都好像没有什么差别呀!
拜托各位高手,告诉我原因吧,说说理论上的问题也可以呀!
发表于 2005-7-5 14:48:52 | 显示全部楼层
虽然我不懂QT,但我听说过QT有自己专门的IPC机制
DCOP
回复

使用道具 举报

 楼主| 发表于 2005-7-5 15:04:25 | 显示全部楼层
如果我之前不用X信号通知子进程,而是直接让子进程做操作A,之后都一样,这样,就可以画图了,可是可是,看起来,都好像没有什么差别呀!
这个很重要,可不可以说明QT的画图机制我用的是对的呢???
回复

使用道具 举报

发表于 2005-7-5 16:05:55 | 显示全部楼层

:D

:D
回复

使用道具 举报

发表于 2005-7-6 11:04:28 | 显示全部楼层
父进程的画图依赖于子进程的操作A吗, 加些printf看看父进程运行到了什么地步.
回复

使用道具 举报

 楼主| 发表于 2005-7-6 12:40:26 | 显示全部楼层
[quote:ca5fe15269="danath"]父进程的画图依赖于子进程的操作A吗, 加些printf看看父进程运行到了什么地步.[/quote]

父进程所有的都能做,就是这里
void tppaintForm::paintEvent(QPaintEvent *)
{
  paint = new QPainter;
  int x1, y1, x2, y2;
  paint->begin(this);
  paint->setBrush(QBrush(yellow, CrossPattern));
  paint->drawRect(40,20,350,320);
  paint->drawLine ( 210, 20, 210, 340 );//xmiddleline
  paint->drawLine ( 40, 60, 385, 60 );//11
  paint->drawLine ( 40, 130, 385, 130 );//10.5
  paint->drawLine ( 40, 200, 385, 200 );//10
  paint->drawLine ( 40, 270, 385, 270 );//9.5

signal(SIGUSR1, throutput);  //这里帮定了一个信号Y,可是,对于重载函数throutput,见下面
pause();

}

tppaintForm::tppaintForm()
{  
  setGeometry(100,100,400,400);
  setCaption( tr( "Throuput Plot" ) );

.............


void throutput(int sig)
  {
  qtthrput=read(thrpipe[0],thrbuffer,BUFSIZ);
  printf("!!!!!!!!!!!Read %d bytes:%s\n",qtthrput,thrbuffer);
  *thput=atof(thrbuffer);
  printf("*^_^*ao is %d,bo is %d\n",a0,b0);
  printf("@@@@@thput is %d\n",*thput);
  int a= qblock/320 ; // count blocknum;
  int xstep= 350/a ;
  int c=a0+xstep;
  int d = 340-(int)(0.014*((*thput)-90000));
  printf("d is %d\n",d);////这个也看到了
  paint->drawLine ( a0, b0, c, d );//就这个图没有画,其他都有完成
  a0=c;
  b0=d;
  printf("end end end !!!\n");//这个也看到了
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 17:30 , Processed in 0.160246 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表