【发布时间】:2016-08-10 12:24:08
【问题描述】:
请原谅,因为我知道这可能是一个非常简单的问题,但我需要另一双眼睛。我的 GUI 上有一个复选框,该框的状态(开/关)将直接改变我的中断服务程序。这看起来超级简单,但我不能使用:
this->ui->checkBox_2->isChecked();
作为验证器,因为“无效使用“this”是非成员函数” 除此之外,我试图只保存 stateChanged(int arg1) 的值 指向一些我可以在 ISR 中调用的指针或变量,但我想我遇到了范围困难。 欢迎提出任何建议!
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(this->ui->pushButton_8,SIGNAL(clicked()),this,SLOT(on_pushButton_8_clicked()));
//connect(this->ui->checkBox_2,SIGNAL(clicked(bool)),this,SLOT(myInterruptRIGHT));
//connect(this->ui->checkBox_2,SIGNAL(clicked(bool)),this,SLOT(myInterruptLEFT));
// connect(on_checkBox_2_stateChanged(int arg1)(),SIGNAL(clicked(bool checked)),this,SLOT(myInterruptRIGHT));
ui->pushButton->setText("STOP");
ui->verticalSlider->setMinimum(6);
ui->verticalSlider->setMaximum(8);
}
void MainWindow::on_checkBox_2_stateChanged(int arg1)
{
QCheckBox *cb2 = new QCheckBox;
connect(cb2,SIGNAL(stateChanged(int)),this,SLOT(on_checkBox_2_stateChanged(int)));
int sensor = digitalRead(23);
//Does a bunch of stuff
}
void myInterruptRIGHT (void)
{
//if(this->ui->checkBox_2->isChecked())
if(ui->checkBox_2->isChecked())
{ //Does stuff
}
else
{ //more stuff
}
}
PI_THREAD(RightTop)
{
for(;;)
{
wiringPiISR(23,INT_EDGE_RISING,&myInterruptRIGHT);
}
}
对于草率的代码,我深表歉意,我已经测试了很多不同的东西,但都没有证明是非常有效的。
【问题讨论】: