Êîðåííîé æèòåëü
Äîï. èíôîðìàöèÿ
|
Ðåãèñòðàöèÿ: 02.03.2009
Ñîîáùåíèé: 148
Ïîáëàãîäàðèë(à): 8
Ïîáëàãîäàðèëè: 71 / 24
|
|
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ì.
|