예제 #1
0
파일: mainwindow.cpp 프로젝트: Juxi/aseba
MainWindow::MainWindow( QWidget *parent) :
	QWidget(parent)
{
	ip = new QLineEdit("127.0.0.1");
	port = new QLineEdit("33333");
	status = new QLabel(tr("Not connected"));
	connectBtn = new QPushButton(tr("Connect"));
	msgId = new QLineEdit("0");
	msgValue = new QLineEdit("0");
	sendMsg = new QPushButton(tr("Send Message"));
	quitBtn = new QPushButton(tr("Quit"));

	// Connection parameters
	QGroupBox* grp1 = new QGroupBox(tr("Connection"));
	QVBoxLayout* grp1layout = new QVBoxLayout();
	grp1->setLayout(grp1layout);
	grp1layout->addWidget(new QLabel(tr("IP")));
	grp1layout->addWidget(ip);
	grp1layout->addWidget(new QLabel(tr("Port")));
	grp1layout->addWidget(port);
	grp1layout->addWidget(status);
	grp1layout->addWidget(connectBtn);

	// UserMessage parameters
	QGroupBox* grp2 = new QGroupBox(tr("User message"));
	QVBoxLayout* grp2layout = new QVBoxLayout();
	grp2->setLayout(grp2layout);
	grp2layout->addWidget(new QLabel(tr("Message ID")));
	grp2layout->addWidget(msgId);
	grp2layout->addWidget(new QLabel(tr("Data 0")));
	grp2layout->addWidget(msgValue);
	grp2layout->addWidget(sendMsg);

	// Overall layout
	QVBoxLayout* main_layout = new QVBoxLayout();
	main_layout->addWidget(grp1);
	main_layout->addWidget(grp2);
	main_layout->addWidget(quitBtn);
	setLayout(main_layout);

	// connect widgets
	connect(connectBtn, SIGNAL(clicked()), this, SLOT(connectToDashel()));
	connect(sendMsg, SIGNAL(clicked()), this, SLOT(sendUserMessage()));
	connect(quitBtn, SIGNAL(clicked()), this, SLOT(close()));

	// connect signals from dashel
	connect(&dashelInterface, SIGNAL(messageAvailable(Aseba::UserMessage *)), SLOT(messageFromDashel(Aseba::UserMessage *)), Qt::QueuedConnection);
	connect(&dashelInterface, SIGNAL(dashelDisconnection()), SLOT(disconnectionFromDashel()), Qt::QueuedConnection);
	connect(&dashelInterface, SIGNAL(dashelConnection()), SLOT(connectionFromDashel()), Qt::QueuedConnection);
}
예제 #2
0
// internals
void DashelInterface::run()
{
	while (1)
	{
		try
		{
			stream = Dashel::Hub::connect(dashelParams.toStdString());

			emit dashelConnection();
			qDebug() << "Connected to target: " << dashelParams;
			isConnected = true;
			break;
		}
		catch (Dashel::DashelException e)
		{
			qDebug() << "Cannot connect to target: " << dashelParams;
			sleep(1000000L);	// 1s
		}

	}

	while (isRunning)
		Dashel::Hub::run();
}