Unless I’m doing something wrong here - when I use multiple serial.onDataReceived only the last one actually works. The serial.readString() I was using clearly shows that both the # and $ sign get sent over serial and get properly received, but only the LAST serial.onDataReceived with a . actually works.
I wanted to control a computer by sending and receiving serial commands from the micro:bit to and from the computer. I ended up working around the issue by just ending everything with a dot, still pretty annoying since it’s a bit of a rigid system
I think one separator is probably a good idea. If it was possible to have 3 independent event handlers, it could get tricky to ensure they read their bit from the serial buffer - e.g. by calling them in the right order.
Similarly, when writing to serial from multiple loops/handlers, only one can write at a time. If a call has to wait for the serial to send, other loop/handlers will run, and serial writes from them will just return, and the output will be lost. I think micro:bit V1 always waits for the output to send, and V2 waits when the send buffer is full.