[an error occurred while processing this directive]
|
Есть драйвер порта, есть монитор событий. Драйвер принимает данные и записывает их в свой буфер. Монитор периодически проверяет флажок наличия данных в буфере, и при их поступлении посылает сообщение приложению, открывшему порт. Сообщение ставится в очередь, и обрабатывается в соответствии со своим приоритетом. Вот такой механизм. Соответственно событие может возникнуть когда в буфере появился только 1 байт, а у монитора пришло время в этот момент проверить флажок. Поэтому я всегда склеиваю принимаемую последовательность до нужной длины сам в своей программе. Соответственно и пакеты могу делать любой длины - в зависимости от их типа.