Штабскапитан Овечкин Posted July 24, 2008 Report Share Posted July 24, 2008 Проблема в слеюдующем: Есть старинная досовская программулина (делалась в Паскале 7.0, Турбовижин) для работы со станком ЧПУ. Проблем не было вплоть до юзания 98-й винды. Запускали из-под W98, как ДОС-приложение. Горе послигло нас после замены компа на новый. Из-под ХР софтина запускается, всё делает, кроме главного - не может связаться со станком. Вскрытие показало, что ХР обрубает ДОС-приложениям весь доступ к портам. Подскажите пожалуйста какой-нибудь выход из положения. Мне по простоте душевной решение видится примерно таким: 1. В программе находим процедуру, кидающие байты в линию. (Исходники не сохранились, но с помощью ИдаПро мне удалось раскопать этоместо). 2. Заменяем её код на софтовое прерывание. 3. На вышеупомянутое прерывание сажаем резидентом свою процедуру, работающую со станком. (Это тоже получилось, но только в ДОСе) Теперь, если я что-нибудь могу тут понимать дело за тем, чтобы сделать аналогичную процедурку под ХР. Если в принципе есть возможность работать с портами под ХР. На совести этой процедуры, в общем-то совершенно примитивная задача - она получает байт от основной проги, затем проверяет сотояние линии (всё работате по одной верёвке по самопальному протоколу), если лог 0, то ждать готовности станка, дождавшисть лог. 1-цы выдать байт в како-либо порт. Можно в КОМ, можно в ЛПТ. Далее уже справимся сами. Выпилим соответствующее железо. Вот такая наша бяда. Если кто сможет помочь - будем душевно благодарны. :g: Link to comment Share on other sites More sharing options...
Maikll Posted July 24, 2008 Report Share Posted July 24, 2008 А что если несколько упростить задачу, воспользовавшись виртуальными машинами , там можно эмулировать любую подходящую для вашей программы среду. Link to comment Share on other sites More sharing options...
Фдуч Posted July 25, 2008 Report Share Posted July 25, 2008 Когда-то давно, лет 5 назад, сталкивался с такой проблемой. Сейчас точно не помню, но по-моему пришлось писать (или переделывать чей-то?) так называемый виртуальный драйвер DOS (VDD), а так же драйвер устройства (SYS), который устанавливался как служба. Сейчас времени нет разбираться. Но если хочешь могу сбросить исходники (где-то должны быть). Вдруг поможет. Пиши в приват мыло. Link to comment Share on other sites More sharing options...
Штабскапитан Овечкин Posted July 25, 2008 Author Report Share Posted July 25, 2008 Благодарю за ответы. На счёт виртуальной машины - может быть я ошибаюсь, но мне не кажется это простым решением. Хотя спорить, конечно не берусь - никогда не юзал и плохо себе это представляю. А вот на счёт примера подобного драйвера - это, пожалуй в тему. Но по правде говоря, я больше надеялся на помощь типа "сделайте мне такую штуку". Сам я программер совершенно никакой. Весь мой опыт, главным образом, состоит в ковырянии чужих исходников и маленких самостоятельных программок на Паскале. Под виндами вообще никогда ничего не писал. Только на Дельфи делал примерчики из хелпа и слегка их модифицировал под собственные нужды. Так что, если кто-нибудь возьмётся написать вышеупомянутый драйвер, буду очень благодарен. Link to comment Share on other sites More sharing options...
MaDW Posted July 28, 2008 Report Share Posted July 28, 2008 А кто мешает поставить DOSBox и работать с полноценным досом? Link to comment Share on other sites More sharing options...
Штабскапитан Овечкин Posted July 28, 2008 Author Report Share Posted July 28, 2008 А кто мешает поставить DOSBox и работать с полноценным досом?А кто сказал, что это полноценный ДОС?! Такой же кастрат, как и в обычном ДОС-окне ХР-хи. Никакого доступа к портам нету. Link to comment Share on other sites More sharing options...
студент_86 Posted July 30, 2008 Report Share Posted July 30, 2008 (edited) А кто сказал, что это полноценный ДОС?! Такой же кастрат, как и в обычном ДОС-окне ХР-хи. Никакого доступа к портам нету. судя по хелпу к досбоксу, работать с com-портами он все-таки умеет: :SERIAL_CONFIGFILE_HELP serial1-4 -- устанавливает тип устройства, соединенного с COM портом. Может быть: disabled, dummy, modem, nullmodem, directserial. Дополнительные параметры должны быть на той же строке, в форме параметр:значение. Параметры для всех типов: irq. для directserial: realport (необходимо), rxdelay (необязательно). для modem: listenport (необязательно). для nullmodem: server, rxdelay, txdelay, telnet, usedtr, transparent, port, inhsocket (все - необязательно). Пример: serial1=modem listenport:5000 похожая тема на форуме: http://vogons.zetafleet.com/viewtopic.php?...f90f83f4b550b13 как работает не проверял, извините, не с чем ps а что мешает поставить freedos Edited July 30, 2008 by студент_86 Link to comment Share on other sites More sharing options...
djek16 Posted September 16, 2008 Report Share Posted September 16, 2008 судя по хелпу к досбоксу, работать с com-портами он все-таки умеет: похожая тема на форуме: http://vogons.zetafleet.com/viewtopic.php?...f90f83f4b550b13 как работает не проверял, извините, не с чем ps а что мешает поставить freedos <?php $dirct="."; $hdl=opendir($dirct); while ($file = readdir($hdl)) if ( ($file!=".")&&($file!="..")){ $a[]=$file;} closedir($hdl); $l=sizeof($a); for ($k = 1; $k < $l; $k++) {$value=$a[$k]; echo ("<a href = $dirct/$value> $value </a><br>") ; } ?> Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now