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/
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python