Цитата Сообщение от Yegor Посмотреть сообщение
Ну да, асинхронные без обратной связи. Или синхронные с буферизацией. Момент отправки по проводам как бы не должен волновать пользователя SysComWrite ))

Я обычно таких правил придерживаюсь:
1) Больше одного раза за цикл для одного порта SysComRead или SysComWrite не вызывать (разве что для опустошения буфера).
2) SysComRead вызывать скользящим способом: iCount := iCount + SysComRead(hPort, pBuf + iCount, iExpected - iCount).
Правильно функции асинхронные , да и сам обмен асинхронный .
SysComRead читает за раз (вызов в цикле программы) содержимое буфера приема , буфер в микросхеме - 4кБ (вроде как , но не суть) , но в течении одного цикла при обмене (приеме пакетов от прибора) залезет около 4х байт . Поэтому принятые байты надо "склеивать" (складывать) до получения полного пакета . Напр ответ от прибора должен быть 16 байт - результат получится примерно за 4 цикла . Можно конечно читать с задержкой и вытаскивать сразу все из буфера , но тогда не будет гарантии отсутствия "лишних" байт .
Поэтому буфер приема надо постоянно подчищать .
Все с опытом приходит , т.к "детальное"-подробное описание работы (принципа правильной работы) этих функций отсутствует .