Pagina 1 di 1

comunicazione seriale

Inviato: lun 11 mag 2009, 22:34
da leocata
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...

Re: comunicazione seriale

Inviato: lun 11 mag 2009, 22:51
da phobos3576
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.

Re: comunicazione seriale

Inviato: ven 15 mag 2009, 22:59
da Calzo
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