NASZE SERWISY:    ANDROID   LINUX   MAEMO   SYMBIAN   WEBOS




Hosting sponsoruje:



GRIN3 - polskie fonty

Profesjonalne czcionki z polskimi znakami - czcionki.com

OpenMobile on Facebook


 

[S60v3] Zabawy z Pythonem

Odpowiednie forum do zadawania pytań dotyczących rozpoczęcia programowania.

[S60v3] Zabawy z Pythonem

Postprzez issa » 8 czerwca 2008, o 20:53

Witam.
Ostatnio widziałem temat na forum dotyczący wyłaczania dźwięku kamery przez nakładki na symbiana. Uczę się Pythona , bawię się szczególnie PyS60 , napisałem taki malutki skrypcik , który być może kogoś zainteresuje , służący do robienia zadanej ilości dyskretnych zdjęć.

Program można sobie napisać w dowolnym edytorze dodając rozszerzenie .py , instalując oczywiście w folderze Python , uruchamiając przez "Run script" , sam piszę skrypty w Pythn EDitor (PED - polecam).

import camera , appuifw
a=1 ; liczb = appuifw.query (u"Podaj liczbe zdjec:" , "number")
while a<liczb:
fotka = u"e:\\zdjecie"+str(a)+".jpg"
foto = camera.take_photo()
foto = save (fotka)
a=a+1
else:
appuifw.note (u"Gotowe")

Importuję moduł interfejsu graficznego oraz moduł kamery
ustawiam początek pętli na 1 , zmiennej liczb przypisuję odpowiedź uzyskaną z wywołania funkcji query
string fotka wskazuje miejsce zapisu kolejny fotek , w tym wypadku jest to karta , oczywiście można wpisać c lub e:\\WybranyFolder\\zdjecie...
na rzecz zmiennej foto wywołuję funkcję take_photo() z modułu camera
na rzecz zmiennej foto wywołuje atrybut save
kolejna fotka...
note/notka "Gotowe"


Oczywiście opcjonalnie dodac można pytanie o wybraną rozdzielczość , albo ustawić domyśnie w skrypcie jako argument funckji take_photo( arg ) , dostepne dla danego modelu rozdzielczości uzyskuje się wywołując funkcję image_sizes z modułu camera.
Pozdrawiam i życzę miłej zabawy z Pythonem :)
issa
10%
10%
 
Posty: 49
Dołączył(a): 11 sierpnia 2006, o 20:13
    WindowsXPOpera

Re: [S60v3] Zabawy z Pythonem

Postprzez rupek » 8 czerwca 2008, o 22:54

wstawiaj kod pythona w znaczniki <code></code>, bo jak dobrze wiesz w pythonie ogromną rolę mają wcięcia, czyli formatowanie.
rupek
1%
1%
 
Posty: 21
Dołączył(a): 15 kwietnia 2008, o 18:47
    LinuxOpera

Re: [S60v3] Zabawy z Pythonem

Postprzez issa » 8 czerwca 2008, o 23:45

Byly wciecia w blokach kodu , niestety podczas wysylania postu sie przyslowiowo "zmyly". W kazdym razie dzieki za czujnosc , jestem samoukiem i kazda sugestia jest cenna. Mam nadzieje za jaks rok , poltora w miare dobrze opanowac Pythona. Po bardzo dlugiej , kilkunastoletniej przerwie jaka mialem w programowaniu w Basicu i assemblerze , zetkniecie z Pythonem bylo jak zderzenie ze sciana. Gora ksiazek i sporo nauki przedemna.
issa
10%
10%
 
Posty: 49
Dołączył(a): 11 sierpnia 2006, o 20:13
    SymbianOSSafari

Re: [S60v3] Zabawy z Pythonem

Postprzez rupek » 9 czerwca 2008, o 07:03

Nie chcę się tutaj chwalić, ale jak będziesz miał jakiś problem w pythonie, to napisz na priv a postaram się pomóc
rupek
1%
1%
 
Posty: 21
Dołączył(a): 15 kwietnia 2008, o 18:47
    LinuxOpera

Re: [S60v3] Zabawy z Pythonem

Postprzez Bo$s » 9 czerwca 2008, o 10:40

Byly wciecia w blokach kodu , niestety podczas wysylania postu sie przyslowiowo "zmyly".

Wklejaj kod w znacznikach
Kod: Zaznacz cały
[code][/code]
Avatar użytkownika
Bo$s
Moderator
Moderator
 
Posty: 7904
Dołączył(a): 23 grudnia 2005, o 11:02
Lokalizacja: Tarnowskie Góry
Mod.tel.: Samsung Galaxy S III
    WindowsXPFirefox

Re: [S60v3] Zabawy z Pythonem

Postprzez issa » 10 czerwca 2008, o 17:47

Apropos funkcji take_photo () , wyciągnąłem przez Active File cały moduł camera.py. Pomijając całę definicję funkcji , sama funkcja , ma zdefiniowane w definicji tak zwane parametry domyślne tj. , jeśli nie zostaną one podane przy wywoływaniu funkcji , przyjmą one parametry podane w definicji. W module ma ona następujący wygląd:

def take_photo(mode='RGB16',size=(640, 480),zoom=0,flash='none',
exposure='auto',white_balance='auto',position=0)

W kodzie modułu podane są słowniki: modemap , flashmap , whitebalance , exposure , w przykładowym słowniku modemap mamy podane klucze: RGB , RGB16 itp , które oznaczają liczbę kolorów zdjęcia , RBG = 16 milionów , RGB16 = 64 tysiące , flash ze słownika flashmap może przyjmować wartość "none" , auto (w skrypcie powyżej flash był wyłaczony) itp , słownik whitebalancemap ma klucze:i wartości , auto , 'daylight':_camera.EWBDaylight, 'cloudy':_camera.EWBCloudy , 'tungsten':_camera.EWBTungsten,'fluorescent''...

Warto poeksperymentować z powyższym skryptem , wedle powyższych ustawień , jak widać z definicji funkcji , rozdzielczość jest ustawiona na (640,480) , dostępne można poznać wywołująć camera.image_sizes() , w n95 będzie oczywiście także krotka (x , y) odpowiadają najwyższej rozdzielczości 5 mp.
Na marginesie dodam , że obsługa kamery możliwa jest także przez Pythona przy otwartej e90.
Pozdrawiam.
Ps. A modułów w C:\\RESOURCE znajdziecie bardzo dużo:-)
issa
10%
10%
 
Posty: 49
Dołączył(a): 11 sierpnia 2006, o 20:13
    WindowsXPOpera

Re: [S60v3] Zabawy z Pythonem

Postprzez lukast008 » 11 czerwca 2008, o 19:00

Moglby ktos podac link do najnowszego pythona 2.5.2
lukast008
1%
1%
 
Posty: 17
Dołączył(a): 31 maja 2008, o 11:50
    WindowsXPFirefox

Re: [S60v3] Zabawy z Pythonem

Postprzez Bo$s » 11 czerwca 2008, o 21:47

lukast008 napisał(a):Moglby ktos podac link do najnowszego pythona 2.5.2

No faktycznie, wpisać "python 2.5.2" na http://www.google.pl to wysiłek nie z tej ziemi...
Avatar użytkownika
Bo$s
Moderator
Moderator
 
Posty: 7904
Dołączył(a): 23 grudnia 2005, o 11:02
Lokalizacja: Tarnowskie Góry
Mod.tel.: Samsung Galaxy S III
    WindowsXPFirefox

Re: [S60v3] Zabawy z Pythonem

Postprzez cienkibolo » 12 czerwca 2008, o 15:39

Zainstalowałem sobie najnowszego pyS60 w wersji PythonForS60_1_4_3_3rdEd.SIS na N82.
Do tego doszedł Ped_2.19_beta_3rdEd.sis (fajna rzecz, podoba mi się).
Wklepałem skrypt z pierwszego postu, odpowiednio zmieniając wcięcia, jak to w pythonie.
Odpalam i ...
Kod: Zaznacz cały
>>> ===== RESTART =====
>>>
Traceback (most recent call last):
  File "ped.py", line 908, in run_click
  File "E:\down\s60\aparat.py", line 1, in ?
    import camera , appuifw
  File "c:\resource\site.py", line 97, in platsec_import
    return _original_import(name, globals, locals, fromlist)
  File "c:\resource\camera.py", line 24, in ?
    _my_camera=_camera.Camera(0)
SymbianError: [Errno -46] KErrPermissionDenied
>>> 


Co robię źle?
cienkibolo
1%
1%
 
Posty: 5
Dołączył(a): 28 marca 2008, o 00:30
    WindowsXPFirefox

Re: [S60v3] Zabawy z Pythonem

Postprzez issa » 12 czerwca 2008, o 17:19

Przyznaję , że z obsługą błędów u mnie bardzo słabo i raczej nie pomogę. Odpalając skryptY przez PED bardzo często się wysypuje , spróbuj może jednak przez Pythona i "Run script". Jedyne co mogę jeszcze dodac na potwierdzenie tego , że działa , to zrzutka skryptu i dodatkowe zrzutki z e90. Strona http://www.edge.moblog.pl , tam zaraz wrzucę zrzutki.
issa
10%
10%
 
Posty: 49
Dołączył(a): 11 sierpnia 2006, o 20:13
    WindowsXPOpera

Re: [S60v3] Zabawy z Pythonem

Postprzez cienkibolo » 12 czerwca 2008, o 22:23

Spróbowałem przez "Run Script" zamiast "Run" w edytorze i skrypt zaczął się wykonywać. Pyta o ilość zdjęć i potem niestety znów wysypka :kwasny: :

Kod: Zaznacz cały
>>> Traceback (most recent call last):
  File "ped.py", line 1649, in runscript_click
  File "E:\down\s60\aparat.py", line 6, in ?
    foto = camera.take_photo()
AttributeError: 'module' object has no attribute 'take_photo'


A możesz zapodać której wersji pyS60 używasz?
cienkibolo
1%
1%
 
Posty: 5
Dołączył(a): 28 marca 2008, o 00:30
    WindowsXPFirefox

Re: [S60v3] Zabawy z Pythonem

Postprzez issa » 13 czerwca 2008, o 11:35

Wygląda według opisu błędu , że nie masz w module funkcji take_photo () , to już jest jasne. Mam Pys60 ze strony http://sourceforge.net/project/showfile ... _id=154155 , wersja 1_4_3 Dostępne w module funkcje możesz sprawdzić wpisaując w trybie interaktywnym

>>>import camera
>>>dir (camera)

Co ciekawe wedle kodu źródłowego , moduł camera importuje jeszcze modul _camera (napisany w C?). Jak to ktoś ładnie napisał , funkcje "opakowują obliczenia i oddzielają logikę wysokiego poziomu (w tym wypadku zrozumiałe dla każdego take_photo() ) , od szczegółów". Gdyby ktoś chciał sobie postudiowac kod tej akurat funkcji , to ma ona następującą postać:
Kod: Zaznacz cały
>def take_photo(mode='RGB16',size=(640, 480),zoom=0,flash='none',
>                exposure='auto',white_balance='auto',position=0):
>     s=-1
>     if (position>=number_of_devices):
>         raise ValueError, "Camera postion not supported"
>     for i in range(device[position].max_image_size()):
>         if device[position].image_size(modemap[mode], i)==size:
>             s=i
>             break
>     if s==-1:
>         raise ValueError, "Size not supported for camera"
>
>     if _my_camera.taking_photo():
>         raise RuntimeError, "Photo request ongoing"
>
>     if mode=='JPEG_Exif' or mode=='JPEG_JFIF':
>         return _my_camera.take_photo(modemap[mode],s,
>                                      zoom,flashmap[flash],
>                                      exposuremap[exposure],
>                                      whitebalancemap[white_balance],
>                                      position)
>     else:
>         return graphics.Image.from_cfbsbitmap(_my_camera.take_photo(modemap[mode],s,
>                                                                     zoom,flashmap[flash],
>                                                                     exposuremap[exposure],
>                                                                     whitebalancemap[white_balance],
>                                                                     position))

"

issa
10%
10%
 
Posty: 49
Dołączył(a): 11 sierpnia 2006, o 20:13
    WindowsXPOpera

Re: [S60v3] Zabawy z Pythonem

Postprzez reaper7 » 30 lipca 2008, o 21:51

pytanko...
jak sprawdzić za pomocą pythona jakie IP otrzymaliśmy z DHCP po podłączeniu do AP...
znalazłem taki skrypt:
Kod: Zaznacz cały
import socket
ap_id = socket.select_access_point()
apo = socket.access_point(ap_id)
apo.start()
print "PHONE IP IS", apo.ip()

ale u mnie działa tylko w przypadku kiedy wybiorę połączenie inne niż wlan(np gprs)
przy wlan IP zawsze jest 196.254.13.225
Avatar użytkownika
reaper7
1%
1%
 
Posty: 23
Dołączył(a): 14 kwietnia 2008, o 08:37
    WindowsXPFirefox

Re: [S60v3] Zabawy z Pythonem

Postprzez issa » 6 sierpnia 2008, o 23:05

U mnie pokazuje 192.168.2.2 , mam włączony wlan przez Joiku Spot i sprawdzam IP wybierając sieć przez w/w skrypt w Pythonie w drugim telefonie.
Zmieniłem troszkę powyższy skrypt , bo zainteresowało mnie , dlaczego się wysypuje przy wyborze punktu dostepu który nie może być aktywny , w moim przypadku np. Playowy internet , czy Erowy TT (mam Blue):

import socket
ap_id = socket.select_access_point()
print ap_id
apo = socket.access_point(ap_id)
print type (apo)
apo.start()
print "PHONE IP IS", apo.ip()

, czy można by go było tego łądnie zamknąć przez try ... except , ale nie wiem jakiego rodzaju zgłasza wyjątek (Environment Error , OSEror?). Nie wiem też na jakiej zasadzie wywyołanie funkcji select_access_point przydziela numery punktom dostępu , sprawdziłem przy okazji jakiego typu jest wartośc zwracana przez fukcję access_point () , jest to typ _ap.AP
W kodzie modułu socket nie modę znaleźć funckji select_access_point() :zdziwko:
issa
10%
10%
 
Posty: 49
Dołączył(a): 11 sierpnia 2006, o 20:13
    WindowsXPOpera

Re: [S60v3] Zabawy z Pythonem

Postprzez issa » 6 sierpnia 2008, o 23:18

Walczyłem przez prawie dwa miesiące z nauką Javy , przebiłem się klasy , specyfikatory dostępu , konstruktory , klasy potomne , przesłanianie , składowe statyczne , klasy abstrakcyjne i niestety mam wrażenie , że dalej nic kompletnie nie wiem , czy raczej nie byłbym w stanie przekuć wiedzy teoretycznej na jakikolwiek midlet. Jest naprawdę kilka ciekawych pozycji dotyczących java2me , ale jak piszę mimo przebrnięcia przec niemal cały praktyczny kurs z narawdę dobrej książki Marcina Lisa (to nie reklama) , po prostu nie daję rady. Kiedyś na bodajże niezłym blogu flex2.blogspot.com przeczytałem , że Nokia promuje Pythona jako łatwy do opanowania język w przeciwieństwie do Symbian c++ czy własnie java2me i chyba (raczej na pewno) coś w tym jest... Na pewno Python da porządne podwaliny pod dalszą naukę.
issa
10%
10%
 
Posty: 49
Dołączył(a): 11 sierpnia 2006, o 20:13
    WindowsXPOpera

Następna strona

Powrót do Od czego zacząć?

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość

cron