C/Visual C - Com. Serie: No recibo lo mismo que envío

 
Vista:
sin imagen de perfil

Com. Serie: No recibo lo mismo que envío

Publicado por jaldonfer (31 intervenciones) el 27/11/2014 07:58:17
Hola a todos:

Estoy desarrollando un programilla en c que envia datos por el puerto serie por el que envio una serie de bytes ( 6 en concreto en las primeras pruebas ), pero no recibo lo mismo en el lado del "cliente"

Alguien sabe si hay que tener en cuenta algo como que se altera el orden de los bytes o algo por el estilo ?

Me parece raro por que no debería ser tan complicado, pero... no sé. Ó algo estoy haciendo mal o hayq ue tener en cuenta alguna cosa que se me escapa.

Muchas Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Com. Serie: No recibo lo mismo que envío

Publicado por Tom (619 intervenciones) el 27/11/2014 18:29:56
Pues así ... sin ver cómo envías ni cómo recibes, poco se te puede contar ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Com. Serie: No recibo lo mismo que envío

Publicado por jaldonfer (31 intervenciones) el 27/11/2014 21:49:38
Hola:

Gracias por la respuesta

Tienes razón.... Lo cierto es que no puse el código por que no lo creí necesario.

Adjunto pongo las funciones de abrir puerto, preparar estructura de, leer y escribir:
NOTA: Se trata de trozos de código. Los nombres de las variables no tienen por
que coincidir en todos los casos. ( Lo cierto es que el programa funciona pero no recibo lo mismo que envio )


------------------------------------------------------------------------------------------------------------------------

//Abrimos el puerto
Lcl_InFd = open( &gl_PortDevice[0], ///dev/ttyS0
O_RDWR | O_NOCTTY | O_NDELAY
);


//SEt Baud Rate
cfsetispeed(&Lcl_Options, B9600); //......
cfsetospeed(&Lcl_Options, B9600); //......

//No sé que es exactamente pero es necesario
Lcl_Options.c_cflag |= ( CLOCAL | CREAD );

//Seteamos el tamaño de los caracteres
Lcl_Options.c_cflag &= ~CSIZE; //Mask the character size bits
Lcl_Options.c_cflag |= CS8; //Select 8 data bits

//Configurar opciones
Lcl_Options.c_cflag &= ~PARENB; //......
Lcl_Options.c_cflag &= ~CSTOPB; //......
Lcl_Options.c_cflag &= ~CSIZE; //......
Lcl_Options.c_cflag |= CS8; //......

//Disable Hardware flowcontrol
//Lcl_Options.c_cflag &= ~CNEW_RTSCTS; -- not supported

//Enable Raw Input
Lcl_Options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);

// Disable Software Flow control
Lcl_Options.c_iflag &= ~(IXON | IXOFF | IXANY);

// Chose raw (not processed) output
Lcl_Options.c_oflag &= ~OPOST;

------------------------------------------------------------------------------------------------------------------------

//Leemos del puerto
Lcl_Bytes = read( Lcl_InFd,
&Lcl_Buffer,
CONST_MAX_LONG_TRAMA
);

------------------------------------------------------------------------------------------------------------------------


//Escribir mensaje en el puerto
Lcl_Cant = write( Lcl_InFd,
&InTextToSend,
Lcl_InCantBytesToSend //sizeof(InTextToSend)
);


------------------------------------------------------------------------------------------------------------------------


La verdad es que agradecería si alguien me pasa un simple código para enviar recibir datos por el puerto serie que funione bien. He probado un montón de ejemplos de internet y ninguno me funciona correctamente.

Muchas Gracias

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Com. Serie: No recibo lo mismo que envío

Publicado por jaldonfer (31 intervenciones) el 28/11/2014 10:23:29
Hola:

Gracias por la respuesta. Finalmente ayer lo conseguí hacer ( era un problema mío de que no trataba corestamente las longitudes de variables )

De todas formas gracias por la ayuda.
Le he echado un ojo a los links que me has pasado y son muy interesantes.

Me ayudaré con ellos.

Gracias de nuevo

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar