• 4103阅读
  • 4回复

QTE2.3.7下,编写了个画波形的程序,但运行程序,界面冻住,问题在哪? [复制链接]

上一主题 下一主题
离线mychris
 
只看楼主 倒序阅读 楼主  发表于: 2009-05-15
我在接受串口数据时用 点击按钮,就开始接受数据,并画波形,我波形是用paintEvent drawLine
0来做的,运行程序时,一点接收数据 ,界面就冻住
connect(xb1,SIGNAL(clicked()),this,SLOT(receive()));


void MyMainWidget::receive()
{
  int res;
  struct termios tio,oldtio;
  int fd;
  fd=open(pComPort,O_RDWR | O_NDELAY | O_NOCTTY);
  tcgetattr(fd,&oldtio);
  bzero(&tio,sizeof(tio));                                                                                                    
  tio.c_cflag = BodeRate |CS8 |CREAD |CLOCAL;
  //tio.c_cflag = B115200 |CS8 |CREAD |CLOCAL;      
  tio.c_lflag = ICANON;
  tio.c_iflag = IGNPAR;
  tio.c_oflag = 0;
            
  
  
  tcflush(fd,TCIFLUSH);
  tcsetattr(fd,TCSANOW,&tio);
       int n;
       int j;
       n=0;    
       do
       {  
           res = read(fd,buf,100);
           delay(5000);
           buf[res]=0;  
           printf("res=%d buf=%s\n",res,buf);
           j=atoi(buf);
           io[n]=j;
           printf("io[%d]=%d\n",n,io[n]);  
           n++;                              
           xb2 ->setText(buf);    
          update();

       }while(n<100);
        update();
  Btl->setEnabled(true);
  TypeCombo->setEnabled(true);
}
不知是不是没有使用到多线程的原因?
离线20044454
只看该作者 1楼 发表于: 2009-05-15
一般界面不动了,就是你用一个线程去跑多个线程了
让我做一个Qt的大牛!!!!
离线jorneyr

只看该作者 2楼 发表于: 2009-05-15
多线程处理
离线mychris
只看该作者 3楼 发表于: 2009-05-18
我刚刚开始学习QT,不知道多线程应该怎样使用?是让那个功能来进行QTHREAD的线程操作?是让画波形的那段还是接受数据的那段?
离线xafzg666
只看该作者 4楼 发表于: 2009-05-27
怎么样解决一个线程画多个线程的问题啊?请指教i
快速回复
限100 字节
 
上一个 下一个