попробую обьяснить свое понимание кода:
- функция void DispSig(int sig) как я понял обработчик прерываний (файл tankr.c). - если аргумент к функции DispSig(sig) - ябляется постоянная REC то это означает прием байта - при значении ir == 0 сохраняется время прихода байта - байт записывается в буфер request[] (из терминала то бишь RS232) пока ir не достигнет 8 . - при каждом примеме байта вычисляется время от начала приема (когда ir == 0, было сохранено в t0) t1=clock() - t0; если t1 превышает TIMEOUT (указан #define TIMEOUT 200 - означает цлоцк тицк рате 10 миллсекунд) то ir обнуляется , в итоге прием считается незавершенным и принятые до этого байти игнорируются .
Но я так понял что сюда по этому отрезку - длина сообшения в Modbus для этого примера , строго ограничивается 8 байтами , конечно это можно и изменить или эту часть выбросить.
--------------------
Зачем лаять на караван , когда на него можно плюнуть?
|