When should one switch from ASCII to advanced serial protocols?
ASCII and CRC are not mutually exclusive.  ASCII is an encoding, and CRC is for error checking.

ANYTHING can be sent as ASCII.  Us oldsters certainly remember UUEncoding, which turns anything into an ASCII string.

A) For me, it's usually a question of speed and efficiency.  Sending a large 32-bit number by ASCII can take a long time, but it only takes 4 bytes to send it as binary via a serial protocol.
B) Sending NUMBERS via ASCII means that you have to convert the number to ASCII, which is a clear extra step (this is part of what &quot;printf&quot; does).

If you somehow lose your place, screw up, lose the format, get the wrong endian, etc., a binary communication protocol can certainly screw up.  If you're sending ASCII, it can be easier to recover from screwups by just going in and LOOKING at the data stream.