SeaDog писал(а):Есть некая однопроводная двунаправленная шина, TTL-уровни, открытый коллектор, подтянута до питания резюком 10к.
по ней два девайса обмениваются данными. протокол - RS232, скорость обмена от 9600 до 115к.
идеология обмена такая, хост-девайс отправляет комманду, (примерно 10 байт), второй девайс отвечает (до 2кб), формат сообщений неизвестен.
Задача - аппататно определить направление передачи данных, т.е. разбить на два потока - "от хоста" и "к хосту" и сохранить весь обмен так, что-бы можно было видеть КТО из девайсов передает данные.
Поразмыслил немного над Вашим техзаданием, достаточно серьезно задумано. Если разложить по порядку, то имеем:
1. формат неизвестен, поэтому параллельно подключившись, направление не угадаешь, остается врезаться в линию, т.е. пропустить канал через себя, тогда
2. делаем на МК и проблема направления решается легко и красиво, а данные просто транслируем через себя
3. "скорость обмена от 9600 до 115к", серьезная заявка на увеличение сложности девайса, если она реально гуляет в таких пределах, то необходимо делать автоопределение скорости обмена (при этом не факт, что удастся сохранить 1-й байт) или делать прошивку под каждую конкретную скорость обмена, если она все-таки постоянна
4. определили откуда, определили скорость, читаем инфу и думаем, что с ней делать. Если хранить, необходимо внешнее ОЗУ неплохого объема, а если хост-не хост часто обмениваются, то никакого ОЗУ не хватит, надо что-то типа ММС карточки. Если сразу же отправлять на центральный комп, тогда скорость передачи необходимо раза в 2 больше приема (чтобы не утонуть в данных) и 2 независимых RS232 на борту.
Вот такое мое видение проблемы.