Article View: es.comp.os.linux.programacion
Article #11968Re: Pregunta complicada
From: Ranma Saotome
Date: Wed, 05 Sep 2001 21:53
Date: Wed, 05 Sep 2001 21:53
132 lines
4611 bytes
4611 bytes
Si no lo consigues, no es dif�cil hacer un cablecito con ese pin sin soldar.
( de nada!)
"JordiNitrox" <Jordinitrox@virtual-sub.org> escribi� en el mensaje
news:3B968465.E714D98@virtual-sub.org...
Hola a todos/as
Estoy intentando de programar el puerto serie para comunicarme con un
dispositivo externo no standard (un interfase de un ordenador de buceo).
Tengo el protocolo de comunicaciones es:
http://pakuro.is.sci.toho-u.ac.jp/aladin/memomouse-e.html
Bien, el problema que tengo es que no encuentro la forma de apagar el
pin RTS del puerto serie y necesito ponerlo en "off" para qeue el
periferico se conecte.
He estado siguiendo el Serial-Programming How-To y El "Serial
Programming guide for POSIX operating systems" y actualmente tengo este
trozo de codigo:
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <termios.h>
[mas codigo]
void Comunicacion::ejecutar(){
// declara variables
int fd,c,res,status;
struct termios oldtio,newtio;
char buff[1024];
// abre puerto para lectura/escritura
fd=open(PUERTO,O_RDWR | O_NOCTTY);
if(fd<0){perror(PUERTO);return;}
//inicializa parametros del puerto y hace el flush
tcgetattr(fd,&oldtio);
bzero(&newtio,sizeof(newtio));
newtio.c_cflag=0;
newtio.c_cflag=BAUDRATE | CS8 | CLOCAL | CREAD | CRTSCTS;
newtio.c_iflag= IGNPAR | ICRNL;
newtio.c_oflag=0;
newtio.c_lflag=0;
fcntl(fd, F_SETFL,FNDELAY);
tcflush(fd,TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
//obtiene el estatus de los pins
ioctl(fd,TIOCMGET,&status);
// (1) el mismo n�mero en el listado del output del programa (ver m�s
abajo)
imprime_estado(status); // m�todo que imprime que pins estan en alto
(ver m�s abajo)
// hace que el unico pin activo sea el DTR y lo envia otra vez al puerto
status =TIOCM_DTR;
// (2)
imprime_estado(status);
ioctl(fd,TIOCMSET,status);
//obtiene otra vez los datos de puerto para comprobar el estado
ioctl(fd,TIOCMGET,&status);
// (3)
imprime_estado(status);
// trozo de codigo que intenta otra vez desactivar el RTS y comprobar el
resultado
status &= ~TIOCM_RTS;
// (4)
imprime_estado(status);
ioctl(fd,TIOCMSET,status);
ioctl(fd,TIOCMGET,&status);
// (5)
imprime_estado(status);
}
/** imprime el estado de los pins del puerto */
void Comunicacion::imprime_estado(int status){
fprintf(stderr,"\n--------------\n");
if(status & TIOCM_DTR)
fprintf(stderr,"DTR--on\n");
if(status & TIOCM_LE)
fprintf(stderr,"DSR--on\n");
if(status & TIOCM_RTS)
fprintf(stderr,"RTS--on\n");
if(status & TIOCM_CTS)
fprintf(stderr,"CTS--on\n");
if(status & TIOCM_CAR)
fprintf(stderr,"DCD--on\n");
if(status & TIOCM_DSR)
fprintf(stderr,"DSR--on\n");
fprintf(stderr,"--------------\n");
}
El resultado que obtengo es el siguiente
(1)
--------------
DTR--on
RTS--on
--------------
(2)
--------------
DTR--on
--------------
(3)
--------------
DTR--on
RTS--on
--------------
(4)
--------------
DTR--on
--------------
(5)
--------------
DTR--on
RTS--on
--------------
Como veis, mis intentos para desactivar el RTS no han dado resultado.
Alguien sabe como desactivar el RTS de las narices?????????
Venga a ver quien se anima a hecharme una mano, que quiero desterrar
completamente al windows!! (aun lo necesito para comunicarme con el p...
dispositivo)
Jordi
mailto:JordiNitrox@virtual-sub.org
http://www.virtual-sub.org
Technical Details
Message-ID:
<w9xl7.149264$2J2.5081992@telenews.teleline.es>Path:
arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!feed.textport.net!cyclone2.usenetserver.com!usenetserver.com!pd2nf1so.cg.shawcable.net!residential.shaw.ca!news-out.spamkiller.net!propagator-la!news-in-la.newsfeeds.com!news-in.superfeed.net!caladan.arrakis.es!telenews.teleline.es!not-for-mailReferences:
<3B968465.E714D98@virtual-sub.org>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,bc00889959010e54 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2001-09-05 19:32:51 PST From: "Ranma Saotome" <nomemandes@nada.a.mi> Newsgroups: es.comp.os.linux.programacion References: <3B968465.E714D98@virtual-sub.org> Subject: Re: Pregunta complicada Lines: 134 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4522.1200 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 Message-ID: <w9xl7.149264$2J2.5081992@telenews.teleline.es> Date: Wed, 05 Sep 2001 21:53:32 GMT NNTP-Posting-Host: 195.235.97.105 X-Complaints-To: usenet@teleline.es X-Trace: telenews.teleline.es 999726812 195.235.97.105 (Wed, 05 Sep 2001 23:53:32 MET DST) NNTP-Posting-Date: Wed, 05 Sep 2001 23:53:32 MET DST Organization: Clientes_Teleline Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!feed.textport.net!cyclone2.usenetserver.com!usenetserver.com!pd2nf1so.cg.shawcable.net!residential.shaw.ca!news-out.spamkiller.net!propagator-la!news-in-la.newsfeeds.com!news-in.superfeed.net!caladan.arrakis.es!telenews.teleline.es!not-for-mail