Если вы отправляете команды программе-оболочке, которая возвращает приглашение, скажите «$» после отправки команды, тогда вы, безусловно, можете подождать, пока не увидите «$», перед отправкой следующей команды. Это очень простой протокол, но он должен работать просто отлично.
Чтобы не беспокоиться о том, что "$" находится в отраженных данных с консоли, отключите эхо-сигнал на консоли или измените подсказку на что-то маловероятное, чтобы быть в отраженных данных.
Технически вы можете использовать консольный буфер ввода (typeahead), отправляя пакет команд с длиной, меньшей длины входного буфера (вы должны это проверить), например cmd1 [cr] cmd2 [cr] cmd3 [cr ], но не отправляйте больше, пока не вернетесь [cr] $ [cr] $ [cr] $. [Cr] может потребоваться [cr] [lf], а «$» может фактически быть «$» в зависимости от того, как работает консоль.
С включенным XONN / XOFF вы можете технически проверить, чтобы XOFF прекратил отправку, а затем возобновить, когда вы видите XONN, но я бы не рекомендовал это делать, если вы отправляете на консоль команд. Вам нужно убедиться, что буфер XONN / XOFF соответствует входному буферу консоли, и это действительно будет сложнее.