Newsgroup: it.hobby.elettronica.digitale
Titolo: [Tesi esame] Siemens & AtCommands

Ragazzi, aiutatemi... in teoria avrei dovuto consegnare la tesi che porto
all'esame 2 settimane fa ma è ancora impresentabile a causa di diversi
problemi riscontrati in fase di realizzazione e recupero componenti...
Ho un Siemens m35 collegato alla seriale del PC col suo cavetto dati e
attraverso gli AT-COMMANDS che gli invio sulla seriale da un programma fatto
in C lo comando.
Ho scaricato dal sito della Siemens il file
"s35i_c35i_m35i_atc_commandset_v01.pdf" con le specifiche dei comandi
supportati e dei protocolli.
Per iniziare sto facendo delle prove con HyperTerminal per vedere come
risponde il CEL ai comandi che gli invio, ma putroppo non va un cazzo.
Ho scaricato il "Visual S25 1.3" per escludere problemi al cavetto e così è
stato visto che il SW va benissimo e legge tutto.
Ora mi chiedo, nn è che bisogna prima "preparare" il cel alla ricezione dei
comandi AT ?
Cioè ho notato che quando lancio il SW la prima cosa che fa e "collegamento
in corso", quindi per caso imposta qualcosa?
Oppure è HyperTerminal che non va ?! Devo usare un altro emulatore ? Quale?
L'ho settatto a 19200bps 8N1 che dovrebbe essere il protocollo per
utilizzare i comandi AT ? è giusto ?
Dove sto sbagliando? Vi prego aiutatemi e anche se non ci siete riusciti
scrivere cmq i tentativi che avete fatto così io magari li uso come punto di
partenza.
GRAZIE MILLE, ATTENDO RISPOSTE !!!
CIAO CIAO !!!

utilizzare i comandi AT ? è giusto ?
Hai messo "Controllo di flusso" su "Nessuno"?
Lo devi mettere necessariamente, altrimenti Hyperterminal s'aspetta
l'handshaking sulle linee RTS e CTS!
Il collegamento avviene solo attraverso le 2 linee RX e TX!
Quindi, ripetendo: disabilita il controllo di flusso e (se non hai
ancora successo) prova pure la velocità 9600bps
Gabriele

 partenza.
http://www.campana.vi.it/ottavio/progetti/myericsson.php3?lang=it
è per i telefonini ericsson sotto linux. Però i comandi AT sono
(dovrebbero essere) standard. 
Ciao

 Gabriele
GRAZIE MILLE !!!
Purtroppo non ho trovato nessuno che abbia un Siemens x35 compatibile in
disuso da prestarmi a tempo indeterminato quindi sono sonza CEL, domani o
appena possibile provo eliminando il controllo di flusso (che avevo lasciato
Hw).
Per quando riguarda il futuro impiego di linux, essitono settaggi
particolari da usare?
Qual'è la funzione per cambiare il BAUD dai 9600 std ai 19200 che mi servono
?!?

?!?
In C devi passare attraverso una opportuna chiamata ioctl():
		/* apre la seriale */
		if ((fd = open(tty, O_RDWR | O_NONBLOCK)) == -1) fatal("DEVICE");
        /* ottiene i parametri correnti della porta */
        if (ioctl(fd, TCGETS, &ts) != 0) fatal("ERR_IOCTL");
        /* Setta parametri                                */
        /* 38400 baud                                     */
        /* 8 data bits                                    */
        /* Enable receiver                                */
        /* Ignore CD (local connection)                   */
        /* Use RTS/CTS flow control                       */
        ts.c_cflag = B38400 | CS8 | CREAD | CLOCAL | CRTSCTS;
        ts.c_iflag = 0;
        ts.c_oflag = NL0 | CR0 | TAB0 | BS0 | VT0 | FF0;
        ts.c_lflag = 0;
        /*--------------------------------------------------------------*/
        /* All these capabilities are turned off; see termios(2)        */
        /* and stty(1L) man pages:                                      */
        /*                                                              */
        /* c_cflag      !CSTOPB, !PARENB, !HUPCL                        */
        /*                                                              */
        /* c_iflag      !IGNBRK, !BRKINT, !IGNPAR, !PARMRK, !INPCK,     */
        /*              !ISTRIP, !INLCR,  !IGNCR,  !ICRNL,  !IXON,      */
        /*              !IXOFF,  !IUCLC,  !IXANY,  !IMAXBEL             */
        /*                                                              */
        /*                                                              */
        /* ts.c_oflag   !OPOST,   !OLCUC, !OCRNL,  !ONLCR,  !ONOCR      */
        /*              !ONLRET,  !OFILL, !OFDEL                        */
        /*                                                              */
        /* ts.c_lflag   !ISIG    !ICANON  !IEXTEN !ECHO  !ECHOE         */
        /*              !ECHOK   !ECHONL  !NOFLSH !XCASE !TOSTOP        */
        /*              !ECHOPRT !ECHOCTL !ECHOKE                       */
        /*--------------------------------------------------------------*/
        ts.c_cc[VINTR]    = '\0';
        ts.c_cc[VQUIT]    = '\0';
        ts.c_cc[VERASE]   = '\0';
        ts.c_cc[VKILL]    = '\0';
        ts.c_cc[VEOF]     = '\0';
        ts.c_cc[VTIME]    = '\0';
        ts.c_cc[VMIN]     = 1;
        ts.c_cc[VSWTC]    = '\0';
        ts.c_cc[VSTART]   = '\0';
        ts.c_cc[VSTOP]    = '\0';
        ts.c_cc[VSUSP]    = '\0';
        ts.c_cc[VEOL]     = '\0';
        ts.c_cc[VREPRINT] = '\0';
        ts.c_cc[VDISCARD] = '\0';
        ts.c_cc[VWERASE]  = '\0';
        ts.c_cc[VLNEXT]   = '\0';
        ts.c_cc[VEOL2]    = '\0';
        /* setta i nuovi parametri */
        if (ioctl(fd, TCSETS, &ts) != 0) fatal("ERR_IOCTL");
		...
		...
		strcpy(cmd,"AT");
		if (write(fd, cmd, strlen(cmd)) != strlen(cmd)) fatal("ERR_WRITE");
		...
		...
		r=read(fd, buf, 1024);
		...
		...
		/* alla fine chiude il file */
        if (close(fd) != 0) fatal("ERR_CLOSE");
Nel tuo caso devi modificare la prima linea nel seguente modo:
		ts.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
Spero ti sia utile.
Giuseppe