Beispiel #1
0
bool ex_samples(void *arg) {

	ITheFramework *frame = Factory::GetFramework();

	Decorator *decorator = ssi_create (Decorator, 0, true);
	frame->AddDecorator(decorator);

	ITheEventBoard *board = Factory::GetEventBoard();

	ssi_event_t e_class;
	ssi_event_init(e_class, SSI_ETYPE_STRING, Factory::AddString("sender"), Factory::AddString("class"), 0, 0, SSI_MAX_CHAR);

	Mouse *mouse = ssi_create(Mouse, 0, false);
	mouse->getOptions()->mask = Mouse::LEFT;
	ITransformable *cursor_p = frame->AddProvider(mouse, SSI_MOUSE_CURSOR_PROVIDER_NAME);
	ITransformable *button_p = frame->AddProvider(mouse, SSI_MOUSE_BUTTON_PROVIDER_NAME);
	frame->AddSensor(mouse);

	FileSampleWriter *writer = 0;
	
	writer = ssi_create(FileSampleWriter, 0, true);
	writer->getOptions()->type = File::ASCII;
	writer->getOptions()->setClasses("A;B");
	writer->getOptions()->setUser("user");
	frame->AddConsumer(cursor_p, writer, "1.0s");
	board->RegisterListener(*writer, "class@");

	writer = ssi_create(FileSampleWriter, 0, true);
	writer->getOptions()->setPath("test");
	writer->getOptions()->type = File::BINARY;
	writer->getOptions()->setClasses("A;B");
	writer->getOptions()->setUser("user");
	frame->AddConsumer(cursor_p, writer, "1.0s");
	board->RegisterListener(*writer, "class@");

	writer = ssi_create(FileSampleWriter, 0, true);
	writer->getOptions()->type = File::ASCII;
	writer->getOptions()->setClasses("A;B");
	writer->getOptions()->setUser("user");
	writer->getOptions()->streamClassIndex = 1;
	ITransformable *input[2] = { cursor_p, cursor_p };
	frame->AddConsumer(2, input, writer, "1.0s");

	decorator->add("console", 0, 0, 650, 800);
	decorator->add("plot*", 650, 0, 400, 400);
	decorator->add("monitor*", 650, 400, 400, 400);

	board->Start();
	frame->Start();

	Sleep(2000);
	ssi_strcpy(e_class.ptr, "B");
	board->update(e_class);

	Sleep(2000);
	ssi_strcpy(e_class.ptr, "A");
	board->update(e_class);

	Sleep(2000);
	ssi_strcpy(e_class.ptr, "");
	board->update(e_class);

	frame->Wait();
	frame->Stop();
	board->Stop();
	frame->Clear();
	board->Clear();

	return true;
}