Julila
@Julila
вечный студент / german version

Как написать класс для Balance Board?

Привет всем.
Я к вам за советом.
У меня есть Balance Board , я могу получать с него значения постоянно, но только из while цикла. Что не правильно, но только ради теста написано.
я хочу понятное дело организовать код по другому. Что бы класс работал паралельно. Я например получаю значения и отображаю их в Qt Widget ну и так далее.
На ум первое что мне приходит - это конечно Thread.
Но вот я не знаю как поступить правильно? Какие будут ваши советы.
Что бы как бы ловить изменения..
Надеюсь вы меня поняли

#include "b_board.h"
#include "wiiuse.h"
#include "qdebug.h"

BalanceBoard::BalanceBoard()
{
	initializeBoard();
}

BalanceBoard::~BalanceBoard()
{

}

bool BalanceBoard::initializeBoard()
{
	 
	 
	wiimote** wiimotes = wiiuse_init(1);
 
	int found = wiiuse_find(wiimotes, 1, 60);
	if (found != 1){
		return false;
	}
	int connected = wiiuse_connect(wiimotes, 1);
	if (connected != 1){
		return false;
	} 
	 
	b_work = true;


	while (b_work)
	{
		if (wiiuse_poll(wiimotes, 1))
		{

			switch (wiimotes[0]->event) {
			case WIIUSE_EVENT:
				// generic event occured 
				handle_event(wiimotes[0]);
			case WIIUSE_STATUS:
				break;

			case WIIUSE_DISCONNECT:

			case WIIUSE_UNEXPECTED_DISCONNECT:
				break;

			case WIIUSE_READ_DATA:
				break;

			case WIIUSE_WII_BOARD_CTRL_INSERTED:

				break;

			case WIIUSE_WII_BOARD_CTRL_REMOVED:
				
				break;

			default:
				break;
			}

		}

	}
	return true;

}

void BalanceBoard::work()
{

}


void BalanceBoard::handle_event(struct wiimote_t* wm)
{
	//show events specific to supported expansions
	if (wm->exp.type == EXP_WII_BOARD){
		struct wii_board_t* wb = (wii_board_t*)&wm->exp.wb;
		float total = wb->tl + wb->tr + wb->bl + wb->br; //weight
		float x = ((wb->tr + wb->br) / total) * 2 - 1;

		float y = ((wb->tl + wb->tr) / total) * 2 - 1;
		qDebug() << "Weight: " << total;

		qDebug() << "Interpolated weight:: " << wb->tl << "  " << wb->tr << "  " << wb->bl << "  " << wb->br;

		qDebug() << "Raw: " << total << "  " << wb->rtl << "  " << wb->rtr << "  " << wb->rbl << "  " << wb->rbr;
		
	}
}
  • Вопрос задан
  • 145 просмотров
Пригласить эксперта
Ответы на вопрос 1
PavelK
@PavelK
Почему бы не переделать на сигнал-слоты? Если всё же значение приходят постоянно , тогда да, в отдельный поток выносить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы