termios
Publicado por william (19 intervenciones) el 02/12/2002 11:54:21
Bien, bueno me hace falta lo siguiente si me podeis ayudar de antemano gracias.
Bueno, a la fecha e configurado el puerto paralelo y e impreso varios codigos de barras (para esto estoy trabajando conla estructura termios); bien el problema lo tengo cuando quiero leer del puerto leo toda la iinformacion pero se me queda en un bucle infinito, lo que pasa es que no e podido manejar segun creo el campo de caracteres de control de la estructura (cc_t c_cc), pienso que el problema puede estar desde la configuracion.
nueva.c_iflag = IGNPAR|ICRNL|INLCR;
nueva.c_cflag = B9600|CS8|CRTSCTS|CREAD|CLOCAL;
nueva.c_oflag = 0;
nueva.c_lflag = ICANON;
/*Inicializacion caracteres de control*/
nueva.c_cc[VINTR] = 0; /* Ctrl-c */
nueva.c_cc[VQUIT] = 0; /* Ctrl-\ */
nueva.c_cc[VERASE] = 0; /* del */
nueva.c_cc[VKILL] = 0; /* @ */
nueva.c_cc[VEOF] = 4; /* Ctrl-d */
nueva.c_cc[VTIME] = 0; /* temporizador entre caracter, no usado */
nueva.c_cc[VMIN] = 1; /* bloqu.lectura hasta llegada de caracter. 1 */
nueva.c_cc[VSWTC] = 0; /* '\0' */
nueva.c_cc[VSTART] = 0; /* Ctrl-q */
nueva.c_cc[VSTOP] = 0; /* Ctrl-s */
nueva.c_cc[VSUSP] = 0; /* Ctrl-z */
nueva.c_cc[VEOL] = 0; /* '\0' */
nueva.c_cc[VREPRINT] = 0; /* Ctrl-r */
nueva.c_cc[VDISCARD] = 0; /* Ctrl-u */
nueva.c_cc[VWERASE] = 0; /* Ctrl-w */
nueva.c_cc[VLNEXT] = 0; /* Ctrl-v */
nueva.c_cc[VEOL2] = 0; /* '\0' */
Cuando estoy leyendo realizo lo siguiente.
while(i==0)
{
read(fd,lectura,255);
printf("\n%s",lectura);
if(lectura[strlen(lectura)-1]==EOF)
{
i=1;
}
Gracias.
Bueno, a la fecha e configurado el puerto paralelo y e impreso varios codigos de barras (para esto estoy trabajando conla estructura termios); bien el problema lo tengo cuando quiero leer del puerto leo toda la iinformacion pero se me queda en un bucle infinito, lo que pasa es que no e podido manejar segun creo el campo de caracteres de control de la estructura (cc_t c_cc), pienso que el problema puede estar desde la configuracion.
nueva.c_iflag = IGNPAR|ICRNL|INLCR;
nueva.c_cflag = B9600|CS8|CRTSCTS|CREAD|CLOCAL;
nueva.c_oflag = 0;
nueva.c_lflag = ICANON;
/*Inicializacion caracteres de control*/
nueva.c_cc[VINTR] = 0; /* Ctrl-c */
nueva.c_cc[VQUIT] = 0; /* Ctrl-\ */
nueva.c_cc[VERASE] = 0; /* del */
nueva.c_cc[VKILL] = 0; /* @ */
nueva.c_cc[VEOF] = 4; /* Ctrl-d */
nueva.c_cc[VTIME] = 0; /* temporizador entre caracter, no usado */
nueva.c_cc[VMIN] = 1; /* bloqu.lectura hasta llegada de caracter. 1 */
nueva.c_cc[VSWTC] = 0; /* '\0' */
nueva.c_cc[VSTART] = 0; /* Ctrl-q */
nueva.c_cc[VSTOP] = 0; /* Ctrl-s */
nueva.c_cc[VSUSP] = 0; /* Ctrl-z */
nueva.c_cc[VEOL] = 0; /* '\0' */
nueva.c_cc[VREPRINT] = 0; /* Ctrl-r */
nueva.c_cc[VDISCARD] = 0; /* Ctrl-u */
nueva.c_cc[VWERASE] = 0; /* Ctrl-w */
nueva.c_cc[VLNEXT] = 0; /* Ctrl-v */
nueva.c_cc[VEOL2] = 0; /* '\0' */
Cuando estoy leyendo realizo lo siguiente.
while(i==0)
{
read(fd,lectura,255);
printf("\n%s",lectura);
if(lectura[strlen(lectura)-1]==EOF)
{
i=1;
}
Gracias.
Valora esta pregunta
0