Правильно функции асинхронные , да и сам обмен асинхронный .
SysComRead читает за раз (вызов в цикле программы) содержимое буфера приема , буфер в микросхеме - 4кБ (вроде как , но не суть) , но в течении одного цикла при обмене (приеме пакетов от прибора) залезет около 4х байт . Поэтому принятые байты надо "склеивать" (складывать) до получения полного пакета . Напр ответ от прибора должен быть 16 байт - результат получится примерно за 4 цикла . Можно конечно читать с задержкой и вытаскивать сразу все из буфера , но тогда не будет гарантии отсутствия "лишних" байт .
Поэтому буфер приема надо постоянно подчищать .
Все с опытом приходит , т.к "детальное"-подробное описание работы (принципа правильной работы) этих функций отсутствует .





Ответить с цитированием