The same goes for size. Text based protocols allow to skip fields which don't change and only use enough characters to convey the value. In a binary protocol the field sizes are fixed so there is a lot redundant data in there. All in all there is very little difference in the amount of data to be transmitted.
Sure. Being able to skip fields means stateful communication, desynchronization of the data being shared, and implicit "last values" that A) you don't even know if they have been shared (e.g., system boot), B) what are the last values; unless specially queried.
This is all more work, and higher risk for hard to find bugs.
Often it does not matter, of course. Neither the extra overhead of transmitting every value every time, though.
The latest binary protocol I designed simply updates the whole state of the subsystem every time, even when it's a bit wasteful, maybe just one field actually changed. That leaves a record in the database though what the instantaneous values
were - even if they were the same. Simplicity is valuable, as you say.
The other direction,
commands, are prefixed with a transaction ID, and the reply indicates a copy of this ID, and success code, so that whoever did the command can check if the response was generated
after the command was processed, and that no other commands intervened.
To you, I'm sure, these kind of details do not matter. You type the commands in Hyperterminal, and get a reply. If it does not work, you retry. Works with humans; you are subconsciously the parser, error checker and recovery system. With a machine and asynchronous link like UART, if tx is being buffered, you may be processing old input data as a reply to your command. Your protocol is text-based, and hence automagically Good, Easy and Bug-free.
My experience on project-specific tooling is that it almost always saves time and money in the longer run. Using one-size-fits-all generic tools is inefficient
every time you use them. If you only need to do that randomly - not a problem. But for something you do 1000 times, spending 20 hours on a tool which saves 5 minutes every time, has saved you 63 hours. Of course, avoid the other extreme, NIH syndrome.
In recent years, I have needed mostly CSV inputs and outputs formatted in a very specific ways, for testing, simulation and debug. Surprisingly quick to write in C, both ways, given that you have the binary data and struct definitions in header files!