Uart flow control between two microcontrollers?

Just looking for some advice on the best way to do this. I have an arduino uno connected to another microcontroller. I have it set up so that there are fixed sized messages being sent between the two. A user should be able to request a message from the other microcontroller at any time. I want to also send a battery reading between the two microcontrollers without interfering with the message sent between the two microcontrollers. eg if the battery message is sent at the same time as the message is being sent, this may block the message from sending.

So ideally i would like to send battery values from one microcontroller to the other at a fixed time (eg every 30seconds) If a user at an arbitrary time chooses to request a message from the other microcontroller while the other microcontroller is simultaneously sending the battery value how do i avoid this. I could try something like an interrupt but I don't really know how to do this. eg an interrupt to trigger the serial read which is already happening anyway.

Thank you,

At the receiving end (the side that receives the battery value), do not request till the complete battery value is received; the user that presses the button does not care that the request only goes out 5 milliseconds (or so) later.

At the sending end, wait till sending of battery value is complete before honouring a possible request.