Repository 32bit  Forum
Repository 64bit  Wiki

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.

comunicazione seriale

Messaggioda leocata » lun mag 11, 2009 21: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...
leocata
Linux 2.6
Linux 2.6
 
Messaggi: 550
Iscritto il: mar feb 05, 2008 22:25
Località: Giarre(CT)
Slackware: 13.1
Desktop: xfce 4.x

Re: comunicazione seriale

Messaggioda phobos3576 » lun mag 11, 2009 21: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
phobos3576
Staff
Staff
 
Messaggi: 2980
Iscritto il: sab apr 16, 2005 23:00
Slackware: 13.1
Kernel: 2.6.37-smp
Desktop: KDE 4.5.3

Re: comunicazione seriale

Messaggioda Calzo » ven mag 15, 2009 21: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
Avatar utente
Calzo
Linux 2.0
Linux 2.0
 
Messaggi: 112
Iscritto il: sab ott 06, 2007 21:21
Località: MN
Slackware: 10.2 | 13
Desktop: Fluxbox | KDE


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron