¿Cómo comprobar que el puerto serie del PC está bien configurado y funciona correctamente?

Imagen de San_Apa
0 puntos

Hola,
estoy utilizando un Ubuntu 8.04 (Hardy) y necesito utilizar el puerto serie de mi ordenador para conectarlo a un robot, pero no lo logro y no sé a que es debido.
Me gustaría saber como puedo comprobar que mi puerto serie funciona y si está configurado correctamente.

¿Cuál es la manera de comprobar si está activo?
¿Cuál es la manera de configurar en caso de estar activo?

Muchas gracias.

Imagen de furtaxi
+1
0
-1

Abrir un cajón, de ésos llenos de recuerdos, y ponerle un mouse puerto serie. encender el ordenador, y ver si funciona.

Mi WEB 100 % GNU/Linux: www.vigovideo.es
La energía no se crea ni se destruye, sólo se cobra... :D

+1
0
-1

Mi web : www.vigovideo.es
Buscar es más rápido que esperar una respuesta.

Imagen de San_Apa
+1
0
-1

La idea es buena, pero me temo que no dispongo de ningún Mouse que sea tan viejo.

+1
0
-1
Imagen de javor
+1
0
-1

En cualquier tienda de electrónica puedes conseguir un loopback para el puerto serie.

Es un conector que va cableado internamente para que lo que envías vuelva a entrar por el mismo puerto.

Con eso y un poco de habilidad puedes probar el puerto.

¿Has tenido en cuenta los parámetros de configuración? Longitud de palabra, velocidad de transmisión, mecanismo de señalización (XON/XOFF, RTS/CTS, etc)

Hace siglos que no hago nada con RS232, pero si que recuerdo que a veces podía ser un poco complicado dar con la configuración adecuada para hacer funcionar algunas conexiones.

+1
0
-1
Imagen de Gabriel_M
+1
0
-1

Hola san...:

Prueba con minicom, esta en los repositorios:

MINICOM(1)                                             Version 2.1                                             MINICOM(1)
NAME
       minicom - friendly serial communication program
SYNOPSIS
       minicom [-somMlwz8] [-c on|off] [-S script] [-d entry]
               [-a on|off] [-t term] [-p pty] [-C capturefile] [configuration]
DESCRIPTION
       minicom  is  a  communication program which somewhat resembles the shareware program TELIX but is free with source
       code and runs under most unices.  Features include dialing directory with auto-redial, support for UUCP-style lock
       files  on  serial devices, a separate script language interpreter, capture to file, multiple users with individual
       configurations, and more.
COMMAND-LINE
       -s   Setup.  Root edits the system-wide defaults in /etc/minicom/minirc.dfl with this option.  When  it  is  used,
            minicom does not initialize, but puts you directly into the configuration menu. This is very handy if minicom
            refuses to start up because your system has changed, or for the first time you run minicom. For most systems,
            reasonable defaults are already compiled in.

       -o   Do not initialize. Minicom will skip the initialization code.  This option is handy if you quitted from mini?
            com without resetting, and then want to restart a session. It is potentially dangerous though: no  check  for
            lock  files  etc. is made, so a normal user could interfere with things like uucp... Maybe this will be taken
            out later. For now it is assumed, that users who are given access to a modem are responsible enough for their
            actions.
       -m   Override  command-key  with the Meta or ALT key. This is the default in 1.80 and it can also be configured in
            one of minicom's menus, but if you use different terminals all the time, of which some don't have a  Meta  or
            ALT  key,  it's  handy  to set the default command key to Ctrl-A and use this option when you have a keyboard
            supporting Meta or ALT keys. Minicom assumes that your Meta key sends the ESC prefix, not the  other  variant
            that sets the highest bit of the character.
       -M   Same  as  -m,  but  assumes  that your Meta key sets the 8th bit of the character high (sends 128 + character
            code).
       -z   Use terminal status line. This only works on terminals that support it and that have the relevant information
            in their termcap or terminfo database entry.
-l   Literal translation of characters with the high bit set. With this flag on, minicom will try to translate the
            IBM line characters to ASCII. Many PC-unix clones will display character correctly without translation (Linux
            in a special mode, Coherent and Sco).

       -L   Ditto but assume screen uses an ISO8859 character set.

       -w   Turns line-wrap on at startup by default.

       -a   Attribute  usage. Some terminals, notably Televideo's, have rotten attribute handling (serial instead of par?
            allel). By default, minicom uses '-a on', but if you are using such a terminal you can  (must!)   supply  the
            option '-a off'. The trailing 'on' or 'off' is needed.
       -t   Terminal  type. With this flag, you can override the environment TERM variable.  This is handy for use in the
            MINICOM environment variable; one can create a special termcap entry for use with  minicom  on  the  console,
            that  initializes the screen to raw mode so that in conjunction with the -l flag, the IBM line characters are
            displayed untranslated.
       -c   Color usage. Some terminals (such as  the  Linux  console)  support  color  with  the  standard  ANSI  escape
            sequences.  Because  there  is apparently no termcap support for color, these escape sequences are hard-coded
            into minicom. Therefore this option is off by default.  You can turn it on with '-c on'. This, and  the  '-m'
            option, are good candidates to put into the MINICOM environment variable.
       -S   script.   Run  the  named script at startup. So far, passing username and password to a startup script is not
            supported. If you also use the -d option to start dialing at startup, the -S script will be run BEFORE  dial?
            ing the entries specified with -d.
       -d   Dial an entry from the dialing directory on startup. You can specify an index number, but also a substring of
            the name of the entry. If you specify a name that has multiple entries in the directory, they are all  tagged
            for dialing. You can also specify multiple names or index numbers by separating them with commas. The dialing
            will start from the first entry specified after all other program initialization procedures are completed.
       -p   Pseudo terminal to use. This overrides the terminal port defined in the configuration files, but only  if  it
            is  a  pseudo  tty. The filename supplied must be of the form (/dev/)tty[p-z/][0-f], (/dev/)pts[p-z/][0-f] or
            (/dev/)pty[p-z/][0-f]. For example, /dev/ttyp1, pts/0 or /dev/ptyp2.
       -C   filename.  Open capture file at startup.
       -T   Disable the display of the online time in the status bar.
       -7   7bit mode for terminals which aren't 8bit capable. 8bit is default if the environment is configured for  this
            via LANG or LC_ALL, 7bit otherwise.
       -8   8bit  characters  pass  through  without  any  modification.   'Continuous' means no locate/attribute control
            sequences are inserted without real change of locate/attribute. This mode is to display 8bit multi-byte char?
            acters  such  as Japanese. Not needed in every language with 8bit characters. (For example displaying Finnish
            text doesn't need this.)
            When minicom starts, it first searches the MINICOM environment variable for command-line arguments, which can
            be over-ridden on the command line.  Thus, if you have done
                 MINICOM='-m -c on'
                 export MINICOM
            or the equivalent, and start minicom, minicom will assume that your terminal has a Meta or  key and that
            color is supported.  If you then log in from a terminal without color support, and you have  set  MINICOM  in
            your  startup (.profile or equivalent) file, and don't want to re-set your environment variable, you can type
            'minicom -c off' and run without color support for that session.
       configuration
            The configuration argument is more interesting. Normally, minicom  gets  its  defaults  from  a  file  called
            "minirc.dfl".  If you however give an argument to minicom, it will try to get its defaults from a file called
            "minirc.configuration".  So it is possible to create multiple configuration files, for different ports,  dif?
            ferent  users etc. Most sensible is to use device names, such as tty1, tty64, sio2 etc. If a user creates his
            own configuration file, it will show up in his home directory as '.minirc.dfl'.
USE
      Minicom is window based. To popup a window with the function you want, press Control-A (from now on, we  will  use
       C-A  to mean Control-A), and then the function key (a-z or A-Z). By pressing C-A first and then 'z', a help screen
       comes up with a short summary of all commands. This escape key can be  altered  when  minicom  is  configured  (-s
       option or C-A O), but we'll stick to Control-A for now.

Saludos.
Gabriel.



Solo doy soporte para Ubuntu: Un sistema operativo superior, moderno, optimizado, seguro, evolutivo y completo.
+1
0
-1
Imagen de San_Apa
+1
0
-1

Hola Gabriel,
gracias por tu ayuda, tiene buena pinta el programa que dices. Probaré el minicom el miércoles, a ver si entiendo como se maneja el programa y funciona.

+1
0
-1
Imagen de San_Apa
+1
0
-1

Como finalmente no fui capaz de comprender el funcionamiento de minicom, lo que hice fue descargarme una librería, lnxcomm, que funciona con el puerto serie de manera que pueda intentar hacer algo con el puerto serie y así saber si funciona.

Primero averigué dónde estaba "mapeado" mi puerto serie con dmesg | grep tty y pude ver que estaba en /dev/ttyS0

Ésta fue la salida:

[ 31.423198] console [tty0] enabled
[ 32.973762] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 32.974171] 00:07: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 46.164243] audit(1269420031.656:2): type=1503 operation="inode_permission" requested_mask="a::" denied_mask="a::" name="/dev/tty" pid=4942 profile="/usr/sbin/cupsd" namespace="default"

Me descargué la librería, configuré el archivo de ejemplo que ya viene con la librería bloqueante.c para linux, con el siguiente código.

#define __LINUX_COM__ 

#include "com/serial.h"
#include 


int main()
{
printf("nada1");fflush(stdout);
    HANDLE fd; 
    DCB OldConf;
    char cad[16]="Enviando Texto";
    int n;
    
    //fd=Open_Port("COM1");               // Abre el puerto serie
    fd=Open_Port("/dev/ttyS0");
	printf("nada3");fflush(stdout);
    
    OldConf=Get_Configure_Port(fd);     // guardo la configuracion del puerto 
    
    Configure_Port(fd,B115200,"8N1");   // Configuro el puerto serie 
    
                                        // Bloqueante por defecto, pero tambien
                                        // se puede usar
                                        // IO_Blocking(fd,TRUE); 
printf("nada4");
    n=Write_Port(fd,cad,16);            // Escribo en el puerto serie
printf("nada2");
    while(Kbhit_Port(fd)<16);          	// Espero a leer hasta que se tengan
                                        // 16 bytes en el buffer de entrada 

    n=Read_Port(fd,cad,16);             // Leo el puerto serie 
    printf(cad);                        // Muestro los datos
    
    Set_Configure_Port(fd,OldConf);     // Restituyo la antigua configuracion 
                                        // del puerto 

    Close_Port(fd);                     // Cierro el puerto serie 
    
    printf("\nPresione ENTER para terminar\n");
    getchar();
    
    return 0;
}

Creo que se queda colgado en fd=Open_Port("/dev/ttyS0"); porque no llega a hacer la siguiente linea printf("nada3");fflush(stdout);

Mirando el manual de la librería dice:

Función de lectura del puerto.
 HANDLE Open_Port(char COMx[]);
Abre el puerto de comunicaciones, recibe como parametro una cadena con el nombre del puerto y
devuelve una variable de tipo HANDLE que es el manejador del puerto.
 COMx[] : Es una cadena que contiene el nombre del                puerto a abrir,      ejemplo.
     "COM1"             , "COM2"            , "COM3"            , "COM4"            ,  ...
     "/dev/ttyS0" , "/dev/ttyS1" , "/dev/ttyS2" ,                 "/dev/ttyS3" ,       ...
     "/dev/ttyUSB0", "/dev/ttyUSB1", "/dev/ttyUSB2",              "/dev/ttyUSB3",      ...
     "/dev/ttyACM0", "/dev/ttyACM1", "/dev/ttyACM2",              "/dev/ttyACM3",      ...
 Retorna:      El manejador de Puerto Abierto

Así que no se como interpretar... si como que no funciona el puerto serie o como si hay algún otro error.

Ojalá a alguien me puda dar una pista para continuar probando cosas.
Muchas gracias

+1
0
-1
Imagen de San_Apa
+1
0
-1

Hola sólo quería traer otra vez este tema arriba para ver si alguien que lo lee puede echarme una mano.

+1
0
-1
Imagen de mariodm1
+1
0
-1

hola a todos los ubunteros yo tengo el ubuntu 9.04 y creo que ay un programa para el puerto de serie le das a aplicaciones,añadir y quitar programas y en en la parte superior derecha escribes puerto y te saldra terminal por puerto de serie le das y te lo descargas.saludos

+1
0
-1