Осциллографа нет к сожалению. Проверка только программно. Но это похоже на правду. Добавление узлов увеличивает время отклика отдельного узла сети.
Сама программа пока тестер. На форме висит 4 TEdit, пара кнопок. Потоки чтения и записи из порта отдельные, синхронизированы мьютексом. Используется маска для WatComEvent по приходу байта. То есть цикл чтения из порта независим от основного потока программы. В основной цикл могу вставить Sleep(100000). На чтении из COM порта это никак не сказывается, хотя форма замерзает и не реагирует ни на что. Чтение из приемного буфера происходит очень быстро. Мне даже приходится вводить задержку на чтение, иначе буфер выбирается быстрее, чем заканчивается посылка от контроллера и часть пакета оказывается не прочтенной. Но эта задержка ни на что не влияет. Я пробовал убирать ее совсем и указывать ReadFile(COMport, bufrd,btr, &temp, &overlappedrd) вместо btr конкретную число ожидаемых байт. Да, функция считывает все байты, но задержка ответа от контроллера меньше не становится. Сейчас btr определяется из comstat.cbInQue. Но чтобы cbInQue был верным, приходится вводить перед функцией ReadFile, Sleep(20). Иначе идут обрывы. Все дело в том, что событие EV_RXCHAR это приход первого байта. И вызов функции ClearCommError для получения числа принятых байт, сразу после события прихода первого байта некорректна, так как посылка еще полностью не принята. Поэтому и приходится вводить Sleep(20).





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