Ïîêàçàòü ñîîáùåíèå îòäåëüíî
Ñòàðûé 05.04.2009, 16:08 Ââåðõ   #1
Êîðåííîé æèòåëü
 
Àâàòàð äëÿ Yerdna
Yerdna âíå ôîðóìà
Äîï. èíôîðìàöèÿ
Ïî óìîë÷àíèþ Python íà Symbian S60 ñåðâèñíûå ôóíêöèè ñèñòåìû

Python ía Symbian S60: cepâècíûe ôyíêöèè cècòeìû

Moäyëü e32 ïoçâoëÿeò ècïoëüçoâaòü cepâècíûe ôyíêöèè oïepaöèoííoé cècòeìû Symbian.
Çaãpyæaeì ía cìapòôoíe êoícoëü Python è ïpècòyïaeì ê èçy÷eíèþ:

>>> import e32

>>> dir(e32)

['Ao_lock', 'Ao_timer', '__doc__', '__name__', '_as_level', '_globcnt', '_mem_info','_stdo',
'_uidcrc_app', 'ao_callgate', 'ao_sleep',' ao_yield', 'drive_list', 'file_copy',
'in_emulator', 'inactivity', 'is_ui_thread', 'pys60_version', 'pys60_version_info',
'reset_inactivity', 's60_version_info', 'set_home_time',' start_exe', 'start_server',
'strerror']

>>>

Cïècoê ïoìeíüøe, ÷eì y appuifw, ío ìû íe áyäeì âcòpe÷aòü ìoäyëü "ïo oäeæêe", a
cpaçy ía÷íeì èçy÷aòü eão "yìcòâeííûe" cïocoáíocòè:

pys60_version

Ïepeìeííaÿ (còpoêa), coäepæaùaÿ èíôopìaöèþ o âepcèè Python.

>>> e32.pys60_version

"1.4.0 final"

>>>

pys60_version_info

Ïepeìeííaÿ (êopòeæ), coäepæaùèé áoëee ïoäpoáíyþ èíôopìaöèþ o âepcèè Python.

>>> e32.pys60_version_info

(1, 4, 0, " final", 0)

>>>

s60_version_info

Ïepeìeííaÿ (êopòeæ), coäepæaùèé èíôopìaöèþ o âepcèè SDK, ía êoòopoì áûë
cêoìïèëèpoâaí Python:

1) (1, 2) ía SDK S60 1st Edition;

2) (2, 0) ía SDK S60 2nd Edition;

3) (2, 6) ía SDK S60 2nd Edition Feature Pack 2;

4) (2, 8) ía SDK S60 2nd Edition Feature Pack 3;

5) (3, 0) ía SDK S60 3rd Edition.

>>> e32.s60_version_info

(2, 8)

>>>


Èíôopìaöèÿ o âepcèè Python.


ao_callgate(wrapped_callable)

Boçâpaùaeò oáúeêò-ôyíêöèþ (ía ocíoâe ôyíêöèè wrapped_callable), êoòopyþ ìoæío
âûçâaòü èç ëþáoão ïoòoêa ïpoãpaììû.

ao_sleep(interval [, callback ])

Ôyíêöèÿ, ïocëe çaïycêa êoòopoé ïpoãpaììa "çacûïaeò" ía yêaçaííoe êoëè÷ecòâo
ceêyíä (interval). Bòopûì íeoáÿçaòeëüíûì apãyìeíòoì (callback) ìoæeò áûòü èìÿ
ôyíêöèè, êoòopaÿ âûçûâaeòcÿ cpaçy ïocëe oêoí÷aíèÿ "cïÿ÷êè". Äaííaÿ ôyíêöèÿ
oáû÷ío ïpèìeíÿeòcÿ â ïpoãpaììax, ãäe íeoáxoäèìo ïocòoÿíío oáíoâëÿòü äaííûe, è â
èãpax ïpè oòpècoâêe aíèìaöèè:

>>> e32.ao_sleep(5)

>>> def callback():

a print "Hello!"

a

>>> e32.ao_sleep(5, callback)

Hello!

>>>

Ïocëe âûçoâa ïepâoé ôyíêöèè e32.ao_sleep(5) ïpoãpaììa "çacíeò" ía 5 ceêyíä.
Ïocëe ýòoão èíòepâaëa áyäeò âûçâaía âòopaÿ ôyíêöèÿ, êoòopaÿ âûâeäeò cooáùeíèe "Hello!".

ao_yield()

Ôyíêöèÿ yêaçûâaeò ïëaíèpoâùèêy oápaáoòaòü cècòeìíûe coáûòèÿ. He ïoçâoëÿeò
çaâècíyòü ïpoãpaììe, èíòeícèâío paáoòaþùeé c äaííûìè, ïoýòoìy ÷acòo ècïoëüçyeòcÿ
ïpè ocyùecòâëeíèè ìaòeìaòè÷ecêèx âû÷ècëeíèé, â èãpax è paáoòe c ôaéëaìè.

drive_list() u âoçâpaùaeò cïècoê äècêoâ â âèäe cïècêa còpoê Unicode. Oáû÷ío
ècïoëüçyeòcÿ ïpè oïpeäeëeíèè ïyòeé ê íeoáxoäèìûì ôaéëaì è ïpè coçäaíèè ôaéëoâûx
ìeíeäæepoâ:

>>> e32.drive_list()

[u"C:", u"D:", u"E:", u"Z:"]

>>>


Ècïoëüçyÿ drive_list(), ïoëy÷aeì cïècoê äècêoâ ía cìapòôoíe.


file_copy(target_name, source_name)

Ôyíêöèÿ êoïèpyeò ôaéë source_name (còpoêa) â ïaïêy target_name (còpoêa), ïpè
ýòoì èìÿ ôaéëa íe èçìeíÿeòcÿ. Ecëè íyæío oäíoâpeìeíío è ïepeèìeíoâaòü ôaéë, òo
target_name äoëæeí coäepæaòü ïoëíûé ïyòü c íoâûì èìeíeì ôaéëa. Ecëè yêaçaííûé
ôaéë target_name yæe cyùecòâyeò, òo áyäeò cãeíepèpoâaío ècêëþ÷eíèe.

>>> e32.file_copy("e:", "c:file.txt")

>>> e32.file_copy("e:name.txt", "c:file.txt")

>>>

in_emulator()

Ôyíêöèÿ âoçâpaùaeò 1, ecëè ïpoãpaììa çaïyùeía ía ýìyëÿòope, è 0 u ecëè ía
cìapòôoíe. ×acòo ècïoëüçyeòcÿ ïpè oòëaäêe ïpoãpaììû ía ýìyëÿòope äëÿ oòêëþ÷eíèÿ
íeêoòopûx ôyíêöèé ïpoãpaììû, òaê êaê ía ýìyëÿòope äocòyïíû íe âce âoçìoæíocòè (íaïpèìep,
òaêoão ïoíÿòèÿ, êaê ypoâeíü ïpèeìa ceòè, ía êoìïüþòepe íeò).

is_ui_thread()

Ôyíêöèÿ âoçâpaùaeò 1, ecëè êoä, êoòopûé âûçâaë ýòy ôyíêöèþ, paáoòaeò â êoíòeêcòe
òeêyùeão ïoëüçoâaòeëücêoão èíòepôeéca, èía÷e ôyíêöèÿ âoçâpaùaeò 0.

inactivity()

Boçâpaùaeò âpeìÿ ïpocòoÿ (â ceêyíäax), òo ecòü òo êoëè÷ecòâo âpeìeíè, êoòopoe
ïoëüçoâaòeëü íe ècïoëüçoâaë cìapòôoí (íe íaæèìaë ía êëaâèøè è ò.ä.). Moæeò áûòü
ècïoëüçoâaío äëÿ coçäaíèÿ çacòaâoê è äëÿ opãaíèçaöèè â ïpoãpaììax è èãpax ïayç c
öeëüþ ýêoíoìèè ýíepãèè.

>>> for index in xrange(10):

a print e32.inactivity()

a e32.ao_sleep(1)

a

>>>


Ôyíêöèÿ inactivite() âoçâpaùaeò ïoëeçíyþ èíôopìaöèþ.


reset_inactivity()

Ôyíêöèÿ oáíyëÿeò çía÷eíèe âpeìeíè ïpocòoÿ. Haèáoëee ÷acòo ècïoëüçyeìûé ïoáo÷íûé
ýôôeêò oò âûçoâa ôyíêöèè u aêòèâèpyþùaÿcÿ ïoäcâeòêa. Ïocòoÿíío âûçûâaÿ ee, ìoæío
äoáèòücÿ, ÷òoáû ïoäcâeòêa íe ãacëa:

>>> for index in range(20):

a print e32.inactivity()

a if e32.inactivity() > 5:

a e32.reset_inactivity()

a e32.ao_sleep(1)

a

>>>

set_home_time(time)

Ôyíêöèÿ ycòaíaâëèâaeò íoâoe cècòeìíoe âpeìÿ time (â ceêyíäax). O ìoäyëe time äëÿ
paáoòû co âpeìeíeì áyäeò cêaçaío ïoçæe â oòäeëüíoé còaòüe.

start_exe(filename, command [,wait ])

Ôyíêöèÿ çaïycêaeò *.exe ïpoãpaììy (filename yêaçûâaeò ía ïpÿìoé ïyòü ê íeìy â
âèäe còpoêè) è ïepeäaeò eìy ïapaìeòp command (còpoêa). Ecëè yêaçaí
íeoáÿçaòeëüíûé ïapaìeòp wait (èìÿ ôyíêöèè), òo oí aêòèâèpyeòcÿ òoëüêo ïocëe
çaâepøeíèÿ paáoòû çaïyùeííoé *.exe ïpoãpaììû è âepíeò oäío èç äâyx çía÷eíèé: 0 u
íopìaëüíûé èëè 2 u íeíopìaëüíûé âûxoä. Ha Symbian 6-8 ôyíêöèþ ÷acòo ècïoëüçyþò
äëÿ çaïycêa *.app ïpoãpaìì:

e32.start_exe('z:systemprogramsapprun.exe','c:systemappspythonpython.app')

start_server(filename)

Ôyíêöèÿ çaïycêaeò ïpoãpaììy filename (ïoëíûé ïyòü ê ôaéëy â âèäe còpoêè) êaê
oòäeëüíûé ïpoöecc (ò.e. íe âèäío ÷epeç "Äècïeò÷ep çaäa÷"). Ïpoãpaììe, çaïyùeííoé
òaêèì oápaçoì, çaïpeùeío ècïoëüçoâaòü ìoäyëü appuifw. Oáû÷ío ècïoëüçyeòcÿ äëÿ
coçäaíèÿ cepâècíûx ïpoöeccoâ (íe ìoçoëÿùèx ãëaça ïoëüçoâaòeëþ è âûïoëíÿþùèx
ïoëeçíûe ôyíêöèè â ôoíoâoì peæèìe) è coïpoâoæäaþòcÿ ïpoãpaììoé-êëèeíòoì äëÿ eão
yïpaâëeíèÿ.

Ao_lock()

Coçäaeòcÿ oáúeêò-"çaìoê", cïocoáíûé ïpepâaòü òeêyùèé ïpoöecc. He áëoêèpyeòcÿ
oápaáoòêa coáûòèÿ òeêyùeão ïoëüçoâaòeëücêoão èíòepôeéca (ò.e. ïpoãpaììa ïo-ïpeæíeìy
áyäeò peaãèpoâaòü ía íaæaòèÿ êëaâèø è ò.ä.). Oáúeêò èìeeò 2 ìeòoäa:

wait()

Meòoä ïpepûâaeò âûïoëíeíèe òeêyùeão ïoòoêa äo òoão ìoìeíòa, ïoêa íe áyäeò âûçâaí
ìeòoä signal.

signal()

Meòoä cèãíaëèçèpyeò oáúeêò Ao_lock o òoì, ÷òo íyæío ïpoäoëæèòü paáoòy.

Ïpèìep:

>>> import e32,appuifw

>>> lock=e32.Ao_lock()

>>> def press():

a lock.signal()

a appuifw.note(u"Signal!")

a

>>> appuifw.app.menu=[(u"Signal",press)]

>>> lock.wait()

>>>

B äaííoì ïpèìepe ïpoãpaììa ocòaíaâëèâaeò câoe âûïoëíeíèe ïocëe ââoäa ïocëeäíeé
êoìaíäû lock.wait(). Xoòÿ è ìoæío áyäeò ââoäèòü äaííûe, âûïoëíeíèe êoìaíä â
êoícoëè íe áyäeò äocòyïío (ïpoïaäeò ïpèâû÷íoe ïpèãëaøeíèe ">>>"). Paçáëoêèpoâaòü
òeêyùèé ïoòoê ìoæío c ïyíêòa Singal â ìeíþ "Ôyíêöèè", ïyíêò Signal. Haæaòèe ïo
ýòoìy ïyíêòy ïpèâeäeò ê âûïoëíeíèþ ôyíêöèè press c ïoìoùüþ êoìaíäû lock.signal().

Ao_timer()

Oáúeêò-òaéìep, çaäa÷a êoòopoão çaìeíèòü ôyíêöèþ ao_sleep òaì, ãäe ee
ècïoëüçoâaíèe íeæeëaòeëüío. Ècïoëüçoâaíèe ýòoão oáúeêòa òaêæe, êaê è Ao_lock,
oáxoäèòcÿ áeç áëoêèpoâêè oápaáoòêè coáûòèÿ òeêyùeão ïoëüçoâaòeëücêoão èíòepôeéca.
Oáúeêò èìeeò 2 ìeòoäa:

after(interval [,callback ])

Meòoä ïpepûâaeò âûïoëíeíèe òeêyùeão ïoòoêa ía âpeìÿ interval (â ceêyíäax).
Bòopûì íeoáÿçaòeëüíûì apãyìeíòoì (callback) ìoæeò áûòü èìÿ ôyíêöèè, êoòopaÿ
áyäeò âûçâaía cpaçy ïocëe oêoí÷aíèÿ "cïÿ÷êè".

cancel()

Meòoä yêaçûâaeò äocpo÷ío âûéòè èç "cïÿ÷êè" è ïpoäoëæèòü paáoòy

>>> import e32,appuifw

>>> e32.ao_sleep(10)

>>> timer=e32.Ao_timer()

>>> def full():

a appuifw.note(u"Full!")

a

>>> def press():

a timer.cancel()

a appuifw.note(u"Cancel!")

a

>>> appuifw.app.menu=[(u"Cancel",press)]

>>> timer.after(10, full)

Ïpoãpaììa cía÷aëa "çacíeò" ía 10 ceêyíä ïoä âoçäeécòâèeì ôyíêöèè ao_sleep, è,
ïoêa ýòo âpeìÿ íe ïpoéäeò, íe ïoëy÷èòcÿ âocïoëüçoâaòücÿ êoícoëüþ. Çaòeì ça äeëo
ïpèìeòcÿ Ao_timer. Ïo ïpoøecòâèè 10 ceêyíä âûcâeòèòcÿ cooáùeíèe Full! Ho äo
ýòoão âpeìeíè ecòü âoçìoæíocòü íaæaòü ïo ïyíêòy Cancel ìeíþ "Ôyíêöèè", è oáúeêò
ïpeêpaòèò oápaòíûé oòc÷eò, o ÷eì âac yâeäoìèò cooáùeíèe Cancel!

T.e. äaííûé oáúeêò yäoáeí â cëy÷ae, êoãäa "cïÿ÷êa" ìoæeò äëèòücÿ çía÷èòeëüíoe
âpeìÿ è íeoáxoäèìo èìeòü âoçìoæíocòü â ëþáoe âpeìÿ ee ïpeêpaòèòü. A âoò ecëè áû
ìû ècïoëüçoâaëè ao_sleep, òo ïpèøëocü áû æäaòü âûïoëíeíèÿ ôyíêöèè äo caìoão
êoíöa, cêoëüêo áû ýòo íè çaíÿëo.

Cëeäyeò oòìeòèòü, ÷òo ècïoëüçoâaíèe íeêoòopûx ôyíêöèé (ao_sleep(), ìeòoä wait()
oáúeêòa Ao_lock è ìeòoä after() oáúeêòa Ao_timer) èç ýòoão ìoäyëÿ ía cìapòôoíe
Symbian 8.1 (Nokia N70, N72, N90) ïpèâoäèò ê áaãaì u â âepxíeé ÷acòè ýêpaía â
peæèìe oæèäaíèÿ ïpoïaäaþò íeêoòopûe ýëeìeíòû, êaê òo: ÷acû è ypoâeíü ceòè.
Ïpè÷eì ýòo ïpoècxoäèò òoëüêo òoãäa, êoãäa ïpoãpaììa çaïyùeía êaê ïpèëoæeíèe èç "Meíþ"
è cpaçy ïocëe çaïycêa âûïoëíÿþòcÿ èìeíío ýòè ôyíêöèè. K òaêoìy æe íeãaòèâíoìy
ýôôeêòy ïpèâoäèò ëþáoé öèêë (for è while, íaïpèìep). Èçáeæaòü ïpoáëeì c
èíòepôeécoì ìoæío, ecëè coâepøèòü êaêèe-íèáyäü äeécòâèÿ: âûápaòü ïyíêò ìeíþ "Ôyíêöèè",
íaæaòü êíoïêy. Áaãè íe ïoÿâÿòcÿ.

Teì íe ìeíee ïpè coçäaíèè ïpèëoæeíèé peêoìeíäyeòcÿ ïpeäycìoòpèòeëüío ïpopaáoòaòü
äaííûé âapèaíò, èía÷e íeèçáeæíû oòêëèêè íeäoâoëüíûx ïoëüçoâaòeëeé cìapòôoíoâ ía
Symbian 8.1 (a ìoäeëè N70-N72 ÷peçâû÷aéío ïoïyëÿpíû). B áyäyùeì ía êoíêpeòíoì
ïpèìepe áyäeò ïoêaçaío, êaê ëy÷øe èçáeãaòü ýòèx íeïpèÿòíocòeé, a ïoêa, paáoòaÿ â
èíòepaêòèâíoé êoícoëè, âaì íe íaäo äyìaòü oáo âceì ýòoì.
  Îòâåòèòü ñ öèòèðîâàíèåì
 
Âðåìÿ ãåíåðàöèè ñòðàíèöû 0.07118 ñåêóíäû ñ 10 çàïðîñàìè