Python ir telefonas

P
  • 5 Kov '10

Sveiki. As turiu tokia programa, kuri privercia telefona skambint (valdymas vyksta per usb naudojant at komandas) ir grot tam tikra faila, kitas telefonas atsiliepia ir iraso ta faila. Gal kas zino kaip padaryt su python, kad jis pradetu irasinet, kai failas pradedamas grot, o ne tada kai paleidziama programa? Dabar as naudoju time.sleep() funkcija, uzdedu kokias 9s kol ivyksta sujungimas ir pakeliamas ragelis. Kaip galima tiksliau padaryt?

S
  • 6 Kov '10

Sakei turi „tokią programą“, kokią?

P
  • 6 Kov '10

Turiu pasirases programa python kalba, kuri privercia telefona skambint, kita telefona atsiliept ir irasyt garsa

S
  • 6 Kov '10

Bet kokiu atveju nematant tos programos kodo, niekuo negaliu padėti. Be to AT komandos priklauso ir nuo konkretaus telefono modelio.

Kažkada teko daryti irgi programą, kuris nuskaito SMS žinutes, jas išsaugo ir ištrina visas, kurios buvo išsaugotos. Tam reikalui panaudojau programą gnokii, kuria iškviečiau per os.system() python funkciją.

P
  • 6 Kov '10

Programa, kuri iraso garsa is mic iejimo:
import pyaudio
import wave
import sys

chunk = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 8000
RECORD_SECONDS = 20
WAVE_OUTPUT_FILENAME = "irasas.wav"

p = pyaudio.PyAudio()

stream = p.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
frames_per_buffer = chunk)

print " recording"
all = []
for i in range(0, RATE / chunk
RECORD_SECONDS):
data = stream.read(chunk)
all.append(data)
print "* done recording"

stream.close()
p.terminate()

write data to WAVE file

data = ''.join(all)
wf = wave.open(WAVE_OUTPUT_FILENAME, 'w')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(data)
print "padarytas irasas"
wf.close()

Kaip padaryt, kad ji irasytu tik kai pradedamas grot garso failas? Nes dabar bandau tik uzdedamas time.sleep().

S
  • 6 Kov '10

Kaip suprantu visas įrašymas ir pan vyksta AT komandų dėka? Tai tokiu atveju AT komandų dėka ir reikėtų nustatyti, kad pradėti įrašinėti. Kokias AT komandas naudoti, tikriausiai priklauso nuo telefono modelio.

P
  • 8 Kov '10

irasymas ne su AT komandom. Irasymas vyksta su anksciau parodyta programa, su AT komandom as tik atsiliepiu ir skambinu ir pan, bet kai atsiliepiu kitam gale dar nebuna pradetas grot garso failas ir pradzioj iraso kelias sekundes tylos man. Galvoju kaip isvengt tos tylos.

P
  • 18 Kov '10

Gal kas zinote, kaip nutraukti sios funkcijos veikima, kai baigiamas groti failas?
music = pyglet.resource.media('balsas.wav')
music.play()

pyglet.app.run()

S
  • 18 Kov '10

Jei yra galimybė pasileisti ipython, tai siūlau taip ir padaryti ir išsiaiškinti, kaip veikia music objektas rašant music. ir spaudžiant TAB, kad pamatytum visus objekto metodus ir atributus.

Daugiau informacijos apie objektą sužinosi gale parašęs klaustuko simbolį.

P
  • 18 Kov '10

Kaip suprasti "ipython"?

D
  • 18 Kov '10

@Peugeot rašė:
Kaip suprasti "ipython"?

Python`o programavimo aplinka, nežinau kaip tiksliai apibūdint.

sudo apt-get install ipython

idle dar yra, kartu su python`u instaliuojasi. Tiesiog terminale rašyk: idle arba ipython, pasileidus gali programint.

P
  • 19 Kov '10

@Deluxer rašė:

@Peugeot rašė:
Kaip suprasti "ipython"?

Python`o programavimo aplinka, nežinau kaip tiksliai apibūdint.

sudo apt-get install ipython

idle dar yra, kartu su python`u instaliuojasi. Tiesiog terminale rašyk: idle arba ipython, pasileidus gali programint.

O jeigu pas mane xp? Nelabai kazkaip pavyksta pasileist

S
  • 19 Kov '10

Hm, paskutinį kartą Windows'us esu naudojęs apie 2005'uosius metus, tais laikais dar neprogramavau Python'u, tai neįsivaizduoju, kaip diegiamas ipython Windows'uose.

Į Ubuntu ipython įdiegiamas paprastai:

$ sudo apt-get install ipython

Tai galiu nebent tik pasiūlyti dirbti iš Ubuntu Live CD.

P
  • 22 Kov '10

nepavyksta rast atsakymo. Sustabdymas lyg utretu but re alizuojamas pyglet.app.close(), bet vis tiek po failo pragrojimo nepavyksta vykdyti kitu veiksmu, uzsisuka tarsi koks loop'as.

S
  • 22 Kov '10

Gal gali pateikti veikiantį kodo gabalą? Tada galėčiau pasileisti pas save ir patestuoti.

P
  • 22 Kov '10

Veikianti dalis:
import pyglet
music = pyglet.resource.media('garso_irasas.wav')
music.play()

pyglet.app.run()

Tik reikes jauciu parsisiust pyglet biblioteka. Na ir garso irasa koki susirast, lygtais ir mp3 paleidzia

S
  • 23 Kov '10

Štai, parašiau skriptą, kuris paleidžia tnt.mp3 failą ir nustoja groti po 10 sekundžių.

#!/usr/bin/env python

import pyglet

class Play:

    def __init__(self):
        source = pyglet.media.load('tnt.mp3')
        self.player = pyglet.media.Player()
        self.player.queue(source)
        self.player.play()

        pyglet.clock.schedule_once(self.stop, 10)
        pyglet.app.run()

    def stop(self, sec):
        self.player.pause()
        pyglet.app.exit()


if __name__ == '__main__':
    Play()