Фильтр по тематике

Графическая оболочка Photon – революция в мире интерфейсов

Графическая среда Photon реализовала многие мечты программистов.

31.12.1995 1311 0
Графическая оболочка Photon – революция в мире интерфейсов
Ког­да в 1982 го­ду на рын­ке по­я­ви­лась ОС QNX — пер­вая опе­ра­ци­он­ная сис­те­ма на ба­зе мик­ро­яд­ра, — она тут же при­влек­ла вни­ма­ние всех спе­ци­а­лис­тов, от про­из­во­ди­те­лей мик­ро­кон­трол­ле­ров до про­ек­ти­ров­щи­ков рас­пре­де­лен­ных сис­тем уп­рав­ле­ния, объ­еди­нив в се­бе ми­ни­а­тюр­ность DOS, мощ­ность UNIX и до­пол­нив этот на­бор рас­пре­де­лен­ной об­ра­бот­кой дан­ных в ре­аль­ном вре­ме­ни.

Со вре­ме­нем тре­бо­ва­ния к сис­те­мам рас­тут. И cе­год­­ня уже ни один поль­зо­ва­тель не пред­­став­ля­ет се­бе ра­бо­ту без гра­фи­чес­ко­го окон­но­го ин­тер­фей­са. Од­на­ко раз­го­вор о гра­фи­чес­кой сре­де на­во­дит раз­ра­бот­чи­ков на мысль о не­ис­чис­ли­мых ме­га­бай­тах па­мя­ти, ко­то­рые тре­бу­ют­ся для X Window Sys­tem или про­дук­тов фир­мы Microsoft. И QNX Software Systems Ltd. еще раз по­ка­за­ла, что нет ни­че­го не­воз­мож­но­го, раз­ра­бо­тав гра­фи­чес­кую окон­ную сис­те­му на ба­зе мик­ро­яд­ра — Photon.

Ду­маю, что не на­йдет­ся про­грам­мис­та, ко­то­рый не меч­тал бы о гра­фи­чес­кой сре­де, ко­то­рая
  • лег­ко уме­ща­ет­ся в 300 К па­мя­ти,
  • по­ка­зы­ва­ет вы­со­кую про­из­во­ди­тель­ность да­же на са­мой де­ше­вой ап­па­рат­ной плат­фор­ме,
  • лег­ко мас­шта­би­ру­ет­ся для ис­поль­зо­ва­ния в раз­ра­бот­ках са­мо­го раз­лич­но­го на­зна­че­ния,
  • спо­соб­на ото­бра­жать свои ок­на в среде MS Windows или X Window System,
  • име­ет рас­ши­рен­ные сред­ст­ва для про­ек­ти­ро­ва­ния при­ло­же­ний.
Се­год­ня эти, ка­за­лось бы, не­сбы­точ­ные меч­ты ста­ли ре­аль­ностью, во­пло­тив­шись в гра­фи­чес­ком па­ке­те Photon. Мно­гие воз­мож­нос­ти, та­кие как рас­п-ре­де­лен­ное по се­ти гра­фи­чес­кое про­стран­ст­во и ни­зкие тре­бо­ва­ния к ап­па­рат­ным ре­сур­сам, ре­а­ли­зо­ва­ны за счет воз­мож­нос­тей са­мой опе­ра­ци­он­ной сис­те­мы QNX. Но обо всем по по­ряд­ку…

Идеология

Photon пред­став­ля­ет со­бой окон­ную гра­фи­чес­кую сис­те­му, ко­то­рая по сво­е­му под­хо­ду к ре­а­ли­за­ции гра­фи­чес­ко­го ин­тер­фей­са ко­рен­ным об­ра­зом от­ли­ча­ет­ся от всех су­щес­тво­вав­ших ра­нее сис­тем.

Что­бы по­нять иде­о­ло­гию Photon, вы до­лж­ны за­быть все, что зна­ли ра­нее о гра­фи­чес­ких обо­лоч­ках. По­ка от­вле­ки­тесь от де­та­лей ре­а­ли­за­ции про­грам­м­но­го обес­пе­че­ния. Взгля­ни­те на гра­фи­ку не как про­грам­мист, а как че­ло­век, зна­ко­мый с оп­ти­кой на уров­не сред­ней шко­лы. Для  на­ча­ла пред­ставь­те се­бе про­зрач­ный па­рал­ле­ле­пи­пед. Про­стран­ст­во, ко­то­рое он ог­ра­ни­чи­ва­ет, в тер­ми­нах Photon на­зы­ва­ет­ся про­стран­ст­вом со­бы­тий. Грань па­рал­ле­ле­пи­пе­да, об­ра­щен­ная к вам, яв­ля­ет­ся эк­ра­ном компь­юте­ра (рис. 1).

То есть вы на­хо­ди­тесь на­вер­ху про­стран­ст­ва со­бы­тий. Про­ти­во­по­лож­ная грань пред­став­ля­ет со­бой «кор­не­вую» плос­кость. В этом про­стран­ст­ве раз­ме­ща­ют­ся объ­ек­ты, ко­то­ры­ми опе­ри­ру­ет Photon, — ре­ги­о­ны. Они пред­став­ля­ют со­бой пря­мо­у­голь­ные об­лас­ти, рас­по­ло­жен­ные па­рал­лель­но кор­не­вой плос­кос­ти, и яв­ля­ют­ся аген­та­ми QNX-про­цес­сов в про­стран­ст­ве со­бы­тий. С по­мощью ре­ги­о­нов за­да­ча по­лу­ча­ет све­де­ния о про­ис­хо­дя­щем и с их же по­мощью до­став­ля­ет свою ин­фор­ма­цию. Про­грам­ма, ра­бо­та­ю­щая под уп­рав­ле­ни­ем Photon, мо­жет со­зда­вать лю­бое ко­ли­чес­т­во ре­ги­о­нов и уп­рав­лять их ат­ри­бу­та­ми (раз­ме­ром, мес­то­по­ло­же­ни­ем в про­стран­ст­ве со­бы­тий, чув­стви­тель­ностью, про­зрач­ностью и так да­лее). Ме­ха­низм пе­ре­да­чи ин­фор­ма­ции меж­ду ре­ги­о­на­ми ре­а­ли­зо­ван на ос­но­ве со­об­ще­ний на язы­ке Photon, на­зы­ва­е­мых со­бы­ти­я­ми. Со­бы­тия в Photon име­ют ма­те­ри­аль­ную ос­но­ву — они пред­став­ля­ют со­бой на­бор та­ких же пря­мо­уголь­ных об­лас­тей, как и ре­ги­о­ны, и пе­ре­ме­ща­ют­ся в про­стран­ст­ве со­бы­тий в двух на­прав­ле­ни­ях: к кор­не­вой плос­кос­ти или об­рат­но. Ре­ги­о­ны мо­гут пе­ре­да­вать раз­лич­ные ти­пы со­бы­тий, та­кие как со­бы­тия ото­бра­же­ния, мы­ши, кла­ви­а­ту­ры и со­бы­тия для по­зи­ци­о­ни­ро­ва­ния окон. Ес­ли ис­поль­зо­вать ана­ло­гии из об­лас­ти фи­зи­ки, то со­бы­тия яв­ля­ют­ся по­то­ком фо­то­нов, воз­дей­ству­ю­щих на ре­ги­о­ны. По от­но­ше­нию к со­бы­ти­ям ре­ги­о­ны об­ла­да­ют дву­мя важ­ны­ми свой­ства­ми: чув­стви­тель­ностью и про­зрач­ностью. Эти по­ня­тия го­во­рят са­ми за се­бя. То есть ес­ли ре­ги­он не чув­стви­те­лен к оп­ре­де­лен­но­му ти­пу со­бы­тия, он его про­сто не за­ме­ча­ет, ес­ли же он не про­зра­чен для со­бы­тия, про­хо­дя­ще­го че­рез не­го, то он бу­дет мо­ди­фи­ци­ро­вать на­бор пря­мо­у­голь­ни­ков со­бы­тия, вы­ре­зая об­лас­ти пе­ре­се­че­ния, в ре­зуль­та­те че­го об­ра­зу­ет­ся на­бор мень­ших пря­мо­у­голь­ни­ков, пред­став­ля­ю­щих со­бой ос­тав­шу­ю­ся часть со­бы­тия, про­дол­жа­ю­ще­го дви­же­ние по про­стран­ст­ву со­бы­тий. 

Сле­ду­ю­щий ре­ги­он, чув­стви­тель­ный к это­му со­бы­тию, бу­дет по­лу­чать уже но­вый на­бор пря­мо­у­голь­ни­ков. На ри­сун­ке 2 по­ка­за­но со­бы­тие, по­лу­чен­ное ре­ги­о­ном Г пос­ле про­хож­де­ния че­рез ре­ги­о­ны А, Б и В. Не­про­зрач­ность ре­ги­о­нов так­же поз­во­ля­ет из­бе­жать не­же­ла­тель­ных эф­фек­тов про­хож­де­ния со­бы­тий. До­пус­тим, что ре­ги­он Б по­сы­ла­ет со­бы­тие ото­бра­же­ния в на­прав­ле­нии гра­фи­чес­ко­го ре­ги­о­на (го­во­ря про­ще, ок­но Б пы­та­ет­ся ото­бра­зить се­бя на эк­ра­не). Так как ре­ги­он В, рас­по­ло­жен­ный пе­ред ре­ги­о­ном Б, не­про­зра­чен для со­бы­тий Б, то он вы­ре­за­ет часть со­бы­тия та­ким об­ра­зом, что­бы оно не из­ме­ни­ло об­ласть ре­ги­о­на В на эк­ра­не.

Ре­ги­о­ны драйверов

Под­роб­нее сто­ит ос­та­но­вить­ся на ре­ги­о­нах драй­ве­ров. Сам Photon не зна­ет, как что-ли­бо ото­бра­жать на эк­ра­не или вос­при­ни­мать на­жа­тие кла­ви­ши на кла­ви­а-­ту­ре. Фак­ти­чес­ки он толь­ко об­ра­ба­ты­ва­ет  со­бы­тия и уп­рав­ля­ет на­бо­ра­ми их пря­мо­у­голь­ни­ков.

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

Об­ра­бот­ку со­бы­тий кла­ви­а­ту­ры, мы­ши или сен­сор­но­го эк­ра­на про­из­во­дит от­дель­ный драй­вер, на­зы­ва­е­мый Pointer.

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

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

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

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

Ок­но, распределен­ное по се­ти

В Photon гра­фи­чес­кий драй­вер мо­жет ис­поль­зо­вать ре­ги­он, мень­ший чем вы­со­та или ши­ри­на про­стран­ст­ва со­бы­тий. Та­ким об­ра­зом, вы мо­же­те ис­поль­зо­вать не­сколь­ко гра­фи­чес­ких драй­ве­ров на раз­ных уз­лах се­ти для ото­бра­же­ния раз­лич­ных час­тей про­стран­ст­ва со­бы­тий. То есть поль­зо­ва­тель мо­жет лег­ко пе­ре­но­сить ок­на с од­но­го фи­зи­чес­ко­го эк­ра­на на дру­гой (рис. 4). Пред­ста­вим си­ту­а­цию из бу­ду­ще­го оте­чес­твен­ных пред­при­ятий (и на­сто­я­ще­го за­пад­ных). Пред­пол­о­жим, опе­ра­тор на фаб­ри­ке име­ет пе­ре­нос­ной компь­ютер (HPC), снаб­жен­ный бес­про­вод­ным се­те­вым ин­тер­фей­сом. Опе­ра­тор мо­жет по­до­йти к ос­нов­но­му уп­рав­ля­ю­ще­му компь­юте­ру, пе­ре­не­сти ок­но с его эк­ра­на на HPC и про­дол­жать сле­дить за про­цес­сом, про­гу­ли­ва­ясь по фаб­ри­ке.

Ра­бо­та с уда­лен­ным дис­пле­ем

Пред­пол­ожим, вы хо­ти­те пос­мот­реть, что про­ис­хо­дит на эк­ра­не компь­юте­ра, рас­по­ло­жен­но­го в дру­гом зда­нии (опе­ра­тор стол­кнул­ся с не­раз­ре­ши­мой для се­бя за­да­чей и про­сит по­мо­щи у сис­тем­но­го про­грам­мис­та). Для это­го не­об­хо­ди­мо толь­ко со­здать ре­ги­он, чув­стви­тель­ный к гра­фи­чес­ким со­бы­ти­ям и про­зрач­ный для них, и вста­вить его в про­стран­ст­во со­бы­тий нуж­но­го вам уз­ла. Так как этот ре­ги­он про­зра­чен для гра­фи­чес­ких со­бы­тий, то он не ока­зы­ва­ет вли­я­ния на со­бы­тия, про­ис­хо­дя­щие на уда­лен­ном уз­ле. Он пе­ре­хва­ты­ва­ет со­бы­тия и пе­ре­на­прав­ля­ет их по се­ти в ва­ше про­стран­ст­во со­бы­тий. Та­кая ре­а­ли­за­ция пе­ре­хва­та со­бы­тий прак­ти­чес­ки не ока­зы­ва­ет вли­я­ния на про­из­во­ди­тель­ность сис­те­мы в це­лом.

Администратор оконного интерфейса

Воз­мож­ность ре­ги­о­на филь­тро­вать и вос­про­из­во­дить со­бы­тия уп­ро­ща­ет ре­а­ли­за­цию ад­ми­нис­тра­то­ра окон­но­го ин­тер­фей­са.

По внеш­не­му ви­ду и фун­кци­о­наль­ным воз­мож­нос­тям окон­ный ин­тер­фейс вы­пол­нен в сти­ле из­вес­тно­го стан­дар­та OSF Motif [1]. В Photon, как и в лю­бой дру­гой обо­лоч­ке, поль­зо­ва­тель по­лу­ча­ет воз­мож­ность уп­рав­ле­ния гра­фи­чес­ки­ми ок­на­ми: пе­ре­ме­ще­ния, из­ме­не­ния раз­ме­ра, сво­ра­чи­ва­ния в пик­тог­рам­му и так да­лее.

Ког­да ад­ми­нис­тра­тор окон на­чи­на­ет ра­бо­ту, он встав­ля­ет свой ре­ги­он в про­стран­ст­во со­бы­тий не­пос­ред­ствен­но пе­ред кор­не­вым ре­ги­о­ном. Этот но­вый ре­ги­он пред­став­ля­ет со­бой ра­бо­чее про­стран­ст­во или фон, ко­то­рый поль­зо­ва­тель ви­дит на эк­ра­не. Ког­да за­пус­ка­ет­ся оче­ред­ная при­клад­ная про­грам­ма, ад­ми­нис­тра­тор окон вы­де­ля­ет в ее рас­по­ря­же­ние два ре­ги­о­на: ре­ги­он про­грам­мы, пред­на­зна­чен­ный для ее ис­поль­зо­ва­ния и при­над­ле­жа­щий толь­ко ей, и не­мно­го боль­ший по раз­ме­ру ре­ги­он ок­на, о ко­то­ром про­грам­ма поль­зо­ва­те­ля мо­жет да­же не по­до­зре­вать. В ре­ги­о­не ок­на ме­нед­жер раз­ме­ща­ет раз­лич­ные ат­ри­бу­ты управ­ле­ния, ко­то­рые поз­во­ля­ют поль­зо­ва­те­лю пе­ре­ме­щать ок­но, из­ме­нять его раз­мер и то­му по­добное.

Фо­ку­си­ров­ка

Ког­да вы ра­бо­та­е­те с кла­ви­а­ту­рой, ото­бра­же­ние вво­ди­мой ин­фор­ма­ции, как пра­ви­ло, про­ис­хо­дит в од­ном (ак­тив­ном) ок­не. Во­прос за­клю­ча­ет­ся в том, по ка­ко­му при­зна­ку оп­ре­де­лять ак­тив­ность, или, дру­ги­ми сло­ва­ми, фо­ку­си­ров­ку. Су­щес­тву­ют два спо­со­ба фо­ку­си­ров­ки, ко­то­рые поль­зо­ва­тель мо­жет вы­би­рать по свое­му ус­мот­ре­нию: ак­тив­ным счи­та­ет­ся ок­но, в пре-д­елах ко­то­ро­го рас­поло­жен ука­за­тель мы­ши ли­бо в пред­елах ко­то­ро­го поль­зо­ва­тель на­жал кноп­ку мы­ши. Для Photon фо­ку­си­ров­ка вы­ра­жа­ет­ся в том, что ре­ги­он ак­тив­но­го ок­на ста­но­вит­ся чув­стви­тель­ным и не­про­зрач­ным для со­бы­тий, ис­хо­дя­щих от ре­ги­о­на кла­ви­а­ту­ры.

Об­ра­бот­ка со­бы­тий

Как и X Window System, Photon ис­поль­зу­ет ар­хи­тек­ту­ру кли­ент/сер­вер. Сер­ве­ром вы­сту­па­ет яд­ро — Photon, обес­пе­чи­ва­ю­щее под­дер­ж­ку про­стран­ст­ва со­бы­тий. Лю­бой дру­гой про­цесс, будь то драй­вер или про­грам­ма поль­зо­ва­те­ля, пред­став­ля­ет со­бой кли­ен­тс­кую часть. Ин­тер­фейс меж­ду кли­ен­том и сер­ве­ром ба­зи­ру­ет­ся на ме­ха­низ­ме пе­ре­да­чи со­об­ще­ний, ис­поль­зу­е­мом в QNX.

Про­грам­ма, ко­то­рой при­над­ле­жит тот или иной ре­ги­он, мо­жет по­лу­чать ин­фор­ма­цию о про­изо­шед­шем со­бы­тии од­ним из трех спо­со­бов:
  • за­прос,
  • син­хрон­ное опо­ве­ще­ние,
  • асин­хрон­ное опо­ве­ще­ние.
Ис­поль­зуя ме­тод за­про­сов (при­мер 1), про­грам­ма про­из­во­дит цик­ли­чес­кий оп­рос яд­ра Photon на пред­мет при­хо­да то­го или ино­го со­бы­тия в удоб­ное для нее вре­мя. Для боль­шин­ст­ва про­грамм этот ме­тод яв­ля­ет­ся до­ста­точ­но не­эф­фек­тив­ным, но мо­жет быть пол­ез­ным для ре­а­ли­за­ции вы­со­кос­ко­рос­т­ной ани­ма­ции, ког­да про­грам­ма вы­пол­ня­ет оп­рос в про­ме­жут­ках меж­ду вы­пол­не­ни­ем гра­фи­чес­ких или дру­гих фун­к­ций.

Боль­шин­ст­во про­грамм ис­поль­зу­ет ме­тод син­хрон­но­го опо­ве­ще­ния (пример 2). Про­грам­ма по­сы­ла­ет за­прос яд­ру Photon, ко­то­рый от­ве­ча­ет толь­ко тог­да, ког­да про­изош­ло со­бы­тие, в ко­то­ром про­грам­ма за­ин­те­ре­со­ва­на. Все вре­мя с мо­мен­та по­сыл­ки за­про­са до по­лу­че­ния от­ве­та на не­го Photon бло­ки­ру­ет про­грам­му, то есть она на­хо­дит­ся в со­сто­я­нии ожи­да­ния и не про­из­во­дит ни­ка­ких дей­ст­вий. 

Ес­ли вам нуж­но боль­ше гиб­кос­ти, на­при­мер, ког­да вы пи­ше­те про­грам­му-сер­вер, ко­то­рая до­лж­на при­ни­мать и об­ра­ба­ты­вать со­об­ще­ния, при­хо­дя­щие от дру­гих за­дач, вы до­лж­ны ис­поль­зо­вать ме­тод асин­хрон­но­го опо­ве­ще­ния (при­мер 3). В этом слу­чае про­грам­ма вы­зы­ва­ет фун­к­цию, ус­та­нав­ли­ва­ю­щую за­мес­ти­тель (proxy) [3], [8], ко­то­рую Photon бу­дет «вклю­чать» пос­ле при­хо­да со­бы­тия. Про­грам­ма, вы­пол­ня­ю­щая свои ос­нов­ные фун­к­ции как сер­вер, бу­дет по­лу­чать сре­ди со­об­ще­ний от кли­ен­тов из­ве­ще­ния от за­мес­ти­те­ля о при­хо­де со­бы­тия.

Раз­ра­бот­ка про­грамм

На­вер­ное, не оши­бусь, ес­ли ска­жу, что эта гла­ва вы­зо­вет на­иболь­ший ин­те­рес у про­грам­мис­тов. В сре­де Photon мо­гут со­зда­вать про­грам­мы как те, кто по­ра­бо­тал с X или MS Windows, так и лю­ди, впер­вые стол­кнув­ши­е­ся с гра­фи­чес­ким ин­тер­фей­сом. Раз­ра­бот­чи­ки Photon по­за­бо­ти­лись о про­сто­те и мощ­нос­ти ин­тер­фей­са про­грам­мис­та, снаб­див его ре­дак­то­ром, обес­пе­чи­ва­ю­щим ви­зу­аль­ное про­грам­ми­ро­ва­ние, — Application Builder.

Про­грам­мы Photon мо­гут ис­поль­зо­вать не­сколь­ко уров­ней про­грам­мно­го обес­пе­че­ния, пред­став­лен­но­го биб­ли­о­теч­ны­ми фун­к­ци­я­ми. На ни­ж­нем уров­не поль­зо­ва­тель мо­жет ра­бо­тать с гра­фи­чес­ки­ми при­ми­ти­ва­ми ти­­па «ли­ния», «текст» и им по­до­бны­ми. На вер­х­нем уров­не про­грам­ми­ро­ва­ния поль­зо­ва­те­лю до­ступ­ны го­то­вые эле­мен­ты ин­тер­фей­са, на­зы­ва­е­мые вид­же­ты (widgets) [1], [2]. Вид­же­ты пред­­став­ля­ют со­бой объ­ек­ты, по­ве­де­ни­ем ко­то­рых на эк­ра­не мо­жет уп­рав­лять Photon. Пре­иму­щес­т­ва та­ко­го под­хо­да оче­вид­ны: про­грам­мист не должен об­ла­дать ин­фор­ма­цией о де­та­лях ре­а­ли­за­ции то­го или ино­го объ­ек­та, ему нуж­но знать толь­ко фун­к­ции, ор­га­ни­зу­ю­щие ин­тер­фейс c этим вид­же­том, та­кие как со­зда­ние, унич­то­же­ние и уп­рав­ле­ние ре­сур­са­ми. На­ря­ду с ге­о­мет­ри­чес­ки­ми ре­сур­са­ми, та­ки­ми как цвет, раз­мер, по­ло­же­ние в про­стран­ст­ве со­бы­тий, каж­дый вид­жет под­дер­жи­ва­ет ре­сурс, пред­став­ля­ю­щий со­бой спи­сок фун­к­ций, оп­ре­де­ля­е­мых про­грам­мис­том (callbacks) и вы­пол­ня­е­мых пос­ле по­лу­че­ния ка­ко­го-ли­бо со­бы­тия. На­при­мер в спи­сок ре­сур­сов объ­ек­та «кноп­ка» мож­но внес­ти фун­к­цию от­кры­тия но­во­го ок­на и из­ме­не­ния ви­да кноп­ки пос­ле ее на­жа­тия.

 Вид­же­ты, как пра­ви­ло, не яв­ля­ют­ся уни­каль­ны­ми, а пред­став­ля­ют со­бой се­мей­ст­ва, об­ра­зу­ю­щие класс. Все вид­же­ты, при­над­ле­жа­щие к од­но­му клас­-су, об­ла­да­ют оди­на­ко­вы­ми свой­ствами и мо­гут на­сле­до­вать свой­ст­ва сво­их ба­зо­вых клас­сов. По­ми­мо вид­же­тов, пред­став­лен­ных в биб­ли­о­те­ках Photon, про­грам­мист мо­жет ис­поль­зо­вать свои со­б­ст­вен­ные вид­же­ты или пе­ре­не­сен­ные из сре­ды X Window System.

Лис­тин­ги про­грамм уп­рав­ле­ния ре­сур­са­ми вид­же­тов на при­ме­ре зна­ме­ни­то­го «Hello World» вы мо­же­те за­про­сить по e-mail. При­мер ис­поль­зо­ва­ния воз­мож­нос­тей Application Builder для ре­а­ли­за­ции той же са­мой про­грам­мы дан на рис. 5.

Несколько практических аспектов

Ком­пак­тность

Са­ми­ми раз­ра­бот­чи­ка­ми Photon рек­ла­ми­ру­ет­ся как гра­фи­чес­кая обо­лоч­ка для встро­ен­ных сис­тем (embedded systems) [5], [6], [7]. Ско­рее все­го, са­мо по­ня­тие «встро­ен­ные сис­те­мы» тре­бу­ет не­ко­то­рой кон­кре­ти­за­ции. Речь идет о лю­бой ре­а­ли­за­ции компь­юте­ра, от­лич­ной от той, ко­то­рую вы ви­ди­те на сво­ем сто­ле. Под эту клас­си­фи­ка­цию по­па­да­ют, в ос­нов­ном, компь­юте­ры с ог­ра­ни­чен­ны­ми ре­сур­са­ми па­мя­ти, как дис­ко­вой, так и опе­ра­тив­ной.

Оче­вид­но, что ус­та­нов­ка 16-32 Мбайт ОЗУ на про­мыш­лен­ный кон­трол­лер толь­ко для воз­мож­нос­ти ви­зу­а­ли­за­ции про­цес­са в X Window System бы­ла бы не­поз­во­ли­тель­ной ро­скошью. Но на до­бав­ле­ние 1-2 Мбайт ра­ди воз­мож­нос­ти по­лу­чить удоб­ный гра­фи­чес­кий ин­тер­фейс, ве­ро­ят­нее все­го, со­гла­сят­ся мно­гие.

Так, на­при­мер, не­об­хо­ди­мый для ра­бо­ты поль­зо­ва­тель­с­кой про­грам­мы на­бор, вклю­ча­ю­щий яд­ро Photon, гра­фи­чес­кий драй­вер и ад­ми­нис­тра­тор окон, за­ни­ма­ет не бо­лее 360 К ОЗУ.

Мас­шта­би­ру­е­мость

Мо­дуль­ная ар­хи­тек­ту­ра Photon поз­во­ля­ет на­стра­и­вать сис­те­му по ва­ше­му тре­бо­ва­нию. На­при­мер, ког­да вы не осо­бен­но ог­ра­ни­че­ны в ап­па­рат­ных ре­сур­сах, то есть ра­бо­та­е­те на компь­юте­ре с 4-8 Мбайт ОЗУ, то лег­ко мо­же­те се­бе поз­во­лить ис­поль­зо­вать ме­нед­жер ра­бо­че­го сто­ла (Photon Desktop Manager) ли­бо свои сер­вис­ные ути­ли­ты. А про­грам­му, раз­ра­бо­тан­ную для мощ­ной ап­па­рат­ной плат­фор­мы, мож­но ис­поль­зо­вать в сре­де с ог­ра­ни­чен­ны­ми ре­сур­са­ми без из­ме­не­ния ко­да, от­ка­зав­шись от тех или иных воз­мож­нос­тей.

Быс­тро­дей­ст­вие

Photon дей­стви­тель­но мо­жет сни­зить сто­и­мость ва­ше­го про­ек­та. Он до­сти­га­ет ско­рос­ти вос­про­из­ве­де­ния гра­фи­чес­ких объ­ек­тов на эк­ра­не, срав­ни­мой с быс­тро­дей­стви­ем гра­фи­чес­ко­го драй­ве­ра. Та­ким об­ра­зом, вы мо­же­те в сис­те­ме с 386-м про­цес­со­ром и про­стой VGA-кар­той ра­бо­тать в окон­ной сре­де при­мер­но с та­ким же уров­нем ком­фор­та, как на 486DX2 в сре­де MS Windows.

Взаимодействие с другими графическими средами

Как пос­ту­пить в си­ту­а­ции, ес­ли поль­зо­ва­тель ра­бо­та­ет в дру­гой гра­фи­чес­кой сре­де? Вы мо­же­те ото­б­ра­жать ок­на, со­здан­ные в Photon в та­ких обо­лоч­ках, как X Window System и MS Windows. Для это­го про­сто за­пус­ка­ет­ся до­пол­ни­тель­ная ути­ли­та, пе­ре­на­прав­ля­ю­щая со­бы­тия Photon в дру­гую сре­ду. ●

Рекомендуемая литература

  1. Valerie Quercia and Tim O’Reilly. X Window System User’s Guide/Vol. 3. — Canada: QNX Software Systems Ltd. , 1993. 
  2. Photon microGUI. Programer’s Guide.- Canada: QNX Software Systems Ltd., 1995.
  3. Макарьев К., Кондратюк А. Знакомство с WATCOM C для QNX// Монитор. – 1994. — № 5. — С. 58— 66.
  4. Dan Hildebrand. Building GUI Applications for QNX// QNXnews.- 1993. — Vol. 7. — № 4. — P. 30-31.
  5. Dan Hildebrand. Project Photon — Embedded Windowing for QNX //QNXnews. — 1993. — Vol. 7. — № 4. — P. 17-22.
  6. Rob Oakley. QNX Microkernel Technology: A Scalable Approach to Realtime Distributed and Embedded Systems. – Canada: QNX Software Systems Ltd. , 1994.
  7. It’s Small, It’s Scalable, and It Connects Seamlessly to Desktop GUIs — It’s the Photon microGUI!// QNXnews. — 1995. — Vol. 9. — № 2. — P. 7-10.
  8. QNX System Architecture. — Canada: QNX Software Systems Ltd., 1995.
С.В. Ющенко — технический директор фирмы SWD RealTime Systems

© СТА-ПРЕСС, 2025

Если вам понравился материал, кликните значок — вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал —не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!

31.12.1995 1311 0
Комментарии
Рекомендуем
Физический ИИ – будущее промышленной автоматизации

Физический ИИ – будущее промышленной автоматизации

Технологические прорывы раздвигают границы – задачи, которые когда-то были слишком сложными или дорогостоящими для автоматизации, теперь являются как технически выполнимыми, так и экономически жизнеспособными. Хотя традиционные промышленные роботы уже давно являются фундаментом автоматизации, их развитие на протяжении длительного времени сдерживалось ограниченной способностью к адаптации, а также высокими затратами на интеграцию и перенастройку под новые задачи. Сегодня промышленность вступает в качественно новую эпоху робототехники, в которой ключевую роль играют интеллектуальность и гибкость систем, обеспеченные конвергенцией передовых аппаратных решений, искусственного интеллекта и технологий компьютерного зрения. В совокупности эти факторы формируют принципиально новые возможности для применения робототехнических систем.
04.05.2026 СТА №2/2026 144 0
Умная система видеоаналитики на основе встраиваемого ИИ

Умная система видеоаналитики на основе встраиваемого ИИ

В статье рассматривается архитектура интеллектуальной системы видеонаблюдения на базе встраиваемого искусственного интеллекта, ориентированной на обнаружение, подсчёт и отслеживание людей в реальном времени. Предложена распределённая конвейерная архитектура обработки видеопотоков с использованием нейронной сети MobileNet-SSD и специализированных аппаратных ускорителей VPU. Описаны аппаратно-программные компоненты системы, методы предварительной и постобработки данных, а также алгоритмы отслеживания объектов на основе фильтров Калмана. Приведён практический пример реализации в промышленной системе контроля опасных зон и обсуждены преимущества пограничных вычислений, включая низкую задержку, энергоэффективность и повышение конфиденциальности данных. Результаты показывают возможность обработки нескольких видеопотоков в реальном времени при низком энергопотреблении, что подтверждает перспективность встраиваемых платформ для интеллектуального видеонаблюдения и систем безопасности.
29.04.2026 СТА №2/2026 234 0

ООО «ИнСАТ»  ИНН 7734682230  erid = 2SDnjdWbKyt
ООО «ИнСАТ»  ИНН 7734682230  erid = 2SDnje2F5cn
  Подписывайтесь на наш канал в Telegram и читайте новости раньше всех! Подписаться