Mmmm...so maybe, in the other project, it worked because I called timers into the asio::serial_port::async_read_some callback that should be inside the io_service thread! Isn't it?
asio::deadline_timer is not thread-safe, so you're not allowed to access it from multiple threads. Since it's being processed by the io_service from within its thread, you have to post any timer method to the io_service (as far as I understand).
Yes, the setTimer is called, but the timer callback not!
You call expires_from_now and async_wait from setTimer(), and the handler is not called? Well, that's weird. Ensure you pass reasonable time duration. Try to use the overload that returns an error: boost::system::error_code er; expires_from_now(seconds(1), er); What does it return in "er"?