Controllo hw via seriale
Moderatore: Staff
Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Citare il tipo di hardware coinvolto in modo dettagliato.
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. Non usare termini gergali come procio, mobo e simili per identificare i componenti hardware.
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.
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Citare il tipo di hardware coinvolto in modo dettagliato.
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. Non usare termini gergali come procio, mobo e simili per identificare i componenti hardware.
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.
Controllo hw via seriale
Ciao,
sono alle prese con un'interfaccia a rele' da pilotare via seriale.
Da m$ e' semplice in qualto basta redirigere l' echo di una striga
sulla com1 a 9600, 8N1, in Linux c'e' un sistema senza dover
scomodare gcc?
Ho provato un echo "stinga" > /dev/ttyS0 e con minicom,
ma niente.
Ringrazio chiunque possa darmi qualche suggerimento.
sono alle prese con un'interfaccia a rele' da pilotare via seriale.
Da m$ e' semplice in qualto basta redirigere l' echo di una striga
sulla com1 a 9600, 8N1, in Linux c'e' un sistema senza dover
scomodare gcc?
Ho provato un echo "stinga" > /dev/ttyS0 e con minicom,
ma niente.
Ringrazio chiunque possa darmi qualche suggerimento.
- touchstyle
- Linux 4.x
- Messaggi: 1085
- Iscritto il: gio 13 mag 2004, 0:00
- Slackware: 12.1
- Kernel: 2.6.27
- Desktop: KDE
- Località: Portogruaro [VE]
- Contatta:
Ho trovato in rete :
http://www.linuxfocus.org/Italiano/July ... e239.shtml
http://www.ontrak.net/linux.htm
http://howtos.linux.com/howtos/IO-Port- ... ming.shtml
Mi ricordo di aver trovato un how-to su come pilotare un relè, cerco sui backup perchè google non ne vuole sapere...
Mi raccomando, bufferizza!
Ciao,
Touch.
http://www.linuxfocus.org/Italiano/July ... e239.shtml
http://www.ontrak.net/linux.htm
http://howtos.linux.com/howtos/IO-Port- ... ming.shtml
Mi ricordo di aver trovato un how-to su come pilotare un relè, cerco sui backup perchè google non ne vuole sapere...
Mi raccomando, bufferizza!
Ciao,
Touch.
- touchstyle
- Linux 4.x
- Messaggi: 1085
- Iscritto il: gio 13 mag 2004, 0:00
- Slackware: 12.1
- Kernel: 2.6.27
- Desktop: KDE
- Località: Portogruaro [VE]
- Contatta:
TROVATO!
Fa morire dal ridere... : http://www.sandlab.org/linux/howto/inde ... ini/Coffee
8O
Ciao,
Touch.
Fa morire dal ridere... : http://www.sandlab.org/linux/howto/inde ... ini/Coffee
8O
Ciao,
Touch.
- touchstyle
- Linux 4.x
- Messaggi: 1085
- Iscritto il: gio 13 mag 2004, 0:00
- Slackware: 12.1
- Kernel: 2.6.27
- Desktop: KDE
- Località: Portogruaro [VE]
- Contatta:
Ho avuto qualche problemino col perl, quindi sono passato a c.
Questo e' il sorgente che ho utilizzato:
----------------------------------------------------
#include <termios.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <ctype.h>
#include <sys/signal.h>
#include <sys/types.h>
#define BAUDRATE B9600
#define MODEMDEVICE "/dev/ttyS0"
#define _POSIX_SOURCE 1 /* POSIX compliant source */
#define FALSE 0
#define TRUE 1
main()
{
int fd, c, res;
struct termios oldtio,newtio;
char buf[255];
/* Apro /edv/ttyS0 in modalita' non-blocking
(la read ritorna immediatamente) */
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fd <0) {perror(MODEMDEVICE); exit(-1); }
tcgetattr(fd,&oldtio); /* Salvo il settaggio corrente */
/* e ne faccio una stampa */
printf("Control Mode (cflag) = %x\n", oldtio.c_cflag);
printf("Input Mode (iflag) = %x\n", oldtio.c_iflag);
printf("Output Mode (oflag) = %x\n", oldtio.c_oflag);
printf("Local Mode (lflag) = %x\n", oldtio.c_lflag);
/* nuove impostazioni: 9600 8N1 */
newtio.c_cflag = BAUDRATE | CS8;
newtio.c_iflag = 0;
newtio.c_oflag = 0;
newtio.c_lflag = 0;
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
/* Questo riguarda la scheda con cui mi interfacciavo:
la sequenza era composta da 2 "*" seguiti da un byte
per il pilotaggio dei rele e chiudevo con un "#"
*/
// reset
write(fd,"**",2);
write(fd,"",1);
write(fd,"#",1);
sleep(1);
// si attivano alcuni rele
write(fd,"**",2);
write(fd,"a",1);
write(fd,"#",1);
/* ripristino vecchi settaggi */
tcsetattr(fd,TCSANOW,&oldtio);
}
---------------------------------------------
Questo programma funziona, ma su un pc con
non riuscivo a farlo funzionare, dopo la stampa
dei settaggi mi andava in timeout nell'impostazione
dei nuovi parametri: i permessi su ttyS0 erano gli stessi
boh.
Spero possa essere utile a qualcuno per iniziare,
consiglio pure una approfondita lettura del
"man termios" e dell' "howto prgramming-serial"
Ciao
Questo e' il sorgente che ho utilizzato:
----------------------------------------------------
#include <termios.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <ctype.h>
#include <sys/signal.h>
#include <sys/types.h>
#define BAUDRATE B9600
#define MODEMDEVICE "/dev/ttyS0"
#define _POSIX_SOURCE 1 /* POSIX compliant source */
#define FALSE 0
#define TRUE 1
main()
{
int fd, c, res;
struct termios oldtio,newtio;
char buf[255];
/* Apro /edv/ttyS0 in modalita' non-blocking
(la read ritorna immediatamente) */
fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fd <0) {perror(MODEMDEVICE); exit(-1); }
tcgetattr(fd,&oldtio); /* Salvo il settaggio corrente */
/* e ne faccio una stampa */
printf("Control Mode (cflag) = %x\n", oldtio.c_cflag);
printf("Input Mode (iflag) = %x\n", oldtio.c_iflag);
printf("Output Mode (oflag) = %x\n", oldtio.c_oflag);
printf("Local Mode (lflag) = %x\n", oldtio.c_lflag);
/* nuove impostazioni: 9600 8N1 */
newtio.c_cflag = BAUDRATE | CS8;
newtio.c_iflag = 0;
newtio.c_oflag = 0;
newtio.c_lflag = 0;
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
/* Questo riguarda la scheda con cui mi interfacciavo:
la sequenza era composta da 2 "*" seguiti da un byte
per il pilotaggio dei rele e chiudevo con un "#"
*/
// reset
write(fd,"**",2);
write(fd,"",1);
write(fd,"#",1);
sleep(1);
// si attivano alcuni rele
write(fd,"**",2);
write(fd,"a",1);
write(fd,"#",1);
/* ripristino vecchi settaggi */
tcsetattr(fd,TCSANOW,&oldtio);
}
---------------------------------------------
Questo programma funziona, ma su un pc con
non riuscivo a farlo funzionare, dopo la stampa
dei settaggi mi andava in timeout nell'impostazione
dei nuovi parametri: i permessi su ttyS0 erano gli stessi
boh.
Spero possa essere utile a qualcuno per iniziare,
consiglio pure una approfondita lettura del
"man termios" e dell' "howto prgramming-serial"
Ciao