|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
[c]porta seriale su linux
sto giocando con alcuni circuiti comandati da seriale.
sono tutti forniti dei loro programmi, ovviamente senza sorgenti ho cercato un pò, ma non ho trovato nulla mi sono sorbito centinaia di pagine sullo standard, sul funzionamento, sulle possibili variazioni, ma quando sono arrivato in fondo la mia capacità di scrivere qualcosa in c che usasse questa maledetta porta era rimasta invariata non è che qualcuno sa darmi qualche dritta su dove cercare? grazie, ciao! |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
In Win32 per leggere/scrivere direttamente su porte COM e LPT devi aprirle con CreateFile come fossero degli pseudo-files e usare ReadFile e WriteFile, ma non ci ho mai provato; guarda su MSDN per ulteriori dettagli (cerca Communications Resources).
Ciao |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
doh, come non detto, sei su linux!
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
su linux lo posso fare anche senza linguaggio di programmazione lanciando un echo e redirigendolo sulla porta seriale, ma io vorrei qualcosa a più basso livello.
su parallela per lo stesso tipo di circuiti usavo ioperm, ma su seriale mi sembra un bel casino fare la stessa cosa. il punto è che se lancio echo "ciao" su una sim mi sa che la sim la prende anche molto male ciao |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
Seriali sotto linux
Per scrivere sulle seriali su linux ti e sufficente aprire ttys0 o comunque la porta che vuoi con fopen e leggere/scrivere con fread, fwrite ma penso che il tuo problema risale ad un livello più alto,
Cioè: non sai quali bit o informazioni devi trasmettere sulla seriale per far si che l'hardware funzioni correttamente. Per questo problema ti servono una specie di driver o comunque una cosa del genere. Ciao.... |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
Ciao
Io sono un niubbo sia in C che in Linux ma vorrei comunque provare a dirti come ho fatto io per comunicare con un dispositivo seriale. Innanzitutto ho incluso il file <termios.h> e poi, seguendo delle guide, mi sono fatto questa funzione per settare i parametri della seriale: Codice:
int inizializza(char *nomeporta)
{
int com;
struct termios tattr;
com = open (nomeporta, O_RDWR | O_SYNC);
if (com == -1)
{
perror ("Hai dimenticato la seriale o non funge!!");
exit (2);
}
/*questi modi di settare la seriale li trovi anche sulla guida che ti hanno postato */
tcgetattr (com, &tattr);
tattr.c_cflag = ~CSIZE | CREAD | CLOCAL;
tattr.c_lflag &= ~(ICANON|ECHO);
tattr.c_cflag &= ~PARENB;
tattr.c_cflag &= ~CSTOPB;
tattr.c_cflag &= ~CSIZE;
tattr.c_cflag |= CS8;
tattr.c_cc[VMIN] = 1;
tattr.c_cc[VTIME] = 0;
cfsetispeed (&tattr, B56000); //per settare il baudrate che serve
cfsetospeed (&tattr, B56000);
tcsetattr (com, TCSAFLUSH, &tattr);
return com;
}
Codice:
char mio_carattere;
//apro la seriale
inizializza = ("/dev/ttyS0" );
read(com, &mio_carattere, 1);
// altro codice spazzatura.....
Thx. RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:20.



















