Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Comunicaciones Serie con Adaptador USB-Serie

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Comunicaciones Serie con Adaptador USB-Serie Responder citando

Hola chicos tengo el código de más abajo funcionando correctamente si conecto mi aparato directamente al puerto Serie. Pero cuando utilizo un adaptador USB-Serie el programa no recibe nada. Lo curioso es que si prueba a comunicarme directamente con el periferico desde Hyperterminal todo funciona Okey, así que pienso que el fallo está en mi código, alguien tiene alguna sugerencia?

Código:

int CPic::UsaPuerto(int npuerto)
{
   DCB dcb;
   COMMTIMEOUTS ct;
   AnsiString puertocom;

   puertocom="COM" + IntToStr(npuerto);

   LPCTSTR comport=puertocom.c_str();

   // Cerramos el com por si estuviera abierto
   CloseHandle(hCom);

   hCom = CreateFile(comport, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
   GetCommState(hCom, &dcb);
   // Estabelecemos el bitrate a 19200 baudios
   dcb.BaudRate = CBR_9600;
   // sin paridad
   dcb.fParity = FALSE;

   // Sin control de flujo
   dcb.fOutxCtsFlow = FALSE;
   dcb.fOutxDsrFlow = FALSE;
   dcb.fDtrControl = DTR_CONTROL_DISABLE;
   dcb.fDsrSensitivity = FALSE;
   dcb.fOutX = FALSE;
   dcb.fInX = FALSE;
   dcb.fRtsControl = RTS_CONTROL_DISABLE;
   dcb.fAbortOnError = FALSE;

   // tamaño de los bits de datos 8 bits de datos
   dcb.ByteSize = 8;

   // sin paridad
   dcb.Parity = NOPARITY;

   // un bit de parada
   dcb.StopBits = ONESTOPBIT;

   SetCommState(hCom, &dcb);

   GetCommTimeouts(hCom, &ct);
   ct.ReadIntervalTimeout = 500;
   ct.ReadTotalTimeoutMultiplier = 500;
   ct.ReadTotalTimeoutConstant = 500;
   SetCommTimeouts(hCom, &ct);

   SetCommMask(hCom, EV_RXCHAR);

   char sbuf[100];
   DWORD n;

   sbuf[0] = VERSION;
   sbuf[1] = 0x00;
   WriteFile(hCom, &sbuf, 2, &n, NULL);
   memset(sbuf, 0, 100);
   ReadFile(hCom, &sbuf, 2, &n, NULL);
   if ((sbuf[0]=='v') &&(sbuf[0]>='1')) {
      num_puerto=npuerto;
      return(npuerto);
   }
   return(-1);
}


Gracias desde ya!
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Hola, he mirado el código por encima y creo que en
Código:
if ((sbuf[0]=='v') &&(sbuf[0]>='1')) {
...

siempre será falso, en todo caso será:
Código:
if ((sbuf[0]=='v') &&(sbuf[1]>='1')) {
...


Por cierto, yo utilicé un adaptador usb a serie sin problemas, para el ordenador es un puerto serie normal.

Saludos,
Juanma
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Jajaja menudo error había tenido de todos modos no era ese el problema, pues yo miraba el vector sbuf y seguía estando todo a '\0', pero se bueno se agredece la corrección pues 4 ojos ven más que dos... o eso dicen.

Esta mañana ya funcionaba todo correctamente se vé que ayer no tenía ganas de funcionar.

Cuidate Juanma y gracias!
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Tengo problemas de sincronización pasados unos cuantos envios/recepciones....

Alguien tiene alguna sugerencia?

Ciao.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Yo tuve los mismos problemas, así que termine utilizando unos paquetes. Te comento que los resultados fueron sorprendentes están muy completos. Dentro del zip tiene una guía de instalación para builder
http://sourceforge.net/projects/comport/
saludos tor
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Gracias caballero!!!

Se agradece mañana por la mañana me toca intentar con ellos...

ciao y gracias.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Pues nada estoy intentado instalarlo pero no hay forma....

Lo instalo me aparece en la paleta, luego cierro el builder, vuelvo a abrirlo y nada de nada... ahí sigo intentando....

Ciao.
_________________
OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

que versión de builder utilizas? Para evitar los problemas que desaparecen componentes de la paleta luego de una instalación generalmente se utiliza el compilador en un perfil de Windows con privilegios de administrador.
Intenta correr los ejemplos puede que el componente este solo oculto pero siga instalado.

saludos tor
_________________
Un experto es aquel que ya ha cometido todos los errores posibles en una materia muy concreta.
(Niels Bohr)
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Para los que utilizan ComPort
XE2 -XE7 Update + XE7 Fix hxxp://www.file-upload.net/download-9695984/ComPort-4.14.rar.html
_________________
><(((((º> From °l||l° §ÂN ÅNЮ€$ i§Lã$ °l||l°
_____________________
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Prueba a cambiar esta línea

puertocom="COM" + IntToStr(npuerto);

por esta otra

puertocom="\\\\.\\" +"COM" + IntToStr(npuerto);
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.