dmitryk1 писал(а)::) Только чем дальше, тем страннее вопросы.
Это нормально

dmitryk1 писал(а):Он спрашивает только что мне кидать в порт.
Я задумался:
он кидает байты подряд. Скорость съёма информации на порядок быстрее передачи по ком порту. Буфер, используемый для хранения в МК не бесконечен. То есть будет собираться порция, отправляться в комп и ждать нового сигнала, для получения и отправки новой порции.
Не знаю, что там за решаемая задача, но МК обычно вовсе незачем иметь какой-то буфер для накопления данных - он их премило может выдавать в СОМ-порт по мере их появления (т.е. измерил что-то - выдал, затем начал мерить следующее).
dmitryk1 писал(а):Я открываю ком для чтения, потом или кнопочкой или сначала пишу в ком, чтобы началась подготовка данных. Данные готовятся не мгновенно. поэтому я не знаю, что будет происходить в в этот период бездействия.
На МК будет 1 на ноге, а ком будет этим заполняться или нет?
Вопрос: оно вам надо?! В смысле, что там на ноге МК будет? Ваша прога на компе работает "на верхнем уровне", т.е. ей абсолютно безразлично, что там происходит на аппаратном.
dmitryk1 писал(а):Далее передача началась. Подряд 3 байта с датчиков, если эта единичка будет передаваться, то показания с датчиков перемешаются. по крайней мере я вычитал, что передача байта идёт в любом случае полностью. А вместо трёх байт с датчиков можно отправлять 4: первый- маркер.
Прекрасно! Только маркер должен быть таким, чтобы кардинально отличаться от передаваемых данных! Например, если в ожидаемом потоке данных байты должны быть заведомо меньше 200, то маркер может быть 243

. Или использовать двухбайтный маркер, или что-то еще - надо продумать все, как следует.
dmitryk1 писал(а):Далее, читаю я не асинхронно, т.е. софтина ждёт пока данные прийдёт, как она поймёт что уже всё приехало? Надо что-то с МК в порт записать, чтобы софтина от порта отцепилась и не по тайм ауту.
Вот такие вопросы и на них ответа не могу найти

Софтина ваша же ждет не просто так, а постоянно проверяя данные в буфере приема порта. Появились данные - она проверяет их на равенство маркеру. Если не маркер - ждет дальше, если маркер - начинается цикл приема известного кол-ва данных. Разумеется, в цикле она тоже будет ждать, но уже без анализа на маркер.
То есть вам надо продумать протокол обмена между программой в ПК и программой в МК. Определитесь кто чего кому должен передавать, по каким "командам" и т.п. - станет все понятнее. Например, разработайте собственный "язык" команд, ну, например: ПК может передать в МК следующие команды:
0хС0 - это значит, начать измерение с нулевого канала
0хС1 - начать измерение первого канала и т.д.
МК, получив команду от ПК, начинает ее исполнять и выдает ответ - результат измерения. Нет команды - МК ждет, ничего не делает. В этом случае вы всегда будете знать, что происходит, в каком состоянии находятся устройства и программы, чего ждать и сколько

.
Это только пример, у вас все может быть по-другому.