C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
RJ45, Георгию, Asher'у
olegenty
Отправлено: 21.08.2004, 11:47


Ветеран

Группа: Модератор
Сообщений: 2412



Имеет место следующее:
1. К компу типа i286 — i386 прикручен хер знает как сетевой разъем сетевухи (витой пары). Как — я в подробности не вдавался. ОС — DOS.
2. Есть ком с Win2000 и сетевухой, тоже для витой пары.
3. Надо как-то заставить их понимать друг-друга следующим образом:
3.1. с сетевухи на досёвую тачку приходит некий сигнал
3.2. на досёвой тачке рождается некое прерывание, результатом которого становится отданный файл...

есть рецепты?
Konstantine
Отправлено: 21.08.2004, 13:15


Мастер участка

Группа: Модератор
Сообщений: 545



хммм... нада досовские дровины для сетевухи изучать..... с винды-то отправить чё-либо несложно
olegenty
Отправлено: 21.08.2004, 15:11


Ветеран

Группа: Модератор
Сообщений: 2412



досовские дровины тут вряд ли помогут, я не уверен, что там вообще сетевуха, если честно. как мне объяснили, работать придётся так же, как с COM или LPT, просто реально там будет вот такой разъём.
заметь, DOS однопоточен... он "в фоне" ничего никогда сделать не сможет.
Konstantine
Отправлено: 21.08.2004, 15:25


Мастер участка

Группа: Модератор
Сообщений: 545



нада в первую очередь разобраться, с чем всё-таки имеем дело, а потом — если нету аппаратного прерывания, то можно повесить хотя-бы на таймер....
Георгий
Отправлено: 22.08.2004, 14:15


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



т.е. в комп воткнут кусор кабеля RJ45, а другой конец воткнут в хаб и всё это гордо называется ethernet. на машине с DOS как бы никакого сетевого ПО нет по постановке задачи. требуется сделать из дос машины что то вроде файл сервера.

если сетевая карта реальная, а не какая нибудь "облегчённая", то на ней должен быть NetBIOS который и позволит выполнять базовые действия — получить пакет, отправить пакет.

в DOSе можно реализовать работу нескольких программ — там это зовётся резидентными программами.

моё виденье решения:
1. разобраться с NetBIOS — чё умеет, чего не умеет; дос вызовы, MS Windows NT вызовы
2. разобраться с резидентами — сделать хотя бы для разминки драйвер мыши на com порт

и идея DOS программы:
вешаем резидент на прерывание NetBIOS; по приходу пакета берём из буфера сетевой карты пакет и смотрим: адрес наш/не наш; код запроса и т.п.
теперь ебёмся с повторно невходимыми ДОС функциями, что бы из обработчика прерывания, прочитать файл и передать его по сети.

а если с ethernet`ом хотят работать как с com портом, то, на мой взгляд, лучше купить нормальный RS485 адаптер, прикрутить на логический уровень modbus и отдыхать.
Guest
Отправлено: 22.08.2004, 14:43


Не зарегистрирован







Я думаю, это все-же com-порт, только чарез разъем RJ-45, как то раз видел такой шнур для мобилки. То есть надо найти грамотного дядьку с осцилографом, чтобы он потестил сей девайс, программно засылая в com1 или com2 пакеты и ловя на RJ-45 схожие сигналы...
olegenty
Отправлено: 23.08.2004, 06:41


Ветеран

Группа: Модератор
Сообщений: 2412



2 Георгий:
спасибо. я в курсе, что такое резидент, но писал последнего ну очень давно.

остановись поподробнее на RS485 и modbus... smile.gif
olegenty
Отправлено: 23.08.2004, 10:44


Ветеран

Группа: Модератор
Сообщений: 2412



разобрался, более или менее. сходил в центр управления ПТК (подвесной толкающий конвейер), посмотрел на устройства.
итого:
1. В шкафах стоят контроллеры на базе Z80, каждый из которых обсуживает N датчиков, порядка 24-х.
2. С каждого контроллера инфа снимается и поступает на некое устройство (ребята звут его "опция" — Opt 8 k), по-моему — мультиплексор (по логике) посредством RS485 Duplex (по 8 RS485 на каждый Opt 8 k)
3. Opt 8 k втыкается в плату C 168 PCI
4. В этот же комп воткнута сетевуха c разъёмом RJ45

Тачка работает под DOS в режиме эмуляции мультизадачности посредством самописного диспетчера на 20 задач, резидентно висящего на прерывании таймера. в данный момент диспетчер обслуживает 5 задач:
1. Вывод на экран
2. Обработка клавиатуры
3-5. Обработка прерываний платы C 168 PCI

Требуется:
1. На стороне машины DOS
1.1. Поставить дрова сетевухи и договориться с разработчиком, как он будет обрабатывать прерывание сетевухи

2. На стороне внешней машины — послать запрос именно на тачку DOS и получить оттуда некий файл, в формате, который заранее оговорён.



Георгий, будь добр, внеси побольше ясности, как я мог бы это сделать. От меня теребуется послать запрос и получить данные. Наличие дров на DOS машине можно считать за данность...
Георгий
Отправлено: 23.08.2004, 21:02


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



а чё там с TCP/IP или UDP?
если есть, то:
1. придумываем протокол — например: по TCP/IP запрос (от винды к досу) содержит № файла для чтения, а отклик (от доса к винде) уже содержит файл (если файл больше 1500 байт (стандартный mtu), то разбивку/склейку пакетов выполнит стек протоколов TCP/IP)
2. дос: пишем простенькую прогу, вешающуюся на прерывание дров по приходу пакета и использующую прерывания и функции дров для работы с TCP/IP; функции DOS (21h прерывание) для чтения файлов (будь осторожнее с нереентерабельностью ДОСа)
3. винда: с ней всё ещё проще — юзаем win sock и вытесняющюю многозадачность

вопросы, на мой взгляд, требующие уточнения:
1. как общаться с дровами под ДОС и удастся ли работать именно на уровне прикладной задачи в стеке TCP/IP
2. обход неповторной входимости DOS — возможно разработчик диспетчера уже решил эту проблему и можно воспользоваться его решением.
3. что за привязка именно к получению файла? быть может нужно данные с датчиков прочесть? тогда проще читать эти данные прямо из ОЗУ — ведь в ДОС нет никакой защиты памяти и можно напрямую обращаться к сегменту памяти диспетчера. в этом случае проблема с нереентерабельностью ДОС функций отпадает сама собой.

если TCP/IP нету, то берём описание TCP/IP, UDP и снифер, и пишем под DOS, дополняя пробелы документации, снифером, узкоспециализированную прогу формирующую UDP пакеты (он всётаки гораздо проще чем TCP с его гарантированной доставкой) умеющий только разбирать запрос и отвечать на него файлом.

ЗЫ. на мой взгляд это всё попахивает изобретением велосипеда — TCP/IP скорее всего не удастся поднять — все специалисты по DOS уже или спились, или уехали за границу.
маишина с DOS`ом от винды далеко стоит? может удастся кинуть RS232 или 485 и работать через него?
PPS. даже и не думал, что машины с 186 процом ещё работают — умели ведь делать железо!

Отредактировано Георгий — 23/08/2004, 22:05

Вернуться в Вопросы программирования в C++Builder