qtearm-4.8.0中,底层驱动can驱动已经实现,并且该驱动使用了异步通知,linux应用测试程序可以通过 signal(SIGIO,数据读取函数);调用数据读取函数,
但是在qte中如何实现呢?如下代码:
void MainWindow::on_btn_start_clicked()
{
QString str,temp;
int oflags;
unsigned int canid[6]={0x00000181,0x00000182,0x00000183,0x00000184,0x00000185,0x00000186};
fd = open("/dev/mcp2515",O_RDWR);//|O_NONBLOCK);//s=socket(PF_CAN, SOCK_RAW, CAN_RAW);
if(fd<0)
{
str.sprintf("fail to open mcp2515 ,return val=%d\n",ret);
ui->recEdit->setText(str);
}
else
{
str.sprintf("open mcp2515 success,return val=%d,fd=%d\n",ret,fd);
ui->recEdit->setText(str);
}
signal(SIGIO,PostoQT);
fcntl(fd,F_SETOWN,getpid());
oflags=fcntl(fd,F_GETFL);
fcntl(fd,F_SETFL,oflags|FASYNC);
//ptimer->start(100);
}
PostoQT如果是MainWindow的成员函数,那么因为不是静态的编译报错。。。。
如果改静态。。。。。省略n字。。。
求解,如何链接事件响应。