Problems on serial.read()

And use what?

Isn't that obvious? What are you storing in the String? Hint: It's not doubles, floats, longs, booleans, bytes, or instances of classes.

And the reason to not use it.

Because it has a destructor. Now, normally having a destructor is a good thing. But, the destructor calls free() to return the memory that it has allocated, and free() has a bug that causes the destruction of memory.

String Service::converteBeaconParaString(Beacon beacon) {
	char buf[10];
	sprintf(buf, "%d#%d#%d#", beacon.getDhost(), beacon.getShost(), beacon.getSALTO());
	return buf;
}

buf is NOT a String.

buf is a local variable that is going out of scope as soon as the function ends. Returning buf by any means is a bad idea.