Иногда возникает необходимость мониторить устройства по последовательному порту, причем расположить рядом с устройством комп не всегда удобно, а иногда просто не возможно. И тут на выручку приходят различные Serial to Ethernet адаптеры, которые хороши всем, кроме цены. Давайте посмотрим, что можно сделать подешевле и попроще.
Hardware
У меня под рукой оказалась вот такая платка на контроллере ENC28J60.Контроллер на базе ENC28J60. Цена на ebay $6.50
В качестве МК будем использовать Ардуинку.Схема работы.Схема подключения.Готовое устройство.
Firmware
Полноценный TCP стек на таких комплектующих сделать невозможно. Но можно поймать пакет, развернуть его в обратную сторону, забить данными, отправить и разорвать соединение. Памяти на эту операцию в случае использования ATMEGA328 есть всего 2Kb, а надо выделить буфер под принимаемый пакет и расширить буфер для приема символов из последовательного порта. Таким образом, наладить полноценный обмен на полной скорости не получится, но для управления устройством и приема отладочной информации этого вполне достаточно.
Библиотеку под контроллер ENC28J60 и скрипт для ардуино можно найти на google code.
Software
Теоретически, можно написать полноценный драйвер для СОМ порта, но это задача не на один вечер, она требует аккуратности и тщательной отладки, гораздо проще сделать клиентское приложение, которое будет управлять удаленным последовательным портом.
У меня получилось вот такое:
1
Начать посылать запросы адаптеру
2
Прекратить посылать запросы адаптеру
3
Очистить протокол
4
Сохранить протокол
5
Включить автоматическую прокрутку к последнему сообщению
6
Автоматически сохранять протокол в файл
7
Счетчик пакетов
8
Отладочная информация
9
Скорость последовательного порта
10
Открыть удаленный последовательный порт
11
Закрыть удаленный последовательный порт
12
Послать команду Ардуино
13
Команда на отправку
14
Послать данные в удаленный последовательный порт
15
Текст протокола
Инсталляционный пакет и исходники клиентского приложения можно найти на google code.
Выводы
Устройство получилось недорогое, гибкое и расширяемое. Легко можно добавить, например, возможность RESETa управляемой платы по команде. К сожалению, из-за малого размера входного буфера, устройство не удастся использовать для работы при значительной загрузке порта. Отсутствие полноценной эмуляции СОМ порта не позволяет использовать стандартные терминальные программы, но специальное клиентское приложение обеспечивает минимально необходимый функционал. Таким образом, получившуюся схему вполне можно рекомендовать для организации обмена по последовательному порту через TCP сеть, если не требуется передачи больших объемов данных.Топики без Котэ выглядят незавершенными.