Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];

Вниз

Нужено нечто анализатора кода или просто умные идеи   Найти похожие ветки 

 
Melior   (2003-05-21 19:49) [0]

Прошу помочь, чем сможете...
Есть задание, написать эмулятор робота Электроника...дальше название не помню. Реальный робот подключается через плату расширения реализованную на шине ISA. Для этого робота пишуться программы (в основном на Паскале). Принцип программ достаточно простой с точки зрения робототехники - имеется два порта 300 и 301. На эти порты передаются (считываются) 16-ричные значения. По одному передаются параметры для запуска того или иного двигателя, по другому идут ответы от концевиков (импульсных датчиков). Большинство программ пишутся с широким использованием безусловного перехода (label).
Вот пример программы, чтобы было легкче понять:

program drive100; {Запуск привода Х на 100 импульсов ФИД}
uses crt;
label a1;
var a,u,x:byte;
begin
x:=100;
port[$300]:=$02;
a:=port[$301];
u:=a;
a1:
while (a and $02) = (u and $02) do
begin
a:=port [$301];
end;
u:=a;
x:=x-1;
if x=0 then port[$300]:=$00 else goto a1;
end.

$02 - команда на движение привода, $00 - команда на торможение.

Нам надо написать эмулятор этого робота на Delphi, чтобы студенты могли изучать устройство роботов без присутствия последних. 3D-модель робота сделана с помощью компонента GLScene. Все движения сделаны, но проблема в анализаторе паскалевского кода. Те заставить модельку двигаться в соответствии с тем как двигался бы реальный робот по программе. Были задумки паралельно компилировать и запускать эту программу и считывать данные в портах, но это успехом не увенчалось. В общем, будем рады любой инфе о решении этой проблемы...


 
Юрий Зотов   (2003-05-21 20:02) [1]

1. Формы Бэкуса-Наура (БНФ).
2. Книги по построению компиляторов (напр., Aхо, Ульман, Сети - это классика, есть в Интернет-магазинах).


 
Skier   (2003-05-21 20:06) [2]


> но проблема в анализаторе паскалевского кода.

Интерпретаторы паскалевского кода можно найти в сети.
Например здесь : http://www.carlo-kok.com


 
Ihor Osov'yak   (2003-05-21 20:10) [3]

2 Melior (21.05.03 19:49)

А не проче ловить запись в порт и уже на основании этого управлять эмулятором..

Понимаю, ловля записи в порт несколько проблематична, но вместо

port[$300]:=

сделать процедуру и в реальной программе делать запись в порт, а в тренировочной - передача соотв. данных эмулятору..




 
Anatoly Podgoretsky   (2003-05-21 20:37) [4]

Только не процедуру, а индексное свойство типа Byte
Пример такого свойства есть на моей странице, компонент NpsPort, там останется только заменить проедуры на эмулятор порта и программ без изменений будет сразу работать.


 
Ihor Osov'yak   (2003-05-22 00:46) [5]

2 Anatoly Podgoretsky © (21.05.03 20:37)

так им,кажется, тренировочные тексты на паскале писать надо, возможно еще досовском.. Хотя нет принципиальных преград делать это на делфи - тогда твое уточнение в самый раз..


 
Anatoly Podgoretsky   (2003-05-22 08:23) [6]

Ihor Osov"yak © (22.05.03 00:46)
Нам надо написать эмулятор этого робота на Delphi


 
Ihor Osov'yak   (2003-05-22 10:26) [7]

2 Anatoly Podgoretsky © (22.05.03 08:23)

Сорри. Я стал жертвой несогласованности времен. Следующее предложение написано в прошлом времени: 3D-модель робота сделана с На что я и купился..



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
7-3192
SiJack
2003-03-31 15:22
2003.06.02
Програмно запретить ждущий режим компа


7-3193
Aleksandr
2003-04-01 11:56
2003.06.02
А надо ли как-то убивать Мьютекс по завершении работы?


3-2797
yuribas
2003-05-14 08:24
2003.06.02
Компоненты для Oracle


7-3194
QUE
2003-04-01 11:08
2003.06.02
Rasapi


14-3096
Angel_Forever
2003-05-14 10:14
2003.06.02
Скрытие проги от сочетания клавиш Ctrl+Alt+Del в WinNT 2k Xp...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский