Newsgroup: it.comp.os.linux.debian
Titolo: Debian e' superstizioso?

Ha paura del 13? :-)
Spiego la cosa inimmaginabilmente assurda che mi sta capitando, piu' per 
farsi una risata che per chiedere una spiegazione (che non puo' 
razionalmente esistere...)
Sto lavorando con due radio-moduli (due chip XBeePro della Maxstream su 
protocollo 802.15.4), per ora mi sto impratichendo col protocollo radio 
spedendo un po' di byte fra i due moduli; spedisco una serie di 256 byte 
(coi valori 0, 1, 2, ..., 255) da uno e l'altro li riceve e li stampa a 
video.
Sotto windows (su cygwin) funziona tutto a meraviglia; quando sposto uno dei 
moduli sulla mia macchina Debian (il modulo si interfaccia con la seriale) 
stampa tutti i 256 valori corretti... tranne il 13, che diventa un 10. 
Provato in diverse configurazioni e con diversi tipi di paccchetti, ma 
niente da fare: il 13 diventa 10.
Non c'e' dubbio che nei registri del modulo radio il valore sia 13 (se no 
fallirebbe il checksum e il pacchetto verrebbe rifiutato), quindi e' Debian 
che quando legge dalla seriale mi trasforma il 13 in 10... qualche idea?
Pleg 

 stampa tutti i 256 valori corretti... tranne il 13, che diventa un 10. 
hint: CR -> LF
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

> hint: CR -> LF
Mhh... parrebbe, ma io avevo settato la porta come "raw input" proprio per 
non avere questo tipo di intepretazione dei caratteri. Evidentemente ho 
sbagliato (ma allora perche' sotto cygwin funziona?). Quando setto la 
seriale aggiungo questa linea:
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
come suggerito qui: 
http://www.easysw.com/~mike/serial/serial.html
per avere il "raw input". Quanlche suggerimento (o libri / siti che spiegano 
in dettaglio i settaggi della seriale sotto Linux o UNIX)?
Grazie per l'aiuto,
Pleg 

 non avere questo tipo di intepretazione dei caratteri.
Hum, data l'ora sparo a caso: sei sicuro che invece il problema non sia 
sull'output o nell'elaborazione del dato da parte del programma?
Alessandro.

 sull'output o nell'elaborazione del dato da parte del programma?
Mi sembra molto strano, visto che lo stesso codice compilato con lo stesso 
compilatore su cygwin/WinXp funziona e su linux no. Mi faccio stampare i 
dati grezzi che prelevo dai registri dei moduli, senza ulteriore 
elaborazione, quindi quel passaggio 13 -> 10 deve avvenire a meta' strada 
tra i moduli e il mio programma. Il perche' e' tutto da scoprire (domani, 
pero' :-)
Pleg 


Verifica anche la fopen.
È lì infatti che esiste, tra i vari flag di Read, Write, Append, anche
il carattere "b" che indica "binario".
Dalla pagina di man
The mode string can also include the letter ``b'' either as a last
character or as a character between the characters in any of the
two-character strings described above. This is strictly for
compatibility with ANSI X3.159-1989 (``ANSI C'') and has no effect; the
``b'' is ignored on all POSIX conforming systems, including Linux.
(Other systems may treat text files and binary files differently, and
adding the ``b'' may be a good idea if you do I/O to a binary file and
expect that your program may be ported to non-Unix environments.)
Cygwin è conforme posix, Windows no.
Cygwin ignorerebbe il 'b', Windows no.
PSK