int sphygmus_flag = 1; //全局变量
WidgetMeasure::WidgetMeasure(QWidget *parent, const char *name): QWidget(parent,name)
{
…
connect(pushbutton_sphygmus_start, SIGNAL(clicked()), this, SLOT(sphygmus_measure_start()));
…
connect(pushbutton_sphygmus_stop, SIGNAL(clicked()), this, SLOT(sphygmus_measure_stop()));
…
}
void WidgetMeasure::sphygmus_measure_start()
{
sphygmus_flag = 1;
char sphygmus_value[2] = {0};
int interval_time = 0;
int sphygmus_number = 0;
QString str_sphygmus_value;
QString str_sphygmus_num;
//while(sphygmus_flag) //当使用这个循环时,下面的程序完全无法执行,图形界面直接卡死。???PS:不使用这个循环单次运行一切正常。
{
do
{
if( read(sphygmus_fd,sphygmus_value,1) != 1)
{
label_sphygmus_time->setText("read sphygmus data error");
}
}while(sphygmus_value[1]<25 || sphygmus_value[1]>74);
interval_time = (int)(((unsigned int)sphygmus_value[0] | ((unsigned int)sphygmus_value[1] << 8))*0.079 + 0.5);
str_sphygmus_value = QString("%1").arg(interval_time);
label_sphygmus_time->setText("Interval Time: " + str_sphygmus_value + " ms");
sphygmus_number = (int)(60000 / interval_time + 0.5);
str_sphygmus_num = QString("%1").arg(sphygmus_number);
label_sphygmus_num->setText("Sphygmus Number: " + str_sphygmus_num + " / min");
}
}
void WidgetMeasure::sphygmus_measure_stop()
{
sphygmus_flag = 0;
}