Понимаешь, Vcom, странности в этом есть.
DSPack - стоит копнуть гугл - о нем отзывы как о единственном раскрученном софте для каптуринга к Дельфи. Лучше его нет. Странность - на паре компьютеров он идет как надо (не зевает). То бишь, может быстродействие дешевого лоптопа его не устраивает, для рендеринга (каптуринга). Это может быть аппаратным задвигом - ввиду частичной работоспособности. Я купил Дельфи 7 и Vs 2005 pRO "для икспириментов".
Может у меня Дельфи было слишком левое. Перепоставлю Дельфи и откомпилирую программу снова. Если произойдут качественные изменения, то это объяснит странности DSPack. Глаз то в робототехнике как глаза нужен. Все одно без него никуда. Так что постараюсь, отпишу итоги.
Крыша Эрмитажа поди узнаваема. Я вижу эту проекцию, но с другой точки. А этот выставили жестящики. Им своя работа нравится. Там что-то вроде Зимнего сада виднеется. Ну.. ангел, Исакий.. все как положено, все там есть. Город этот, мне уютно в нем.
день был солнечным.. вижу, как фотоэлементный фонарь полыхает
зарядился к ночи глядя..
http://artspb.com/onlinebook/weather/index.php
31. nick2008 - 01 Июля, 2008 - 00:36:56 - перейти к сообщению
32. nick2008 - 01 Июля, 2008 - 20:38:51 - перейти к сообщению
Компильнул, нет, это особенность того лоптопа. Может там медленный процессор, или видеокамера с приветом, но каптурится там весьма случайным образом. Приведу потом код, в треад.
33. nick2008 - 02 Июля, 2008 - 11:10:55 - перейти к сообщению
Драйвер оптической мыши на Висте - скачал, 72 мегабайта.. крутенько
Вот она, VCom, неберучка пакета DSPack (Дельфи 7) - при выходе из программы она остается висеть в памяти в Процессах, на оранжерейном лоптопе она зевает каптуринг (когда делает, когда нет - глупо циклю), на другой машине с той же операционкой XP - не зевает.
var SysDev: TSysDevEnum;
procedure TSDIAppForm.FormCreate(Sender: TObject);
var i : Integer;
begin
SysDev:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
FilterGraph.ClearGraph;
FilterGraph.Active := false;
Filter.BaseFilter.Moniker := SysDev.GetMoniker(0);
FilterGraph.Active := true;
with FilterGraph as ICaptureGraphBuilder2 do
RenderStream(@PIN_CATEGORY_PREVIEW, nil,
Filter as IBaseFilter, SampleGrabber as IBaseFilter,
VideoWindow as IbaseFilter);
FilterGraph.Play;
end;
При вызове запроса на каптуринг
SDIAppForm.SampleGrabber.GetBitmap(Form5.Image1.Picture.Bitmap);
FlgGrabber:=true;
В таймере - скидывание на диск
if FlgGrabber then begin FlgGrabber:=false;
ImageJPG:=TJPEGImage.Create;
ImageJPG.Assign(Form5.Image1.Picture.Bitmap);
ImageJPG.Compress;
ImageJPG.SaveToFile(FileGrabber); ImageJPG.Free;
end;
Завершение
SDIAppForm.SampleGrabber.Free;
SDIAppForm.Filter.Free;
SDIAppForm.FilterGraph.Free;
SysDev.Free;
(Destroy вырубает дебаггер)
Вот такая вот неберучка, вот такая вот, блин, некрасота.. (лапки сложил)
Вот она, VCom, неберучка пакета DSPack (Дельфи 7) - при выходе из программы она остается висеть в памяти в Процессах, на оранжерейном лоптопе она зевает каптуринг (когда делает, когда нет - глупо циклю), на другой машине с той же операционкой XP - не зевает.
var SysDev: TSysDevEnum;
procedure TSDIAppForm.FormCreate(Sender: TObject);
var i : Integer;
begin
SysDev:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
FilterGraph.ClearGraph;
FilterGraph.Active := false;
Filter.BaseFilter.Moniker := SysDev.GetMoniker(0);
FilterGraph.Active := true;
with FilterGraph as ICaptureGraphBuilder2 do
RenderStream(@PIN_CATEGORY_PREVIEW, nil,
Filter as IBaseFilter, SampleGrabber as IBaseFilter,
VideoWindow as IbaseFilter);
FilterGraph.Play;
end;
При вызове запроса на каптуринг
SDIAppForm.SampleGrabber.GetBitmap(Form5.Image1.Picture.Bitmap);
FlgGrabber:=true;
В таймере - скидывание на диск
if FlgGrabber then begin FlgGrabber:=false;
ImageJPG:=TJPEGImage.Create;
ImageJPG.Assign(Form5.Image1.Picture.Bitmap);
ImageJPG.Compress;
ImageJPG.SaveToFile(FileGrabber); ImageJPG.Free;
end;
Завершение
SDIAppForm.SampleGrabber.Free;
SDIAppForm.Filter.Free;
SDIAppForm.FilterGraph.Free;
SysDev.Free;
(Destroy вырубает дебаггер)
Вот такая вот неберучка, вот такая вот, блин, некрасота.. (лапки сложил)
34. VCOM - 04 Июля, 2008 - 10:03:34 - перейти к сообщению
Ну дак в треаде та нипробовал? Имхо в треаде все пучком должно быть, не?
35. nick2008 - 04 Июля, 2008 - 10:27:59 - перейти к сообщению
Треад (thread) - это ветвь, я думал, ты о нашей ветви говоришь. Я не знаю такого инструмента каптуринга. Что такое треад???
Понимаешь, тот лоптоп - временное явление. Я туда оболочку поставлю и поизучаю его. Чего это он химичит. Если почтенный какой-нибудь дельфовед скажет еще (правда, я неохотно хожу по форумам), чего она процессы не выгружает, то и дело в шляпе. Мне же мало каптурить - мне связку с моим матлабом нужно сохранить, который помимо еще ацп-цап обслуживает. Я достиг предела аппаратных новаций.. может даже приложение найдется, созданному.
Есть ведь и еще одно решение - Dorgem, готовая программа каптуринга. Она тоже умеет обновлять фото в цикле и делает это хорошо. На "старой машине" можно обойтись ею. Какая разница, кто будет заплевывать диск раз в минуту. Но меня удивляет DSPack.. это довольно профессиональный софт, и вдруг такая немощность.. при которой диск становится буфером из-за зевков.
36. VCOM - 04 Июля, 2008 - 15:31:24 - перейти к сообщению
Нееее треад это типа нить.... Отдельный поток, который выполняется параллельно с основной программой.... Вот те пример для Делфы
http://www.schulers.com/jpss/pascal/dthre.htm
Тут создаеца 2а треада.
procedure TForm1.Button1Click(Sender: TObject);
begin
T1.Create(false);
T2.Create(false);
end; { of procedure }
Т1 и Т2
После того как они создадуца, они в цикле будут крутица и обновлять каптион каждый своего лайбла.... Тока на работу основной программы они влиять нибудут! Вод, засунь свой вызов из цикла, в треад (думаю на примере воткнешсо). Имхо должно помочь Ж)))))
http://www.schulers.com/jpss/pascal/dthre.htm
Тут создаеца 2а треада.
procedure TForm1.Button1Click(Sender: TObject);
begin
T1.Create(false);
T2.Create(false);
end; { of procedure }
Т1 и Т2
После того как они создадуца, они в цикле будут крутица и обновлять каптион каждый своего лайбла.... Тока на работу основной программы они влиять нибудут! Вод, засунь свой вызов из цикла, в треад (думаю на примере воткнешсо). Имхо должно помочь Ж)))))
37. nick2008 - 05 Июля, 2008 - 00:57:39 - перейти к сообщению
Потоки так или иначе живут, запускаемые таймером. Общее время делится на всех.
Но у меня и так таймер задействован для выполнения каптион. Основная программа задает очередность действий, а таймер действия выполняет, в частности - каптурит фигню эту.
Может таймер накрывать сам себя и мешать самому себе, на длительной операции.. сейчас посмотрю, сделал ли я флаг, выхода из программы прерывания по таймеру, если он засел в каптуринге.. не мешает ли таймер сам себе рестартуя процесс..
Потоки я буду иметь в виду.. любопытный ход, и в самом деле.. мне скорость пока не нужна, особо то, параллелить. Преимущества этого хода неочевидны...
Беда настоящая, это выгрузка программы.. когда я выхожу из программы, она висит в потоках (видных по ctrl-alt-del).. видимо драйвер камеры создает чего то там, и оно не выгружается..
38. VCOM - 07 Июля, 2008 - 10:50:40 - перейти к сообщению
Ну в принципе если известно имя процесса, то можна его найти, да грохнуть. Вод... А насчет треадов и таймеров... Таймер он пока обрабатывается, у тя вся остальная программа встает... А треад он сам по сибе крутица.... Вот...
39. nick2008 - 07 Июля, 2008 - 21:46:50 - перейти к сообщению
Решил я проблему, Vcom, и весьма необычным образом.
Вебкамера неохотно отдавала картинку и несколько дней висела в сети схема записи картинки на диск раз в минуту. Понятно, что это плохо, но этим преодолевалась 'лень камеры'. Причем две другие камеры на других компах не ленились, но компы то за пределами оранжереи.
Насилие над винчестером, тоже плохо.
Ввел я двойной буфер памяти, не поленился, и организовал считку туда. Если содержимое буферов различно - картинка обновилась, она писалась на диск. Если нет, чтение в буферы (а не на винчестер) повторялось.
Получил поразительный результат. Если сделать паузу между записью сначала в первый буфер, а потом во второй, то драйвер засыпал и буферы заполнялись одинаковой картинкой (вопреки здравому смыслу). Раза с пятнадцатого получалось различие.
Если убрать паузу между чтениями, камера в таком режиме скоростного опроса умудрялась заполнить оба буфера разными кадрами. Парадоксально. На драйвер немедленный запрос второй картинки действовал вынуждающе, как удар в заднее место. Из него тут же вываливалась новая картинка.
Таперича у меня видеоглаз работает через эти два буфера, а запись на диск делается раз в час (для растений более и не нужно).
Блах.. во как..\n\n(Добавление)
Да, верно, Vcom. Мне кажется, там не один, а свора процессов запускается драйвером камеры. Один носит имя основной программы.
Но я не умею из Дельфы гасить процесс, даже зная его имя. Скорее всего имена - номера, присваиваются динамически, и стандартная процедура завершения не имеет списка адресов или имен ненужных на машине процессов.
Желательно бы их давить, конечно. А то выход из программы получается идиотическим. Она не высвобождает память машины.
Для оранжереи это неважно, поскольку там программа работает сутками и месяцами, без выгрузки. Но для опытов неудобно.
Если бы научиться их грохать некой командой.. но какой, бог знает.\n\n(Добавление)
Здесь проблема расписана.. у мужика тоже форма гасится, а процесс остается..
ну и кто в лес, кто по дрова.. нет жесткого завершения (OnClose мягок)
http://forum.shelek.ru/index.php...pic,11416.0.html
винды мешают, скорее всего..
Вижу, как фонарь зажегся.. приятно, глаз работает.. оставил на память
неплохие на май-робот картинки, хороший художник рисует
Вебкамера неохотно отдавала картинку и несколько дней висела в сети схема записи картинки на диск раз в минуту. Понятно, что это плохо, но этим преодолевалась 'лень камеры'. Причем две другие камеры на других компах не ленились, но компы то за пределами оранжереи.
Насилие над винчестером, тоже плохо.
Ввел я двойной буфер памяти, не поленился, и организовал считку туда. Если содержимое буферов различно - картинка обновилась, она писалась на диск. Если нет, чтение в буферы (а не на винчестер) повторялось.
Получил поразительный результат. Если сделать паузу между записью сначала в первый буфер, а потом во второй, то драйвер засыпал и буферы заполнялись одинаковой картинкой (вопреки здравому смыслу). Раза с пятнадцатого получалось различие.
Если убрать паузу между чтениями, камера в таком режиме скоростного опроса умудрялась заполнить оба буфера разными кадрами. Парадоксально. На драйвер немедленный запрос второй картинки действовал вынуждающе, как удар в заднее место. Из него тут же вываливалась новая картинка.
Таперича у меня видеоглаз работает через эти два буфера, а запись на диск делается раз в час (для растений более и не нужно).
Блах.. во как..\n\n(Добавление)
Да, верно, Vcom. Мне кажется, там не один, а свора процессов запускается драйвером камеры. Один носит имя основной программы.
Но я не умею из Дельфы гасить процесс, даже зная его имя. Скорее всего имена - номера, присваиваются динамически, и стандартная процедура завершения не имеет списка адресов или имен ненужных на машине процессов.
Желательно бы их давить, конечно. А то выход из программы получается идиотическим. Она не высвобождает память машины.
Для оранжереи это неважно, поскольку там программа работает сутками и месяцами, без выгрузки. Но для опытов неудобно.
Если бы научиться их грохать некой командой.. но какой, бог знает.\n\n(Добавление)
Здесь проблема расписана.. у мужика тоже форма гасится, а процесс остается..
ну и кто в лес, кто по дрова.. нет жесткого завершения (OnClose мягок)
http://forum.shelek.ru/index.php...pic,11416.0.html
винды мешают, скорее всего..
Вижу, как фонарь зажегся.. приятно, глаз работает.. оставил на память
неплохие на май-робот картинки, хороший художник рисует
40. VCOM - 08 Июля, 2008 - 08:58:19 - перейти к сообщению
Ну дак это. Дофига всяких способов та процессы искать и убивать... Вот к примеру для Билдера http://rxlib.ru/forums/index.php?act=ST&f=3&t=2443&s=39b951ea6601864cb640fc7048c5eb11. Насчет того что с камеры нужно читать сразу несколько картинок подряд... Дак подикась она для того и сделана чтоб видео получать Ж))))) Она поди там засыпает если с нее ниче не читают Ж)))))
41. nick2008 - 08 Июля, 2008 - 10:53:56 - перейти к сообщению
да я пробовал Terminate.. не помогло. Видимо дескриптор процесса, ей не дотянуться.. там что-то нетривиальное. Свой то процесс она автоматом должна убивать. Не убивает, потому что втянута во что-то..
Новая мысль, Vcom. Обзавелся я глазом, значит, робототехническим. Можно лоптоп на тележке катать - типа, как тута делают. Глазастый. Но, вообще то, глаз висит в сети. А у меня есть в сети же говорящая программа. Типа, воспринимающая собеседников не за дерьмо. Что ежели этот глаз, в сети распределенный, этой дуре железнай приделать... ну, чтобы она хоть чего то видела. А то ведь слепая. А так, она скажем, к окну лицом стоит, цветы нюхает. Хорошая позиция. Так, помаленьку, смотришь, где то глаз, где то рука, робот то и соберется. Ну.. пусть пока поливает.
Поеду сегодня в Ботанический. Там другая проблема, шторки. Нужны большие шторки - причем вертикальные. Горит от солнца живность под стеклами.
42. nick2008 - 09 Июля, 2008 - 00:23:34 - перейти к сообщению
Опана... у нее же глаз и несколько рецепсоров.. Реализовал и очень легко - очувствление..
http://artspb.com/onlinebook/ava...atbot=1213986157
блин.. она научилась различать температуру!!!
http://artspb.com/onlinebook/ava...atbot=1213986157
блин.. она научилась различать температуру!!!
43. VCOM - 09 Июля, 2008 - 08:00:04 - перейти к сообщению
Чета она имхо у тя пависла Ж))))))
44. nick2008 - 09 Июля, 2008 - 16:24:55 - перейти к сообщению
У меня сам сервер иногда спит. Сейчас они подправили, зимой было чаще. Я захожу сейчас, ничего - работает, интернет эксплорером, конечно.
Говорящие программы, не новость, но к этой, раз она сетевая, подведены данные от рецепсоров и глаза. Причем робот эксплуатирует алгоритм, беря его прямо из книги http://artspb.com/onlinebook/avatar/index.php
Это новенькое. Поскольку виден и алгоритм реализации (на последней странице). Изменения выполняются коррекцией записей, там же. Открытый алгоритм.
Сегодня был в Ботаническом. Там заинтересовались фитомониторингом растений, через сетку. Да и пора бы..
45. VCOM - 10 Июля, 2008 - 11:01:18 - перейти к сообщению
Гхмы. Дак оно падикась лучше не лаптопы для мониторинга юзать, а АРМ с езернедом на борту? Подцепить датчики и исполнительные устройства не проблема... С камерой тока возни побольше будет. Но если ограничится 1 Кадром ну скажем в минуту, то впринципе даже АРМ7ТДМАЙ с этим запросто справица... Не? Да и виснет он крайне редко, (я на своем ни разу не видел) а если и повиснет, его вачдок ребутнед....