Article View: es.comp.os.linux.programacion
Article #1071Enviar ctrl-z por el puerto serie
From: Eismann
Date: Thu, 04 May 2006 12:15
Date: Thu, 04 May 2006 12:15
60 lines
3384 bytes
3384 bytes
Holas, Estoy haciendo un programa para enviar SMS con un modem que está conectado al puerto serie. El programa funciona en mi ordenador, pero a la hora de llevarlo a uClinux (linux empotrado) se queda tonto. El problema que tengo es que para indicarle al modem que se ha terminado de redactar el mensaje, hay que mandarle el carácter ctrl-z (0x1A), y parece ser que no le llega al modem, que se queda frito esperando hasta que llegue el dichoso caracter. Supongo que será porque es un caracter de control y los drivers del puerto serie lo tratan de otra manera, y no lo mandan, pero ya no sé que probar para que le llegue al modem. Pongo aqui como inicializo termios: ---------------------- /* Esto para abrir el modem */ fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY ); [...] newtio->c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD; newtio->c_iflag = IGNPAR | ICRNL; newtio->c_oflag = OCRNL; newtio->c_lflag = ICANON; newtio->c_cc[VINTR] = 0; /* Ctrl-c */ newtio->c_cc[VQUIT] = 0; /* Ctrl-\ */ newtio->c_cc[VERASE] = 0; /* del */ newtio->c_cc[VKILL] = 0; /* @ */ newtio->c_cc[VEOF] = 4; /* Ctrl-d */ newtio->c_cc[VTIME] = 0; /* inter-character timer unused */ newtio->c_cc[VMIN] = 1; /* blocking read until 1 character arrives */ newtio->c_cc[VSWTC] = 0; /* '\0' */ newtio->c_cc[VSTART] = 0; /* Ctrl-q */ newtio->c_cc[VSTOP] = 0; /* Ctrl-s */ newtio->c_cc[VSUSP] = 0; /* Ctrl-z */ newtio->c_cc[VEOL] = 0; /* '\0' */ newtio->c_cc[VREPRINT] = 0; /* Ctrl-r */ newtio->c_cc[VDISCARD] = 0; /* Ctrl-u */ newtio->c_cc[VWERASE] = 0; /* Ctrl-w */ newtio->c_cc[VLNEXT] = 0; /* Ctrl-v */ newtio->c_cc[VEOL2] = 0; /* '\0' */ tcsetattr(fd,TCSANOW,newtio); -------------------- Lo que no sé es por qué en el ordenador me funciona, pero luego con uClinux no. En el ordenador tengo el kernel 2.6 y con uClinux uso el 2.4. ¿Álguien sabe como hacer para mandar caracteres especiales por el puerto serie? Por lo menos para saber si lo estoy haciendo bien y buscar el error por otro lado. Saludos, Eismann.
Technical Details
Message-ID:
<1146744901.939179.199040@g10g2000cwb.googlegroups.com>Path:
arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!g10g2000cwb.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Thread: f86c8,9b06656b9f258289,start X-Google-Attributes: gidf86c8,public X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!g10g2000cwb.googlegroups.com!not-for-mail From: "Eismann" <g.eismann@gmail.com> Newsgroups: es.comp.os.linux.programacion Subject: Enviar ctrl-z por el puerto serie Date: 4 May 2006 05:15:01 -0700 Organization: http://groups.google.com Lines: 61 Message-ID: <1146744901.939179.199040@g10g2000cwb.googlegroups.com> NNTP-Posting-Host: 81.32.141.62 Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1146744908 26178 127.0.0.1 (4 May 2006 12:15:08 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Thu, 4 May 2006 12:15:08 +0000 (UTC) User-Agent: G2/0.2 X-HTTP-UserAgent: Mozilla/5.0 (compatible; Konqueror/3.4; Linux) KHTML/3.4.3 (like Gecko) (Kubuntu package 4:3.4.3-0ubuntu2),gzip(gfe),gzip(gfe) Complaints-To: groups-abuse@google.com Injection-Info: g10g2000cwb.googlegroups.com; posting-host=81.32.141.62; posting-account=wXPCbg0AAABxbAsOIq0ssrLGc4W1gFNJ