[Python] Script bloccato in python per S60

De Santis Luca farolfo a hotmail.com
Ven 25 Gen 2008 15:23:13 CET


Buongiorno a tutti
 
Ho un problema con uno script python per S60 su un nokia 6630. Sto facendo un applicazione che comunica con il pc tramite bluetooth per telefonare e ricevere messaggi tramite il bluetooth del telefono. Ho fatto questo script (postato di seguito e funziona tutto bene. Solo che al primo invio di un messgiio dal telefono al pc questo funziona bene, appena prova a fare il secondo invio rimane bloccato l'interprete python e devo spegnrere il cellulare. Credo sia un problema di comunicazione perché se all'interno dello script sostituisce i comandi di invio al telefono con dei semplici print va tutto a meraviglia.
 
Grazie
 
Luca
 
import socketimport appuifwimport threadimport e32import inboximport locationimport sysinfo
#Assegnazione variabili globaliDebugMode=1conn= Nonei = 0LastBattery=0LastSignal=0LastOperator=""LastPhoneStatus=0
lock = e32.Ao_lock()lockTHR = thread.allocate_lock()
#Definzione Classe telefonoclass JesterPhone:    PhoneModel = ""    PhoneBrand = ""
    #Marca    def GetBrand(self): return "Nokia"
    #Modello    def GetModel(self): try:     PhoneResp=sysinfo.sw_version()     firmware = PhoneResp.split(' ')[3]     mapping = {     'RM-51': '3230',     'RM-38': '3250',     'NHM-10': '3600',     'NHM-10X': '3620',     'NHL-8': '3650',     'NHL-8X': '3660',     'RM-25': '6260',     'RM-29': '6260b',     'NHL-10': '6600',     'NHL-12': '6620',     'NHL-12X': '6620',     'RM-1': '6630',     'RH-67': '6670',     'RH-68': '6670b',     'RM-36': '6680',     'RM-57': '6681',     'RM-58': '6682',     'RH-51': '7610',     'RH-52': '7610b',     'NHL-2NA': '7650',     'RM-49': 'E60-1',     'RM-89': 'E61-1',     'RM-10': 'E70-1',     'RM-24': 'E70-?',     'NEM-4': 'N-Gage',     'RH-29': 'N-Gage QD (asia/europe)',     'RH-47': 'N-Gage QD (americas)',     'RM-84': 'N70-1',     'RM-99': 'N70-5',     'RM-67': 'N71-1',     'RM-112': 'N71-5',     'RM-91': 'N80-3',     'RM-92': 'N80-1',     'RM-42': 'N90-1',     'RM-43': 'N91-1',     'RM-158': 'N91-5' }     return "Nokia "+mapping[firmware] except:     return "notfound"
    #Inizializzazione classe telefono
    def InitMe(self): self.PhoneBrand=self.GetBrand() self.PhoneModel=self.GetModel()
#Avvio del server RFCOMMdef StartServer():    global conn    server = socket.socket(socket.AF_BT, socket.SOCK_STREAM)    channel = socket.bt_rfcomm_get_available_server_channel(server)    server.bind(("", channel))    server.listen(1)    socket.bt_advertise_service(u"JesterPlugIn", server, True, socket.RFCOMM)    socket.set_security(server, socket.AUTH | socket.AUTHOR)    print "- Waiting for clients..."    conn, client_addr = server.accept()    print "- Jester connected with phone"    #Aggiorna ststo telefonodef GetPhoneInfo():
    RefFlag=0    RefState=0
    RetOper=location.gsm_location()    SignalDisp=sysinfo.signal()    BatteryDisp=sysinfo.battery()    Operator=str(RetOper[0])+str(RetOper[1])
    global LastBattery    global LastSignal    global LastOperator
    if LastBattery != BatteryDisp:    LastBattery=BatteryDisp    RefFlag=1
    if LastSignal != SignalDisp:    LastSignal=SignalDisp    RefFlag=1
    if LastOperator != Operator:    LastOperator=Operator    RefFlag=1
    if RefFlag==1:        print "  Signal   "+str(LastSignal)        print "  Battery  "+str(LastBattery)        print "  Operator "+str(LastOperator)            return RefFlag
def receive_msg(fd):    reply = fd.readline()    print "- FromJester: " + reply
def send_msg(fd,msg):    print >> fd, msg    print "- ToJester  : " + msg
def talk(msg):    try:    fd = conn.makefile("rw", 0)    send_msg(fd,msg)    except:    appuifw.note(u"Connection lost", "info")    if conn:        conn.close()           print "Bye!"
def Listen(client):    try: if client:     print "- Init listen port sevice"     fd = client.makefile("rw", 0) while True:     receive_msg(fd)    except: appuifw.note(u"Connection lost", "info") if client: client.close() print "Bye!"
def message_received(msg_id):    box = inbox.Inbox()    talk("New message incoming")
def Daemon():    global i    while(1):     lockTHR.acquire()     e32.ao_sleep(10)     TmpInfo=GetPhoneInfo()        if TmpInfo==1:            ToSend="StatChn:"+str(LastSignal)+";"+str(LastBattery)+";"+str(LastOperator)            talk(ToSend)     #CheckPhoneStatus()     i+=1     lockTHR.release()
#Inizio programma
MainPhone=JesterPhone()
StartServer()
print "- Init SMS Notification service"box = inbox.Inbox()box.bind(message_received)
thread.start_new_thread(Daemon, ())print "- Init Timer Daemon Class"
print "- Detect phone properties"MainPhone.InitMe()talk("conok:"+MainPhone.PhoneBrand+";"+MainPhone.PhoneModel)
thread.start_new_thread(Listen(conn), ())print "- Waiting for events"
lock.wait()
print "- Jester GSM Monitor Stop"
_________________________________________________________________
Scarica GRATIS le tue emoticon preferite!
http://intrattenimento.it.msn.com/emoticon/
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20080125/2e181062/attachment.htm 


More information about the Python mailing list