🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #1071

Enviar ctrl-z por el puerto serie

#1071
From: Eismann
Date: Thu, 04 May 2006 12:15
60 lines
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-mail

Show 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