comunicazione seriale

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
leocata
Linux 2.6
Linux 2.6
Messaggi: 570
Iscritto il: mar feb 05, 2008 22:25
Slackware: 13.1
Desktop: xfce 4.x
Località: Giarre(CT)
Contatta:

comunicazione seriale

Messaggioda leocata » lun mag 11, 2009 22:34

Ho da sempre il pallino della comunicazione tramite porta seriale /dev/ttyS0 (dos: COM1) qualcuno di voi ha esperienza in c++ sull'argomento? io ho usato tramite diverse prove una libreria (ctb) che doveva essere Cross Platform su win funziona (diciamo...grosso modo) ma con linux non riesco...

Avatar utente
phobos3576
Staff
Staff
Messaggi: 2980
Iscritto il: dom apr 17, 2005 0:00
Slackware: 13.1
Kernel: 2.6.37-smp
Desktop: KDE 4.5.3

Re: comunicazione seriale

Messaggioda phobos3576 » lun mag 11, 2009 22:51

La prima cosa da dire è che su Linux la porta seriale deve essere inizializzata; in particolare, su Slackware il file /etc/rc.d/rc.serial non ha i permessi di esecuzione per cui la seriale non viene inizializzata al boot.

Tale inizializzazione viene effettuata con un comando del tipo:

Codice: Seleziona tutto

setserial /dev/ttyS0 port 0xac00 UART 16550A irq 17 Baud_base 921600

I dati relativi all'indirizzo di porta (nel mio caso 0xac00) e all'IRQ da usare (nel mio caso 17) li puoi ricavare da KInfoCenter - sezione PCI; ovviamente, è anche necessario che il supporto della seriale sia abilitato nel kernel.

Una volta effettuata l'inizializzazione, per sapere se la porta sta funzionando puoi provare a collegare un vecchio modem seriale (supportato da Linux) e effettuare il test (Interroga Modem) dall'applicazione KPPP.

Se tutto sta funzionando a dovere, puoi farti un giro in Rete dove si trova una enorme quantità di materiale sulla programmazione della seriale.

Avatar utente
Calzo
Linux 2.0
Linux 2.0
Messaggi: 112
Iscritto il: sab ott 06, 2007 22:21
Slackware: 10.2 | 13
Desktop: Fluxbox | KDE
Località: MN
Contatta:

Re: comunicazione seriale

Messaggioda Calzo » ven mag 15, 2009 22:59

leocata ha scritto:io ho usato tramite diverse prove una libreria (ctb) che doveva essere Cross Platform su win funziona (diciamo...grosso modo) ma con linux non riesco...

Di questa libreria non so... però sotto Linux o usi i device driver aperendoli con read&write e configurando la seriale con le funzioni che trovi in termios.h, oppure puoi usare ioperm() e poi andare a scrivere sul dispositivo tramite outb.

Bhè questo in C, ma in C++ non dovrebbero esserci differenze in tal senso.
Per la portabilità non saprei. Ho visto che esiste un wrapper multipiattaforma per le Qt (QextSerialPort) per la gertione della seriale, ma non le ho mai usate.

bye


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti