| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Mar 07 Oct, 2008 11:01 am Asunto: Comunicaciones Serie con Adaptador USB-Serie |
|
|
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 |
|
 |
juanma Cmdr

Registrado: 17 Nov 2005Mensajes: 127Ubicación: Almeria - España
|
Publicado: Mie 08 Oct, 2008 1:19 pm Asunto: |
|
|
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 |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Mie 08 Oct, 2008 2:17 pm Asunto: |
|
|
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 |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Jue 09 Oct, 2008 9:48 am Asunto: |
|
|
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 |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Jue 09 Oct, 2008 12:55 pm Asunto: |
|
|
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 |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Jue 09 Oct, 2008 5:22 pm Asunto: |
|
|
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 |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Vie 10 Oct, 2008 9:36 am Asunto: |
|
|
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 |
|
 |
Tor Master


Registrado: 22 Mar 2005Mensajes: 269Ubicación: obera, misiones, argentina
|
Publicado: Vie 10 Oct, 2008 11:07 am Asunto: |
|
|
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 |
|
 |
likibuay Master


Registrado: 24 Abr 2006Mensajes: 190Ubicación: COLOMBIA
|
|
| Volver arriba |
|
 |
philips Capt

Registrado: 16 Nov 2005Mensajes: 154
|
Publicado: Lun 20 Abr, 2015 3:32 pm Asunto: |
|
|
Prueba a cambiar esta línea
puertocom="COM" + IntToStr(npuerto);
por esta otra
puertocom="\\\\.\\" +"COM" + IntToStr(npuerto); |
|
| Volver arriba |
|
 |
|