RS232 <-> TCP/IP
Требуется от него получать данные множеству клиентов (не суть в количестве, можно и через БД). Вопрос - реально это сделать на C# - понятно что я "начинающий" на C#. Если есть прицеденты - хотябы идея какая? Как оптимально можно организовать это на C# (тут свои примудрости, как я понял). Желательно RS232 - TCP/IP - наверняка есть такие реализации - может кто ссылку даст?
Зарание спасибо.;)
Пока ответ получил - немножко продвинулся, MSDN и т.д. - "кто ищет, тот иногда находит". Это пилотная реализация в среде .Net. Как работает - нравится, только промышленные проекты (исключая WEB) я пока не встречал на C#. Надо что бы работало в режиме "24х7". И не скромный вопрос - "парсиш" - это что? Да простят меня все, я вот не знаю - может маршрутизатор, что у меня работает под Linux - это что-то похожее? там просто я делаю опрос устройств на порту "A", потом на другом порту "B" клиентам раздаю ответы, или транзитом пересылаю кадры... если это команды.
Спасибо за ответ.
Прикладной уровень->Уровень связи хоста->Уровень Интернета->Уровень доступа к сети->Физический уровень. При работе с RS-232 тебе не надо только Физический уровень реализовывать. А вот с остальми - придётся, т.к. у тебя нет проверок на ошибки и т.д.. Если ты хочешь чтобы твой компьютер работал как маршуритзатор (что требует поддержки 3-х нижних уровней OSI, или для TCP/IP - тоже трёх уровней), задача немного облегчается (если как коммутатор, то только 2-х уровней OSI или для TCP/IP - уровень доступа к сети).
Да навалом....
Так как это пробный вариант на C# - следовательно, и задача не сложная: Минимум входных параметров с устройства (4) - устройство активно - т.е. само ч/з 0.25 сек посылает данные (ну, при тупом опросе). На первом этапе, я хочу просто брать данные в буфер, а клиенты работают в других потоках, и формат фрэйма типа HART. С упращением конечно. Клиент просто конектится на порт "Х" и забирает данные из буфера (т.е. читатель). Реализация контроля данных и транспортных ощибок - стандартная. А вот на втором этапе - сервер пишет в базу (период) а клиенты просто смотрят в неё и всё (этот вариант даже проще, наверно).
Вопрос: Кроме стандартного компонента ComPort в C# как то иначе (типа CreateFile...) можно работать. Что-то в моём MSDN примеры просто отсутсутвую на этот счет.
Спасибо.
В самом FW2.0 есть компонента - называется SerialPort, назначение аналогично.
Я вот только не понял вашей заморочки по поводу TCP/IP.
Задача стандартна. Данные от устройства заворачиваем в Stream, создаём поверх этого стрима свой собственный, который занимается проверкой/конвертированием и т.п. нужными делами, поверх этого стрима кладём класс который позволит подключать слушателей (read-only стримы), для которых будут ретарнслироваться данные от устройства.
А уж кто, там будут эти слушатели - нам без разницы, потому как они есть Stream: FileStream, NetworkStream, etc.
Вот - вот, зачем свой стек протоколов писать - то?
Да нет, действительно всё просто. Как говорите - так и в общем-то и делается. А "усложнение" - на будущее, приборов-то много (не один). Пример так и не нащел, видать не судьба... Буду искать в инете. Парюсь на C#, а пока, устройство отлаживую (в смысле пытаюсь с ним договорится, при отсутсвии описания протокола) на С - как то проще, пока.. проще, наверно. Спасибо за участие, а организация той же сети в C# - действительно просто, да и удобно. Пока дайдеш до этой простоты...:)
Спасибо всем!:)