Цитата(Sir Jon @ Apr 5 2006, 21:15)

В том и интерес, что адаптер заранее не знает, что и как Вы собираетесь передавать. Можно лишь наложить некие ограничения на формат передаваемых данных.
Угу. Вот уже началось. Ограничения.

Цитата(Sir Jon @ Apr 5 2006, 21:15)

Сопоставляя цену адаптера (50$) и базу используемых компонентов - потихоньку начинаю склояться к мысли, что задача решена все таки аналогово и возможно очень просто.
Ну еще вариант. Складывайте в ОЗУ битовую последовательность с временами интервалов между переходами 1->0 и 0->1. Затем анализируйте минимальный интервал времени в этой последовательности и делайте вывод о скорости передачи. Глубину выборки не подскажу. Это опять же зависит от формата используемого протокола и диапазона поддерживаемых конвертором скоростей передачи.
Кстати, напомню еще об одном нюансе RS485. Для качественной связи посредством RS485 нужно не только определенное время удерживать драйвер RS485 в состоянии передачи, но еще и задерживать битовую последовательность в самом начале после переключения драйвера с приема на передачу. Потому что переключение драйвера может привести к переходному процессу в линии, который воспримется приемником как ошибочно принятый символ или первый символ будет принят неверно. Частично эта проблема решается введением "растяжки" линии (к линии A pull-up резистор, а к линии B pull-down), но это не панацея. Введение задержки на передачу битового потока это более корректное решение. Тут опять же вопрос возникает, а на сколько задерживать битовый поток? Очевидно, что для того же RTU-ного протокола не менее 3,5 символа. Для посимвольной передачи, достаточно 1,2-1,5 символа. А когда протокол заранее не известен?
Итого имеем, что автомат конвертора RS233-RS485 должен выполнять как минимум три функции.
1. задерживать битовый поток при передаче от RS232 в линию RS485
2. удерживать линию RS485 в состоянии передачи после окончания битового потока на его выходе
3. определять скорость передачи и/или частоту битового потока (для реализации первых двух функций)
P.S. еще забыл функцию блокирования локального "эха"