Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Софт
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2008, 13:23   #1
Господин ПэЖэ
Пользователь
 
Регистрация: 24.07.2008
Сообщений: 10
По умолчанию Хелп! ДОСовская софтина не видит порты.

Раздел называется "Помощь студентам". Я уже очень и даже очень "не стдудент" (в смысле дАААвно это было), но решусь-таки попросить помощи. Не судите строго.
Проблема в слеюдующем:
Есть старинная досовская программулина для работы со станком ЧПУ. Делалась в Паскале 7.0, Турбовижин, году эдак в 98-м. Проблем не было вплоть до юзания 98-й винды. Запускали из-под W98, как ДОС-приложение и всё было хорошо.
Горе послигло нас после замены компа на новый. Из-под ХР софтина запускается, всё делает, кроме главного - не может связаться со станком. Вскрытие показало, что ХР обрубает ДОС-приложениям весь доступ к портам.
Подскажите пожалуйста какой-нибудь выход из положения.

Мне по простоте душевной решение видится примерно таким:
1. В программе находим процедуру, кидающую байты в линию. (Исходники не сохранились, но с помощью ИдаПро мне удалось раскопать этоместо).
2. Заменяем её код на софтовое прерывание.
3. На вышеупомянутое прерывание сажаем резидентом свою процедуру, работающую со станком. (Это тоже получилось, но только в ДОСе)

Теперь, если я что-нибудь могу тут понимать дело за тем, чтобы сделать аналогичную процедурку под ХР. Если в принципе есть возможность работать с портами под ХР и реализовать обмен между ДОС-приложением и ИскПи-шным драйвером.

На совести этого драйвера, в общем-то совершенно примитивная задача - он получает байт от основной проги, затем проверяет сотояние линии (всё работает на одной верёвке по самопальному протоколу), если на линии лог 0 - станок занят, ждать готовности. Дождавшисть лог. 1-цы (готовности станка) выдать байт в линию. Можно задействовать порт ЛПТ. Далее уже справимся сами. Выпилим соответствующее железо.

Вот такая наша беда. Если кто сможет помочь - будем душевно благодарны.

Последний раз редактировалось Господин ПэЖэ; 25.07.2008 в 13:27.
Господин ПэЖэ вне форума Ответить с цитированием
Старый 25.07.2008, 14:36   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ребята, а почему не пойти по пути наименьшего сопротивления - взять железо попроще (какой-нибудь пень можно за копейки взять!), да и поставить туда Win98... и будет выделенный сервер управления станком ЧПУ
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.07.2008, 15:08   #3
Господин ПэЖэ
Пользователь
 
Регистрация: 24.07.2008
Сообщений: 10
По умолчанию Спасибо за идею!

Стоило писать в форум, чтобы получить такой ценный совет!
Другими словами - "не парьте мозги людям, юзайте то, что юзали и умерьте свои запросы".
Я просил помощи на форуме программистов, а такие рекомендации скорее на уровне заведующего хозяйством.
Брать "за копейки какой-нибудь пень", как Вы предлагаете - нет нужды. На предприятии этого хлама в избытке. Списываем их валом.
Подразделению выделен приличный компьютер. На нём стоит 1С, стоит Acad, SolidWorks. Нам что же, пойти к начальству и попросить забрать его и вернуть наше старьё?! Уж не знаю, поверите ли - но НЕ ХОЧЕТСЯ!
Если вышеизложенная задача невыполнима, или потребует неадекватных затрат времени и сил - так и скажите, я готов снять вопрос с повестки. Надеюсь всё-таки, что кто-нибудь предложит приемлемое и не слишком сложное решение. Но и не такое "простое", какое предложили Вы.

ЗЫ: Талантливый математик не будет спрашивать "зачем такая задача?" Даже самая нелепая задача для него - как орех для обезьяны. Он её обязательно попытается разгрызть. Предложит несколько решений, а потом может быть полюбопытствует - "а на хрена Вам это надо?!"

Последний раз редактировалось Господин ПэЖэ; 25.07.2008 в 16:56.
Господин ПэЖэ вне форума Ответить с цитированием
Старый 25.07.2008, 20:57   #4
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Господин ПэЖэ, пишеш драйвер и кидаеш байты в контекст, соответственно принимашь...

зы если неохото с драйверами возиться, то можно найти какойнибуть сниффер com портов или прочего(на чем у вас там станок висит), и через них поробовать пулять эти байты, некоторые поддерживают такие фичи

Последний раз редактировалось Ring0Sn; 25.07.2008 в 21:09.
Ring0Sn вне форума Ответить с цитированием
Старый 25.07.2008, 21:49   #5
bag
Пользователь
 
Регистрация: 20.06.2008
Сообщений: 95
По умолчанию

Господин ПэЖэ, попробую предложить свой извратный способ.
1) Пишешь процедурку (как хотел) для доса, которая в реальном времени сохраняет подготовленные для отправки в станок байты в файл (например, текстовый).
2) Пишешь программку на Delphi или Visual C++, которая будет постоянно считывать этот файл и через функции WinAPI кидать байты в порт.
Все. И никакие драйверы не нужны
Не забывайте оставлять отзывы (кнопочка в левом нижнем углу сообщения)
bag вне форума Ответить с цитированием
Старый 25.07.2008, 22:12   #6
Господин ПэЖэ
Пользователь
 
Регистрация: 24.07.2008
Сообщений: 10
По умолчанию

Была и такая мысель - работать через файл. Беда в том, что никогда ничего не писал под виндами. Думаю, если сейчас начинать изучать Дельфи, или С++, то это далеко меня заведёт. Сам я никакой не программер. Совершенно ничего не смыслю ни в DDL, ни в WINAPI и во всяких там классах и объектах. Вот если бы кто-нибудь взялся сделать такую программку, я был бы очень благодарен.
По моему разумению эта программка должна проверять, не изменился ли этот файл. И как только он изменился - кидать его в порт ЛПТ. Проверяя ниличие готовности станка перед отправкой очередного байта. На дельфи я только делал примерчики из хелпа. Они совсем примитивные - вввод/вывод из окошек, часики, звуки и т.д. А как в дельфи работать с железом - это для меня тайна покрытая мраком.
Господин ПэЖэ вне форума Ответить с цитированием
Старый 25.07.2008, 22:43   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Боже, какой всплекс эмоций...
Господин ПэЖэ, извините, если обидел. и в мыслях не было! я просто высказал свое мнение.

Я же предлагаю Вам не заменить Ваш новый компьютер с Автокадом и 1C на "старьё", я предлагаю поставить ещё один компьютер ДОПОЛНИТЕЛЬНО! тем более, что этот хлам у Вас уже есть. И этот комп можно поставить вообще без монитора/клавы/мышки...
Я давно уже убедился, что если задачу можно решить просто, то совсем не нужно пытаться выстрелить левой ногой себе в правое ухо... ;-)
и часто "железное" решение может оказать банально проще и дешевле, чем нанимать программеров для написания новой программы.
Впрочем, хозяин - барин.
я уверен, что 100% задача может быть решена и на базе XP - вопрос только какой ценой...
может попробуете, кинуть клич во фриланс, может быть кто-то за NNN-е число вечнозелёных президентов и напишет Вам нужный драйвер.

Кстати, на форуме есть господин B_N - он реально крутой профи. И у меня сложилось впечатление, что он способен решить или подсказать пути решения Вашей проблемы...

Искренне желаю удачи.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.07.2008, 01:59   #8
Ring0Sn
Форумчанин
 
Аватар для Ring0Sn
 
Регистрация: 06.09.2007
Сообщений: 239
По умолчанию

Вот тут есть компонент для работы с LPT портом (позаоляет писать/принимать данные) http://www.qsl.net/ut5ufs/vslptport.html, но он платный $5
зы думаю если напрячься то можно и бесплатно накопать такого добра )
Ring0Sn вне форума Ответить с цитированием
Старый 26.07.2008, 10:35   #9
Господин ПэЖэ
Пользователь
 
Регистрация: 24.07.2008
Сообщений: 10
По умолчанию

Serge_Bliznykov, нет!!! - никаких обид!!! Честное ламерское слово!!! Это просто моя манера выражать свои мысли. Тут все эмоции исключительно только положительные!!! Не всегда удаётся учесть, что написанное слово воспринимается иначе, чем сказанное. Если бы между нами этот диалог состоялся в устной форме - уверяю Вас, мы бы вместе с Вами поржали и остались бы друг другом чрезвычайно довольны!!!

Но-таки, Ваш вариант, извините, не подходит. Уже хотя-бы по одной тривиальной причине - рабочее место это конура типа "шкаф-купе". Чтобы поставить второй стул приходится открывать дверь.
Ещё одно обстоятельство - пресловутая ДОС-программа это довольно удачная турбосреда с графическим интерфейсом. Тут всё в одном флаконе - создание чертежа детали, редактирование, мультиплицирование, архивирование документации + интерактивная работа со станком. Есть режим трассировки. Можно остановить станок, поменять инструмент, или выполнить несколько операций в пошаговом режиме, отредактировать следующий шаг, выполнить его и запустить дальше. То есть, можно "не отходя от кассы" выполнить всё проектирование, вплоть до получения готового изделия прямо в дрожащие от нетерпения руки. Это настоящий кайф для настоящего проектировщика. А с получением новго компа мы, по правде сказать, ещё и надеялись, что всё это будет работать гораздо быстрее. Я имею в виду - графику и редактирование.
Думаю, что вряд ли кто-то из нынешних программеров способен воспроизвести такое произведение искусства под виндой. Они все, по большей части, писатели. Им надо скорее начать топтать клаву. Думать и понимать, чего от них хотят им всегда некогда. А заказчик это, несомненно, ламер и слушать его им неинтересно. Кроме того, у них на руках всегда куча заказов и поэтому "пальцы бегут впереди головы". Вообще, в нынешнее время так мало людей, которые любят слушать и думать.

Ой! Что-то я тут увлёкся философией. Дико извиняюсь за офтоп.

ЗЫ: За завхоза, пожалуйста, не обижайтесь. Завхозов я уважаю. Сам таким был во время службы в Вооружённых Силах.

Последний раз редактировалось Господин ПэЖэ; 26.07.2008 в 10:43.
Господин ПэЖэ вне форума Ответить с цитированием
Старый 26.07.2008, 11:31   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Господин ПэЖэ, Вашу позицию понял. К огромному моему сожалению развитие техники и ОС оставляет старые программы за бортом. Вот, приходится поддерживать программу на FPD 2.6 (FoxPro for MS DOS)
Так с каждым новым процессором/системным блоком она работает всё хуже и нестабильней. А на первых двухядерхных процессорах вообще приходилось отключать второе ядро в биосе. Иначе всё висло через несколько секунд работы... Правда, эта проблема вроде как решилась с выходом SP2 для WinXP...
Дальше - думаю что наши динозавры могут вообще не запуститься под Vista...

Теперь по существу. я чётко понимаю, что именно Вам нужно. Существуют компоненты, которые позволят программе (например, на том же Дельфи) достучаться до физического порта.
Вот, например, поищите слово порт в этой статье - RU_DELPHI_CHAINIK FAQ - faqs_org_ru и почитайте ответ на вопрос "Как прочитать порт или записать в него."
К сожалению, у меня лично нет опыта написания подобной программы. Более того, предлагаемое Вами решение (1-2-3 из первого поста + программа на Дельфи) - это ещё та связочка получается... Это ж всё ещё надо отладить/наладить.... брррр-р-р-р. Жуть. ;-(

Тем не менее - пробуйте. :-) Всё у Вас будет хорошо! (ну, или не будет... ;-)
Искренне желаю удачи.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
порты на Assemblere Dimon Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 13.04.2010 17:36
Вывод данных в порты LPT и COM Захар Компьютерное железо 6 05.04.2010 12:29
порты Elm0 Свободное общение 2 02.06.2007 15:56
нужна графическая софтина trond Фриланс 2 24.11.2006 04:27
Порты у Windows Alar Работа с сетью в Delphi 0 30.10.2006 13:37