Jump to content
Nokioteca Forum

[python] Comunicazione Bidirezionale (pc - Cellulare)


farolfo
 Share

Recommended Posts

Salve a tutto il forum, stavo cercando notizie sulla programmazione in pys60 e dopo molti giorni di consultazione a "sbaffo" b) mi sono iscritto e vi rompo subito le scatole. Sto facendo uno script in python per monitorare lo stato del cellulare dal pc. Mi serve in quanto vorrei avere un sistema che mi consenta di vedere se mi arrivano messaggi o telefonate e di inviare SMS o chiamre qualcuno direttamente dal computer, tenedo il telefono in borsa tramite il collegamento BT. Sono riuscito a fare un Gateway audio con il computer (funziona solo con lo stack Widcomm attualmente). Molte funzioni che riguardano il telefono sono già riuscito a farle, come il monitoraggio del segnale e della batteria, la ricezione degli sms e la funzione per chiamare. Ora però ho incontarto un porblema in quanto non riesco a far comunicare il cellulare come voglio io con il pc nel senso che ho creato una connessione seriale ma lo scambio di dati avviene in modo sincrono, cioé il pc manda un msg al cellulare ed aspetta una risposta da esso. Avrei bisogno di fare un sistema che possa inviare e ricevere (tra pc e cellulare) in modo asincrono. c'é qualcuno che sa consigliarmi.

Link to comment
Condividi su altri siti

Salve a tutto il forum, stavo cercando notizie sulla programmazione in pys60 e dopo molti giorni di consultazione a "sbaffo" b) mi sono iscritto e vi rompo subito le scatole. Sto facendo uno script in python per monitorare lo stato del cellulare dal pc. Mi serve in quanto vorrei avere un sistema che mi consenta di vedere se mi arrivano messaggi o telefonate e di inviare SMS o chiamre qualcuno direttamente dal computer, tenedo il telefono in borsa tramite il collegamento BT. Sono riuscito a fare un Gateway audio con il computer (funziona solo con lo stack Widcomm attualmente). Molte funzioni che riguardano il telefono sono già riuscito a farle, come il monitoraggio del segnale e della batteria, la ricezione degli sms e la funzione per chiamare. Ora però ho incontarto un porblema in quanto non riesco a far comunicare il cellulare come voglio io con il pc nel senso che ho creato una connessione seriale ma lo scambio di dati avviene in modo sincrono, cioé il pc manda un msg al cellulare ed aspetta una risposta da esso. Avrei bisogno di fare un sistema che possa inviare e ricevere (tra pc e cellulare) in modo asincrono. c'é qualcuno che sa consigliarmi.

Ciao farolfo...

Sarei molto interessato all'argomento!

Purtroppo per il momento non so come aiutarti, ma vorrei chiederti se potresti in qualche modo inviarmi la tua applicazione..in particolare a me servirebbe poter monitorare gli sms ricevuti su PC per poter decodificare il testo contenuto.

Magari potresti postarlo qui..oppure mandarmelo via mail..

Grazie Mario

Link to comment
Condividi su altri siti

Se dai un occhiata ala guida di python s60 vedi che c'é un esempio di come accedere alle funzioni riguardanti gli sms.

cmq devi fare qlcosa del genere:

import inbox, appuifw

box = inbox.Inbox()

for sms_id in box.sms_messages()[:5]:

msg = box.content(sms_id)

appuifw.note(msg)

la mia applicazione mi dispiace molto ma nn te la posso mandare

Link to comment
Condividi su altri siti

Forte!

Stavo per postare un messaggio proprio per cercare info sull'argomento!

Infatti, volevo capire quanto sarebbe complicato scrivere una coppia di programmi PC/cell che fa si' che premendo un tasto sul PC, questo venga "emulato" sul cellulare.

Se si potesse fare, sarebbe possibile utilizzare da PC il programma PED, un editor di sorgenti python che gira sul cellulare e offre l'evidenziazione della sintassi e l'autocompletamento.

Ho trovato un paio di sorgenti forse utili per "partire":

Server bluetooth

Client bluetooth

Questo è uno scriptonzolo che simula la pressione di un tasto:

import appswitch
import keypress
from key_codes import *

.....

appswitch.switch_to_fg(u"Phone")  #Your application here

....

keypress.simulate_key(EKeyYes, EKeyYes) # This simulates your pressing of "OK".  The Yes key

Questo dovrebbe essere l'elenco dei codici-tastiera, ma non ho ben capito come vanno usati in simulate_key... Perche' richiede due valori?!?

EKeyLeftSoftkey EScancodeLeftSoftkey

EKeyYes EScancodeYes

EKeyMenu EScancodeMenu

EKey0...9 EScancode0...9

EKeyStar EScancodeStar

EKeyLeftArrow EScancodeLeftArrow

EKeyUpArrow EScancodeUpArrow

EKeySelect EScancodeSelect

EKeyRightArrow EScancodeRightArrow

EKeyDownArrow EScancodeDownArrow

EKeyRightSoftkey EScancodeRightSoftkey

EKeyNo EScancodeNo

EKeyBackspace EScancodeBackspace

EKeyEdit EScancodeEdit

EKeyHash EScancodeHash

Non ho capito se sono inclusi o no nel modulo key_codes.py ... che poi non so neanche dove pigliare, boh? Pero' qualcuno suggerisce di aggiungere al modulo questi valori:

EKeyA = 0x41 #don' work :-(

EKeya = 0x61 #don't work :-(

EKey1 = 0x31

EKey2 = 0x32

EKey3 = 0x33

EKey4 = 0x34

EKey5 = 0x35

EKey6 = 0x36

EKey7 = 0x37

EKey8 = 0x38

EKey9 = 0x39

EKey0 = 0x30

EKeyStar = 0x2a

EKeyDiese = 0x23

EKeyEnter = 0x000d

Credo che le prime due righe siano un tentativo di emulare una tastiera completa...

Visto che non funziona, immagino che per emulare il tasto C premuto sul PC bisognerà usare tre istruzioni simulate_key() che simulano 3 volte il tasto 2.

Ok, ora come metto insieme tutto questo?!?

Link to comment
Condividi su altri siti

Li avevo già visti quelli script, ma purtroppo fanno un colegamento sincrono, mentre a me serve asincrono, ho fatto un po di esperimenti con i thread, aprendo le connessioni in uscita ed in entrata in therad separati ed adesso sembra che qualcsa funzioni, almeno quelle in uscita funzionano (il cellulare manda comandi al pc), quelle in entrata no....ma credo di essere sulla strada giusta

Link to comment
Condividi su altri siti

Li avevo già visti quelli script, ma purtroppo fanno un colegamento sincrono, mentre a me serve asincrono, ho fatto un po di esperimenti con i thread, aprendo le connessioni in uscita ed in entrata in therad separati ed adesso sembra che qualcsa funzioni, almeno quelle in uscita funzionano (il cellulare manda comandi al pc), quelle in entrata no....ma credo di essere sulla strada giusta

che c'entra, non è sincrono perche' si attende l'input dell'utente, ma non ce n'e' mica bisogno: quando il cell ha "qualcosa da dire" al PC, glielo dicesse e basta! E' sufficiente, ad esempio, attivare il "binding" sull'INBOX, che attiva una funzione appena arriva un mex: questa funzione invia i dati al PC, e quello li riceve.

No?

Nell'altro senso dovrebbe essere lo stesso: quando il PC invia un dato al cell, il prog sul cell risponde senza aspettare input dall'utente.

Link to comment
Condividi su altri siti

che c'entra, non è sincrono perche' si attende l'input dell'utente, ma non ce n'e' mica bisogno: quando il cell ha "qualcosa da dire" al PC, glielo dicesse e basta! E' sufficiente, ad esempio, attivare il "binding" sull'INBOX, che attiva una funzione appena arriva un mex: questa funzione invia i dati al PC, e quello li riceve.

No?

Nell'altro senso dovrebbe essere lo stesso: quando il PC invia un dato al cell, il prog sul cell risponde senza aspettare input dall'utente.

Forse non mi sono spiegato bene b) Lo script che hai postato manda un messaggio dal telefono al pc e si mette in attesa di ricevere un messagio dal computer. Se per caso, e succede spesso, il cellulare deve mandare un secondo messaggio al pc non funziona finche il computer non manda qualcosa e fa tornare il telefono nello stato di invio. Ora con i therad sembra invece che la comunicazione sia bidirezionale. Forse per la notifica degli sms va bene, ma se io ad esempio voglio chiamare e monitorare lo stato del telefono dal computer non va bene.

Link to comment
Condividi su altri siti

Forse non mi sono spiegato bene b) Lo script che hai postato manda un messaggio dal telefono al pc e si mette in attesa di ricevere un messagio dal computer. Se per caso, e succede spesso, il cellulare deve mandare un secondo messaggio al pc non funziona finche il computer non manda qualcosa e fa tornare il telefono nello stato di invio. Ora con i therad sembra invece che la comunicazione sia bidirezionale. Forse per la notifica degli sms va bene, ma se io ad esempio voglio chiamare e monitorare lo stato del telefono dal computer non va bene.

bh, io avevo capito che, una volta connesso, bastava usare sock.send(test+'\n') tutte le volte che ti pare per invisre dati...

Link to comment
Condividi su altri siti

bh, io avevo capito che, una volta connesso, bastava usare sock.send(test+'\n') tutte le volte che ti pare per invisre dati...

Scusatemi...Forse mi sono spiegato male...Vorrei sapere come fare per inviare verso il PC una stringa di testo tramite il collegamento usb ed Hyper Terminal

cmq a me servirebbe solo conoscere l'eventuale libreria che permette di scrivere dei caratteri sulla seriale del cell...

Grazie

Link to comment
Condividi su altri siti

Scusatemi...Forse mi sono spiegato male...Vorrei sapere come fare per inviare verso il PC una stringa di testo tramite il collegamento usb ed Hyper Terminal

cmq a me servirebbe solo conoscere l'eventuale libreria che permette di scrivere dei caratteri sulla seriale del cell...

Grazie

per l'invio dei dati alla seriale ci sono i link dei due script che ha postato JumpJack_

Link to comment
Condividi su altri siti

Mario^^..scusa eh, ma hai cercato ? E' il messaggio n° 4 dii questo thread, ci sono 2 link a 2 script python per fare quello che vuoi tu

Hai perfettamente ragione, ma a me serve qualcosa da utilizzare mediante collegamento USB e non Bluetooth..

Sai se esiste qualche metodo??

In sostanza dovrei inviare una serie di caratteri, per poterli poi visualizzare ad esempio mediante Hyper Terminal..

Grazie

Link to comment
Condividi su altri siti

Su google avevo trovato un modulo pyd per la connessione usb, ma non ricordo il sito e non so neanche di preciso come si usa e cosa puoi farci

Hai perfettamente ragione, ma a me serve qualcosa da utilizzare mediante collegamento USB e non Bluetooth..

Sai se esiste qualche metodo??

In sostanza dovrei inviare una serie di caratteri, per poterli poi visualizzare ad esempio mediante Hyper Terminal..

Grazie

Link to comment
Condividi su altri siti

per ovviare al problema del trasferimento "sincrono" basta programmare l'applicativo che gira sul pc in modo da fargli rimandare un bit di conferma un "ok" ogni qualvolta che il cell comunica con il pc

Ci avevo pensato, ma non vorrei "massacrare" la batteria del cellulare con tutti questi continui invii di info tramite bt

Link to comment
Condividi su altri siti

sennò se puoi usare wi-fi, potresti usare il protocollo UDP che non richiede handshaking, ecc.. e invia o riceve dati senza controllo.. ora mi documento meglio anch'io magari ti dò una mano! ciao!

Grazie kernel_panic, ma che intendi per wi-fi ?

Cmq in sintesi devo fare un scriptche monitorizzi lo stato del cellulare e mi invia i dati al pc e sul pc un client che possa ricevere i dati e pilotare ancheil cellulare. Tutto questo tramite la connessione bluetooth

Link to comment
Condividi su altri siti

Farolfo, ma figurati!

Ho fatto un errore ho visto che hai un 6630 e non ha il Wi-Fi, io ero convinto che avevi l'n95 come me,,,

Allora, intanto la struttura del programma potrebbe essere questa:

LATO TELEFONO:

1) Lo script sul telefono che in background ogni X secondi (mediante le varie librerie python) "dumpa" le informazioni che ti interessano (ad esempio sms, quante chiamate, ecc.. o comunque sia dati leggibili/accessibili tramite python)

2) Lo script salva i valori che ha recuperato, in un file

3) Lo script invia tramite bluetooth il file appena salvato, al pc, che sarà sempre in attesa della connessione

LATO PC:

1) Sviluppare un programmino che apra il file appena inviato dal telefono e che riporti i valori in vari tabs o textbox.

Penso che non ci sia bisogno di aggiungere nient'altro al programma, al compito di restare in attesa e salvare un file, ci pensa lo stack bluetooth del tuo sistema operativo.

E' un buon inizio questo.. Basta scrivere il codice..! :-)

Se poi vuoi una mano non c'è problema, e qui non sono l'unico che bazzica su queste cose!

Saluti!

Link to comment
Condividi su altri siti

Lo script l'ho già fatto, per ora invia dal telefono al computer: stato batteria, intensità segnale, codice dell'operatore, ed all'atto della connessione la marca ed il modello di cellulare. Ho anche fatto, in uno script separato che non ho ancora integrato in quello principale, una funzione per ottenere lo stato del telefono (in conversazione, in attesa di risposta, ecc...) e la notifica degli sms in ingresso. Sul lato pc ho creato un piccolo programmino in Visual Basic 6 per monitorare lo stato della com ed interpretare i dati che arrivano dal telefono. Sto anche facendo la stessa cosa su Mac però con RealBasic, anche se é un po più arduo in quanto non si trova molta documentazione riguardo alle porte seriali. b) Una cosa che però ancora devo studiare, dopo aver risolto questo problema della connesione bidirezionale, é l'ottenimento del nomero del chiamante e del mittente degli sms in entrata, avevo intenzione di usare la nuova funzione che legge i log introdotta in pys60 rel. 1.4.2

Link to comment
Condividi su altri siti

Sul lato pc ho creato un piccolo programmino in Visual Basic 6 [...] Sto anche facendo la stessa cosa su Mac però con RealBasic, [...]

offtopic:

Mai sentito parlare di "Mono", per rendere portabili da Win a Mac applicazioni VB.net? Gratis VB.net, gratis Mono, tutto gratis! b)

Pero' io so solo che esiste, l'ho scaricato, ma non ho ancora mai avuto tempo di studiarlo & provarlo...

Link to comment
Condividi su altri siti

offtopic:

Mai sentito parlare di "Mono", per rendere portabili da Win a Mac applicazioni VB.net? Gratis VB.net, gratis Mono, tutto gratis! b)

Pero' io so solo che esiste, l'ho scaricato, ma non ho ancora mai avuto tempo di studiarlo & provarlo...

offtopic:

Hai mai provato ad installare Mono su Macintosh ? Poi senza scomodare Mono che é un prodotto ancora molto acerbo c'é anche Visual Basic.net gratis se ti accontenti deklla versione express b)

Link to comment
Condividi su altri siti

Ragazzi siete proprio forti...Bravi!!

cmq..

Qualcuno di voi potrebbe svilupparmi solo un piccolo codice che permetta di inviare qualcosa verso la seriale del PC, anche mediante connessione Bluetooth..Io ci sto provando ma nn riesco a farlo andare!

Non riesco a capire dov'è il problema...se è nel programma che scrivo oppure sta dalla parte del PC!

Io in poche parole cerco di inviare al PC una stringa ti testo che cerco di visualizzare tramite Hyperterminal...ma non funziona nulla e quindi nn capisco dove stia il problema.

Se uno di voi mi fa il favore di inviarmi un codice funzionante mi evita una perdita di tempo inutile..

Mi basta anche capire come si fa ad inviare una semplice stringa...il resto poi lo faccio io!

Grazie dinuovo

Link to comment
Condividi su altri siti

offtopic:

Hai mai provato ad installare Mono su Macintosh ? Poi senza scomodare Mono che é un prodotto ancora molto acerbo c'é anche Visual Basic.net gratis se ti accontenti deklla versione express b)

non ho ben capito il senso d questo post... E' un duplicato del mio??

Io ho appena detto che uso VB.net su Windows e vorrei sapere come uare Mono per rendere i miei prg compatibili con mac...

Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share

×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy