Foros del Web » Programación para mayores de 30 ;) » C/C++ »

transmision serial de un pc a otro

Estas en el tema de transmision serial de un pc a otro en el foro de C/C++ en Foros del Web. Estimados amigos saludos. Me encuentro realizando un programa en lenguaje c en el compilador dev-c++ que comunica serialmente dos pc, el codigo consiste en enviar ...
  #1 (permalink)  
Antiguo 17/06/2008, 19:07
 
Fecha de Ingreso: junio-2008
Ubicación: Puerto Ordaz
Mensajes: 6
Antigüedad: 15 años, 10 meses
Puntos: 0
transmision serial de un pc a otro

Estimados amigos saludos. Me encuentro realizando un programa en lenguaje c en el compilador dev-c++ que comunica serialmente dos pc, el codigo consiste en enviar un caracter desde una pc a otra el cual significa un inicio de transmisión, por el cual el pc de destino responderá enviando varios datos, hasta alli lo tengo bien; pero el pc de destino debe enviar un caracter como fin de transmisión en este caso FF, dentro de mi programa principal me encuentro preguntando por FF pero nunca lo detecta. Se q tiene q ver con el codigo ascii pero he intentado y nada, agradeceré enormemente sus ayuda.
  #2 (permalink)  
Antiguo 17/06/2008, 21:33
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: transmision serial de un pc a otro

Dado que no pones codigo fuente inventare' que el codigo que usas para recibir el caracter FF lo tienes definido como char. Te recomiendo usar un int en vez de char y probar nuevamente, aunque lo recibido sea un char, el definir como int el tipo te asegurara que la comparacion pueda tener exito alguna vez.

Trata con int!

Alternativamente, coloca un trozo de codigo relevante a la pregunta...
  #3 (permalink)  
Antiguo 18/06/2008, 08:59
 
Fecha de Ingreso: junio-2008
Ubicación: Puerto Ordaz
Mensajes: 6
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: transmision serial de un pc a otro

Hola amigo gracias por la sugerencia, mas o menos asi es el trozo del codigo

#define __WINDOWS_COM__ //Para el sistema operativo donde se esta trabajando
#include "com/serial.h" //Libreria con todo el protocolo de comunicacion
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>


int main()
{

HANDLE fd; //Manejador del puerto cuando es abierto.
DCB OldConf; //Parametros de retorno en la cominicacion
char cad[1] ="$";//Datos a transmitir para inicio de tx
char xx[2]; //Dato a recibir de 2 bytes
int n,i=0; //Inicializacion
char dat[2]="FF"; //Dato a comparar para fin de tx

fd=Open_Port("COM1"); //Abre el puerto Serie en windows
//fd=Open_Port("/dev/ttyS0");
OldConf=Get_Configure_Port(fd); //Guardo la configuracion del puerto
Configure_Port(fd,B9600,"8N1"); //9600 baudios, 8 bits de dato, paridad ninguna, 1 de bit de parada
Set_Hands_Haking(fd,0); //Control de flujo niguna


Write_Port(fd,cad,1); //Escribe o envia un caracter Inicio De TX
for (i=0;i<32;i++)
{
int Clean_Buffer( HANDLE fd);

if(Kbhit_Port(fd)<2) //Espero a leer hasta que se tengan 2 bytes en el buffer de entrada
n=Read_Port(fd,xx,2); // Leo el puerto serie
if(xx!=dat)
{
printf("dato: %s\n", xx);
}

else
printf("Fin de la transmision\n");
}


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;
}
  #4 (permalink)  
Antiguo 18/06/2008, 12:04
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: transmision serial de un pc a otro

No se si esto resuelva tu problema, pero se algo que tienes que mejorar.

Para comparar 2 arreglos ( como xx y dat ), a pesar que C permite el uso de los operadores == y != en realidad no compara los contenidos de los arreglos, para compararlos deberias usar algo como

if( strncmp( xx, dat, 2 ) != 0 )
printf("dato: %s\n", xx);

Te recomiendo definir tanto xx como dat como arreglos de largo 3 y no de largo 2, para reservar espacio para el fin de string.
  #5 (permalink)  
Antiguo 19/06/2008, 15:13
 
Fecha de Ingreso: junio-2008
Ubicación: Puerto Ordaz
Mensajes: 6
Antigüedad: 15 años, 10 meses
Puntos: 0
De acuerdo Respuesta: transmision serial de un pc a otro

Solucionado. Efectivamente necesitaba comparar las cadenas con la sentencia strncmp( xx, dat, 2 ) para reconocer el caracter y con esto implementar el fin de transmision. Segui cada uno de tus consejos Muchas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:00.