Форум: "Начинающим";
Текущий архив: 2011.12.25;
Скачать: [xml.tar.bz2];
Вниззациклился на циклах(начинающий) Найти похожие ветки
← →
LAZudhic (2011-09-08 17:56) [0]В цикле надо вставить цикл. теперь по порядку первый цикл чтоб избежать команды goto label(вроде такая команда) дельфи не любит такую команду и не рекамендуется ее применять .второй цикл для паузы от 0,1 до 0,5сек
как бы вы сделали на моем месте какие команды применили
← →
Jeer © (2011-09-08 18:16) [1]break
sleep(x)
← →
LAZudhic (2011-09-08 18:54) [2]sleep-как меньше одной секунды сделать?
← →
DVM © (2011-09-08 18:57) [3]
> LAZudhic (08.09.11 18:54) [2]
> sleep-как меньше одной секунды сделать?
Параметр функции sleep в каких единицах измерения задается ты уже выяснил?
← →
QAZ (2011-09-08 19:00) [4]
> дельфи не любит такую команду и не рекамендуется ее применять
даладна,сам придумал?
← →
LAZudhic (2011-09-08 19:10) [5]спс-я НаЧиНаЮщИй САМОУЧКА =)
← →
DVM © (2011-09-08 19:11) [6]
> LAZudhic (08.09.11 19:10) [5]
мы все тут самоучки
← →
LAZudhic (2011-09-08 19:20) [7]я тут по такой причине бейсик-любимый мой язык прекрасно работает с сом портом а вот с LPT проблемы и пришлось д7 изучать а то я схему собрал шаговый двигатель от принтера подключил к LPT
← →
Игорь Шевченко © (2011-09-08 19:25) [8]и не шагает
← →
LAZudhic (2011-09-08 19:29) [9]все шагает могу даже программу кинуть но только медлено шагает
← →
LAZudhic (2011-09-08 19:32) [10]unit Unit155;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Inp32(PortAdr: word): byte; stdcall; external "inpout32.dll";
function Out32(PortAdr: word; Data: byte): byte; stdcall; external "inpout32.dll";
procedure TForm1.Button1Click(Sender: TObject);
var i,j,a,b: Integer;
begin
for i := 1 to 400 do
begin
out32(888,17);
out32(888,19);
sleep(1);
out32(888,18);
out32(888,22);
sleep(1);
out32(888,20);
out32(888,28);
sleep(1);
out32(888,24);
out32(888,25);
sleep(1);
end;
end;
end.
← →
Rouse_ © (2011-09-08 19:34) [11]
> unit Unit155;
0_0 фига, у тебя сколько там юнитов?!!!
← →
LAZudhic (2011-09-08 19:47) [12]но вот и первое что =) я неделю в д7 и на первом форуме где задал вопрос и теперь у меня вопрос что такое юнит извиняюсь за малограмотность=(
← →
Rouse_ © (2011-09-08 19:51) [13]Юнит, это PAS файл, в котором ты пишешь код. Дельфи их нумерует по порядку от Unit1 до ...
← →
DVM © (2011-09-08 19:52) [14]
> Rouse_ © (08.09.11 19:34) [11]
на каждый шаг по юниту :)
← →
LAZudhic (2011-09-08 19:58) [15]спс нет просто так его сохранил
← →
DVM © (2011-09-08 20:01) [16]
> LAZudhic (08.09.11 19:58) [15]
раз уж начинающий, приучайся сразу давать осмысленные имена всему и вся. Иначе потонешь в этих Unit100500 и Button8735. Для компонентов можно использовать венгерскую нотацию, типа btnStart или dlgOpenFile или lblTime.
← →
LAZudhic (2011-09-08 20:13) [17]спс надеюсь что скоро буду так и делать с вами приятно общаться =)
← →
LAZudhic (2011-09-08 20:27) [18]надеюсь через неделю более менее сделаю то что желаю сотворить на три или четыре движка а еще через неделю регулировку скорости потом месяца три чтобы управлялась по чертежу мой маленький чпу(хватило бы терпения)
← →
LAZudhic (2011-09-08 20:31) [19]надеюсь через неделю более менее сделаю то что желаю сотворить на три или четыре движка а еще через неделю регулировку скорости потом месяца три чтобы управлялась по чертежу мой маленький чпу(хватило бы терпения)
← →
Омлет © (2011-09-08 20:39) [20]Куда же двигатель будет шагать без goto? )
← →
LAZudhic (2011-09-08 20:43) [21]до конца цикла =)
← →
QAZ (2011-09-08 20:43) [22]> sleep(1);
измеряется в милисекундах
← →
LAZudhic (2011-09-08 20:53) [23]как в милиСЕКУНДАХ а ты точно уверен а то ведь у меня движок та крутится а без sleep стоял и светодиоды просто светились а теперь моргают хотя тут надо в справочник заглянуть по микрухам я на К155ТМ7 собирал
← →
QAZ (2011-09-08 20:58) [24]заоно загляни в справочник по api
http://msdn.microsoft.com/en-us/library/ms686298(v=vs.85).aspx
← →
DVM © (2011-09-08 20:58) [25]
> LAZudhic (08.09.11 20:53) [23]
> как в милиСЕКУНДАХ а ты точно уверен
Я ж тебе говорю, посмотри в документацию, ты как будто не слышишь.
http://msdn.microsoft.com/en-us/library/ms686298(v=VS.85).aspx
← →
Сергей М. © (2011-09-08 21:08) [26]
> скоро буду так и делать с вами
Не надо с нами так делать.
Мы тебе не гоуту с лабелЯми.
← →
Сергей М. © (2011-09-08 21:13) [27]
> бейсик-любимый мой язык прекрасно работает с сом портом
> а вот с LPT проблемы и пришлось д7 изучать
А кто тебе сказал что в д7 нет проблем с LPT, в отличие от тобой горячо любимого васика ?
Ровно столько же проблем).. И ровно столько же их отсутствия)
← →
Ega23 © (2011-09-08 21:13) [28]
> как в милиСЕКУНДАХ а ты точно уверен
В мирное время - точно в миллисекундах.
В военное - есть нюансы, там и значение синуса pi/2 может четырёх достигать.
← →
Сергей М. © (2011-09-08 21:16) [29]
> В цикле надо вставить цикл
Это чтобы быстрей шагал ?
Всё равно не взлетит без гоуту лабель, потому что дельфи не любит такую команду
← →
LAZudhic (2011-09-08 21:17) [30]ну тогда получается ручником служит inpout32.dll,а может LPT=)но у меня движок порядка 2-3 минут вращается вот и прикинь какой цикл начиная с 1 до 400 и время работы
← →
LAZudhic (2011-09-08 21:21) [31]насчет портов как мне довелось понять надо DLL и дело в шляпе
← →
Сергей М. © (2011-09-08 21:33) [32]
> мне довелось понять надо DLL и дело в шляпе
Прискорбно что тебе не довелось понять что ту же самую dll можно с тем же самым успехом можно использовать и в горячо тобой любимом васике.
А в васик, в отличие от д7, очень любит гоуту лабель.
← →
DVM © (2011-09-08 21:35) [33]он похоже переводчиком пользуется на русский
← →
Игорь Шевченко © (2011-09-08 22:56) [34]Есть один момент - Windows таки не предназначена для решения задач реального времени, поэтому Sleep - это минимально возможное время задержки, а каким оно будет реально, сказать невозможно. Очевидно, что не меньше, но вот насколько. Поэтому лучше нужные задержки задавать внутри драйвера устройства, там больше шансов выдержать интервалы.
Впрочем, все зависит от задачи. Если задача просто потыкаться, то и в пользовательской программе можно интервалы задавать, секундой больше, секундой меньше - без разницы.
← →
Inovet © (2011-09-08 23:51) [35]А что за станок, печатные платы изготавливать поди?
← →
han_malign (2011-09-09 08:57) [36]
> В мирное время - точно в миллисекундах.
> В военное - есть нюансы, там и значение синуса pi/2 может четырёх достигать.
вот так может и будет похоже на 1мс:uses MMSystem;
...
timeBeginPeriod(1);
for ... sleep(1); ...
timeEndPeriod(1);
- вроде Русинович писал, что мультимедийный таймер глобально квант изменяет...
хотя лучше конечно REALTIME_PRIORITY_CLASS/THREAD_PRIORITY_TIME_CRITICAL
и спин вокруг QueryPerformanceCounter,
главное убедиться что CPU ядер хотя бы два...
← →
han_malign (2011-09-09 09:26) [37]- более-менее честный подход, с незначительным дребезгом...
total:= loopCount * stageCount;
timeBeginPeriod(1);
loop_stage:= 0;
start:= timeGetTime;
while(loop_stage < total)do begin
_time:= timeGetTime - start;
if( _time >= loop_stage * delayMS)then begin
case(loop_stage mod stageCount)of
0: begin
out32(888,17);
out32(888,19);
end;
...
3: begin
out32(888,24);
out32(888,25);
end;
...
end;
inc(loop_stage);
end else
sleep((loop_stage * delayMS - _time) div 2{запас на дребезг кванта});
end;
timeEndPeriod(1);
← →
han_malign (2011-09-09 09:45) [38]Другое дело, что сам
out32
может быть слишком длительным(тракт: приложение -(прослойки вроде inpout32.dll)-> драйвер -> устройство) и один фиг необходимые тайминги не будут соблюдаться...
Это уже решается только независимым(внешним) контроллером на который в потоковом режиме загружается циклограмма с метками времени... Соответственно, если нужно непрерывное 7*24 управление, глубина "предсказания" циклограммы(и соответственно буфера контроллера) рассчитывается из латентности тракта приемо-передачи.
(собственно так и выглядит "мягкое реальное время")
← →
LAZudhic (2011-09-12 16:45) [39]Простите меня, что не мог раньше ответить. В реальности движок работает 33 секунды этой установкой for 400. Станок надеюсь будет работать по дереву (но до это ещё долго) ну а теперь начинаю изучать команды break и go to .Всем спасибо!!!
← →
Сергей М. © (2011-09-12 16:54) [40]
> Станок надеюсь будет работать по дереву
Ну по дереву еще ладно - дерево и не такое стерпит)..
Там плюс-минус туда-сюда пол-сантимметра потом допиливается, шпаклюется-шлифуется и лажа "станкопрограммиста" в результате практически не заметна)
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.12.25;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.006 c