Newsgroup: it.comp.lang.visual-basic
Titolo: decodifica stringhe 7-bit

ho fatto un preogrammino che si connette al mio siemens sl45 su seriale
con il comando cmgl=4 mi visualizza tutti gli sms in memoria..il problema è
che non riesco a decodificare gli SMS perché il testo è in formato
esadecimale
qualcuno mi potrebbe aiutare?
Mattia Assanelli

 qualcuno mi potrebbe aiutare?
In modo diretto no.
Però penso che tu riesca a leggere i messaggi "in chiaro" sul cellulare,
quindi lavorando sul "codificato" e sul "decodificato" una logica potresti
riuscire a trovarla.
Ovviamente è una strada da utilizzare solo se nessuno ti fornisce un metodo
più facile ;-)
Salutoni
Sergio

 esadecimale
la codifica a 7-bit che e' in subject mi suggerisce che leggi i dati degli
sms in formato TPU o sbaglio ?
In pratica hai i tuo caratteri esadecimali ok ?
es: 05 12 0F ora ogni coppia rappresentano 8bit
05 = 00000101
12 = 00010010
0F = 00001111
ora prendi e unisci i valori binari :
00000101 & 00010010 &  00001111 = 000001010001001000001111
ORA PRENDI LA STRINGA FINALE E DIVIDILA PER 7 BIT
000001010001001000001111  =
0000010
1000100
1000001
111
aggiungi gli 0 alla fine dell'ultimo ed hai i tuoi dati da convertire in
decimale !
(se ricordo bene funzionava cosi la codifica TPU, poi leggi Header per avere
i dati del messaggio e Data per il testo ! )

 ha scritto nel
messaggio news:b76f7c$bnhhb$1...@ID-174485.news.dfncis.de...




Sto creando un'applicazione in VB proprio per la gestione dei telefoni
cellulari da PC quindi sono diventato espertissimo in materia :))))
in pratica stai leggendo i messaggi in modalità PDU. Basta settare la
modalità TEXT semplicemente inviando il comando
AT+CMGF = 1
ciao 
Lelio

 AT+CMGF = 1
azz che ricordi , ci sono passato anche io 4-5 anni fa ^_^
io ricostruivo i loghi nokia codificati a 7bit con +CMGF=0, _CREAVO_
messaggi lampeggianti, facevo di tutto, non ti immagini che soddisfazioni
dava all'epoca, adesso un po meno viste tutte ste novita' !
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 ha scritto nel messaggio
news:3e986a30...@news.virgilio.it...



Guarda te le butto li... 
non è che è impostato male il verbose mode?? con ATV0 lo imposti in
numerico, con ATV1 in testuale (ovviamente a te interessa il secondo)
dopo si deve impostare il text mode:
AT+CMGF = 1 (DEVE funzionare)
poi gli dici da dove leggere i messaggi:
AT+CPMS="SM" (per la memoria della sim, ME per la mem del telefono)
a questo punto con il comando
AT+CMGL = 4 imposti la lettura di tutti i messaggi (letti, non letti,
inviati, non inviati)
infine fai:
AT+CMGR = 1 per la lettura del primo msg, 2 per il secondo e così via.
Spero funzioni.... facci sapere

 ha scritto nel messaggio
news:3e9accf...@news.virgilio.it...



mh.... a questo punto non so cosa dire. E' proprio strano però...
Non lo so proprio... 
puoi dare un'occhiata a 
www.etsi.org
 dove trovi tutti i comandi AT+ e
tutti gli standard per le gestione dei modem gsm  chissà che non
dicano qualcosa... ma mi sembra difficile!
Ciao! Lelio

 ha scritto nel messaggio
news:3e9bca60...@news.virgilio.it...


 al max cambio cellulare se proprio non c'è verso!
usa un vecchio nokia con modem interno e cavo dati tipo :
7110 o 6210 + cavo DLR3
ATTENTO A :
prendere il Cavo giusto (irda si mangia alcuni comandi)
prendere un cell con modem interno
il nokia 7110 accettava tutti i comandi AT dedicati ( testato io di
persona )
anche un vecchio 5110 via softmodem ma li entrano in ballo altre variabili ,
con un softmodem mi leggeva solo i SMS e con un altro solo i loghi :-/

/**
* Questo metodo decodifica un messaggio codificato nel
* formato 7-bit encoded data
*
* @param message la stringa esadecimale del messaggio codificato
* @return il messaggio decodificato
*/
public static String decode(String message)
                   throws NumberFormatException {
StringBuffer decodedMessage = new StringBuffer() ;
int bits = 0 ;
int bitsLength = 0 ;
for(int i=0; i < message.length() ; i+=2) {
  char c = (char)Integer.parseInt(message.substring(i,i+2),16);
  bits = (c << bitsLength) | bits ;
  bitsLength += 8 ;
  while (bitsLength >= 7){
    char septet = (char) (bits & 127);
    decodedMessage.append(septet);
    bits >>>= 7;
    bitsLength -= 7;
  }
}
  // Conversione dei caratteri dell'alfabeto di default
  // nei corrispettivi caratteri ISO8859- 1
  //
  return gsmToIso(decodedMessage.toString()) ;
}
ho trovato questo metodo in java che dovrebbe risolvere tutti i miei
problemi...se qualcuno gentilmente me lo traducesse in vb!
grazie Mattia

 problemi...se qualcuno gentilmente me lo traducesse in vb!
Fallo in Java visto che il vb non lo conosci no ?
