>Если по существу твоего вопроса, то отследить значение бита четности или его >наличие на _ПК_ нельзя, даже зная заранее скорость взаимодействия с устройством. >Объясняю почему. Com-порт на ПК перед началом взаимодействия с внешним устройством >устанавливается в определенный режим работы: скорость, контроль четности, количество бит в >байте, количество стоп-битов и т.п. Com-порт не предназначен, точнее в него >не закладывали такой функционал, чтобы на лету можно было менять режим >работы в рамках взаимодействия с одним устройством. Но устройства такие есть, сталкивался с одной АТС, дык смена настроек фрейма там в качестве защиты от подключения левого софта стояла. Т.е. официальный софт именно так и работал - менял фрейм на ходу. Ну мы тоже не лыком шиты.> Автоопределение там тем более не заложено. Да. > Более того, пожет получиться такая ситуация: >1)ты установил ком-порт в нужный режим работы >2)получил первый байт от устройства >3)начинаешь переключать ком-порт в другой режим работы >4)пока ты переключал ком-порт, устройство тебе уже успело передать несколько байт, которые >ты успешно профукал (пропустил) >т.е. время переключения режима ком-порта может быть достаточно большим, чтобы пропустить переданные >данные во время самого переключения, особенно это справедливо на больших скоростях >передачи данных. Например, перед переключением режима ком-порта процессор может отвлечься на >выполнение другой задачи, на этом ты потеряешь драгоценные миллисекунды. Че та не помню чтобы он так отвлекался чтобы не успеть за 4 ком портами. Наверно у мну юникс такой был загадочный. Кстати, в линухе после того юникса был сильно удивлен когда на 115200 пропадать байтики стали при простой передачи в два порта, оказывается надо было hdparm'ить жесткие диски (ну это было с ядром 2.2). dma не всегда по установке линуха включался.
|