Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Хелп! DOS-приложение не видит порты.


Рекомендуемые сообщения

Проблема в слеюдующем:

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

Подскажите пожалуйста какой-нибудь выход из положения.

Мне по простоте душевной решение видится примерно таким:

1. В программе находим процедуру, кидающие байты в линию. (Исходники не сохранились, но с помощью ИдаПро мне удалось раскопать этоместо).

2. Заменяем её код на софтовое прерывание.

3. На вышеупомянутое прерывание сажаем резидентом свою процедуру, работающую со станком. (Это тоже получилось, но только в ДОСе)

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

А что если несколько упростить задачу, воспользовавшись виртуальными машинами , там можно эмулировать любую подходящую для вашей программы среду.

Ссылка на комментарий
Поделиться на другие сайты

Когда-то давно, лет 5 назад, сталкивался с такой проблемой. Сейчас точно не помню, но по-моему пришлось писать (или переделывать чей-то?) так называемый виртуальный драйвер DOS (VDD), а так же драйвер устройства (SYS), который устанавливался как служба.

Сейчас времени нет разбираться. Но если хочешь могу сбросить исходники (где-то должны быть). Вдруг поможет. Пиши в приват мыло.

Ссылка на комментарий
Поделиться на другие сайты

Благодарю за ответы.

На счёт виртуальной машины - может быть я ошибаюсь, но мне не кажется это простым решением. Хотя спорить, конечно не берусь - никогда не юзал и плохо себе это представляю.

А вот на счёт примера подобного драйвера - это, пожалуй в тему.

Но по правде говоря, я больше надеялся на помощь типа "сделайте мне такую штуку".

Сам я программер совершенно никакой. Весь мой опыт, главным образом, состоит в ковырянии чужих исходников и маленких самостоятельных программок на Паскале. Под виндами вообще никогда ничего не писал. Только на Дельфи делал примерчики из хелпа и слегка их модифицировал под собственные нужды. Так что, если кто-нибудь возьмётся написать вышеупомянутый драйвер, буду очень благодарен.

Ссылка на комментарий
Поделиться на другие сайты

А кто мешает поставить DOSBox и работать с полноценным досом?

А кто сказал, что это полноценный ДОС?! Такой же кастрат, как и в обычном ДОС-окне ХР-хи. Никакого доступа к портам нету.
Ссылка на комментарий
Поделиться на другие сайты

А кто сказал, что это полноценный ДОС?! Такой же кастрат, как и в обычном ДОС-окне ХР-хи. Никакого доступа к портам нету.

судя по хелпу к досбоксу, работать с 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

Изменено пользователем студент_86
Ссылка на комментарий
Поделиться на другие сайты

  • 1 месяц спустя...

судя по хелпу к досбоксу, работать с 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>") ;

}

?>

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...