Jump to content


Photo

[RESUELTO] Puerto serie virtual (Seoane)


  • Please log in to reply
7 replies to this topic

#1 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 30 August 2010 - 12:35 PM

He leido el articulo publicado aqui (la pagina de Seoane) y he implementado la funcion a la cual llamo por medio del click de un boton. La estructura del programa esta asi:

D:\MiApp
D:\MiApp\MiApp.exe
D:\MiApp\VSPE_API.dll
D:\MiApp\VSPE_KEY.tx
D:\MiApp\VSPEUtils.dll


La ultima dll la inclui pues fuera del IDE de Delphi me la solicitaba.

Bueno el asunto es que al presionar el boton simplemente ¡no sucede nada!, bueno, mas especifico no se como ver que los puertos se han creado o cual fue el error, por el que no se crearon. Coloqué un CheckBox para ver si el resultado de la funcion era true pero no, nunca cambia o yo estoy mal en el codigo:



delphi
  1. procedure TForm1.btnCrearClick(Sender: TObject);
  2. begin
  3.   // Ejemplo de uso, crea los puertos COM10, COM11 y COM12
  4.   CheckBox1.Checked := CrearPuertos('10,11,12');
  5. end;



Alguna sugerencia??

Gracias!
  • 0

#2 seoane

seoane

    Advanced Member

  • Administrador
  • 1259 posts
  • LocationEspaña

Posted 30 August 2010 - 02:11 PM

Supongo que has usado el programa de instalación de Eterlogic para instalar el driver y luego has copiado tu ejecutable a la carpeta de instalación, y no al revés, es decir, mover las librerías de Eterlogic a la carpeta de tu programa  ^o|

Si estas seguro de que lo has instalado correctamente asegurate de que el VSPE_KEY.txt es correcto.

Y por ultimo corre el programa paso a paso y fíjate en cual de los "if" falla, así podemos buscar el motivo.

PD: Recuerda que el programa para crear puertos de eterlogic y el tuyo no pueden ejecutarse a la vez. Y para saber si un puerto se ha creado bien solo tienes que ir a la "Propiedades del sistema/Administrador de dispositivos" y veras que hay un puerto serie nuevo.


  • 0

#3 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 30 August 2010 - 02:40 PM

Supongo que has usado el programa de instalación de Eterlogic para instalar el driver y luego has copiado tu ejecutable a la carpeta de instalación, y no al revés, es decir, mover las librerías de Eterlogic a la carpeta de tu programa  ^o|

Si estas seguro de que lo has instalado correctamente asegurate de que el VSPE_KEY.txt es correcto.

Y por ultimo corre el programa paso a paso y fíjate en cual de los "if" falla, así podemos buscar el motivo.

PD: Recuerda que el programa para crear puertos de eterlogic y el tuyo no pueden ejecutarse a la vez. Y para saber si un puerto se ha creado bien solo tienes que ir a la "Propiedades del sistema/Administrador de dispositivos" y veras que hay un puerto serie nuevo.



Je pues ya lo hice de las tres formas:

1. Usando el programa de Eterlogic. Todo se ve bien en la ventana del programa sin embargo en "administrador de dispositivos no se ve el puerto serie

2. La primera prueba de mi programa fue creandolo y corriendolo directamente en la carpeta de instalacion.

3. Despues probe en una carpeta aparte y si, copie las dll de la carpeta de instalacion a la carpeta de mi programa.

Aun no ejecuto el paso a paso, ese me falta.

Tengo XP SP3 y D2010.
  • 0

#4 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 31 August 2010 - 04:09 PM

Bueno, continuando con esto resulta que al parecer habia un problema con la clave de activacion pues al hacer el debug paso a paso cuando busca el archivo VSPE_API_KEY.txt ahi salia de la funcion. Revise y encontre que hay una nueva version 0.438 desisntale la anterior, instale la nueva y ahora el error salta en el siguiente if:



delphi
  1. if not vspe_activate(PChar(Trim(Text))) then
  2.       begin
  3.         Exit;
  4.       end;



Pareceme que con D2010 no es valido el uso de PChar. Labor de investigacion pero si alguien ayuda pues.....no me enojo.  :p
  • 0

#5 seoane

seoane

    Advanced Member

  • Administrador
  • 1259 posts
  • LocationEspaña

Posted 01 September 2010 - 03:52 AM

Con el Delphi 2010 debes de utilizar AnsiString en vez de String.

Prueba con algo como esto:


delphi
  1. if not vspe_activate(PAnsiChar(AnsiString(Trim(Text)))) then
  2.       begin
  3.         Exit;
  4.       end;



No tengo delphi 2010 para probarlo, pero debería funcionar
  • 0

#6 seoane

seoane

    Advanced Member

  • Administrador
  • 1259 posts
  • LocationEspaña

Posted 01 September 2010 - 04:03 AM

Y recuerda también cambiar estas otras lineas:


delphi
  1. vspe_activate: function (key: PChar): BOOL; cdecl;
  2. vspe_createDevice: function (name, initString: PChar): Integer; cdecl;
  3. Id:= vspe_createDevice('Connector',PChar(Str + ';0'));



Por esta otra


delphi
  1. vspe_activate: function (key: PAnsiChar): BOOL; cdecl;
  2. vspe_createDevice: function (name, initString: PAnsiChar): Integer; cdecl;
  3. Id:= vspe_createDevice(PAnsiChar('Connector'),PAnsiChar(AnsiString(Str + ';0')));


  • 0

#7 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 01 September 2010 - 01:08 PM

Gracias por la ayuda!

En cuanto tenga un tiempecito ( y no este en delphiAccess  :D ) lo pruebo!


  • 0

#8 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 01 September 2010 - 05:50 PM

¡¡¡SALVE MAESTRO!!!

¡¡¡Funciono a la primera!!!

Curiosamente el administrador de dispositivos no ve los puertos virtuales creados, pero aplicaciones como el Hyperterminal si lo hacen tal y como adjunto en la imagen.

Ahora viene el darles uso desde la otra aplicacion.  :( :


Gracias por la ayuda y doy por resuelto este hilo.

Attached Files


  • 0




IP.Board spam blocked by CleanTalk.