Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-01-2006
Avatar de mafebresv
mafebresv mafebresv is offline
Miembro
 
Registrado: ene 2006
Posts: 14
Poder: 0
mafebresv Va por buen camino
Compartir "objetos" entre varias instancias

Hola

Estoy desarrollando una aplicacion que hace uso de un componente para enviar y recibir data
a traves del puerto serial. Para manejar el envio de comandos empleo un objeto TStringList
donde almaceno los comandos que necesito y un timer chequea cada X milisegundos si hay algun
comando en espera. Si hay un comando, lo envia y lo borra de la lista. Hasta aca no hay
ningun problema.

Lo que necesito ahora es poder iniciar X instancias del programa, pero como sabemos,
el puerto serial es de uso exclusivo y solo podria ser usado por la primera instancia.
Solucion? Compartir de alguna forma el componente encargado del puerto serial y el objeto
TStringList para que sean accesibles por todas las instancias del programa.

¿Es esto posible? ¿Cual seria la mejor manera de hacerlo?
DLL? BPL? COM? Memory mapped files?


Saludos

--
Miguel Febres
Psiconalista de Sistemas
Cel. 9797-1346
Mail: mafebresv@q-protex.com
www.q-protex.com
Responder Con Cita
  #2  
Antiguo 16-01-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Solucióname una duda, por favor. Cuando dices que el puerto "Serial" es de uso exclusivo, ¿a qué te refieres exactamente? ¿A que una aplicación accede de forma exclusiva al puerto "Serial"? Si esto es así, ¿no son varias instancias de una aplicación, a todos los efectos, aplicaciones distintas, procesos distintos?

Pero, como preguntas lo que preguntas, ¿acaso probaste ya con varias instancias de tu programa y tuviste problemas para trabajar con ellas? Es de suponer que sí, entonces, ¿porqué crees que el problema puede estar en la "exclusividad" del puerto "Serial"? ¿Te aparece un error que te dice algo así o qué?

Bueno. He comenzado pidiéndote por favor que me solucionaras una duda pero ya van más de una y más de dos. Me disculpo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 16-01-2006
Avatar de mafebresv
mafebresv mafebresv is offline
Miembro
 
Registrado: ene 2006
Posts: 14
Poder: 0
mafebresv Va por buen camino
Hola dec

"Solucióname una duda, por favor. Cuando dices que el puerto "Serial" es de uso exclusivo, ¿a qué te refieres exactamente? ¿A que una aplicación accede de forma exclusiva al puerto "Serial"? Si esto es así, ¿no son varias instancias de una aplicación, a todos los efectos, aplicaciones distintas, procesos distintos?"

Asi es. Solo una aplicación puede abrir el puerto serial, despues de eso, cualquier aplicación (o instancia) que desee abrirla no podrá y saltará un error. (puerto serial ya abierto)


"Pero, como preguntas lo que preguntas, ¿acaso probaste ya con varias instancias de tu programa y tuviste problemas para trabajar con ellas? Es de suponer que sí, entonces, ¿porqué crees que el problema puede estar en la "exclusividad" del puerto "Serial"? ¿Te aparece un error que te dice algo así o qué?"

Como comenté anteriormente, solo la primera instancia de la aplicación puede abrir el puerto serial (obviamente si no hay alguna otra aplicación usandolo) y hasta aca no hay problemas. El problema es que es necesario que la aplicación pueda ser iniciada 2,3 o mas veces y todas esas instancias puedan usar el puerto serial. Entonces ahi viene el problema...
La solución sería que la primera instancia busque si ha sido cargada, digamos, una dll que contiene el componente que se encarga de la comunicación serial y un TStringList. Si está cargada la usa y tiene acceso a esos 2 objetos y si no está cargada la carga en memoria para que pueda ser usado por las demás instancias. Mi duda es, si esto es posible hacerlo...

"Bueno. He comenzado pidiéndote por favor que me solucionaras una duda pero ya van más de una y más de dos. Me disculpo."

No tienes que disculparte, mas bien gracias por interesarte.

Saludos
Responder Con Cita
  #4  
Antiguo 16-01-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Por que no creas una sola aplicación (por ejemplo un servidor com o un servidor indy) que se conecte al puerto serial, y luego todas las instancias de tu programa se conectarán a este "servidor serial" para realizar las operaciones.

Así, lo único que faltaría es serializar en este servidor las operaciones que llegan por los diferentes clientes de manera que solo haya una línea para leer y/o escribir datos al puerto.

Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 16-01-2006
Avatar de mafebresv
mafebresv mafebresv is offline
Miembro
 
Registrado: ene 2006
Posts: 14
Poder: 0
mafebresv Va por buen camino
Ingeniosa idea jachguate

No se me había ocurrido esa solución.
Voy a implementarlo usando TIdUDPServer y TIdUDPClient

Ya les contaré como me fue.
__________________
Miguel Febres
Psiconalista de Sistemas
mafebresv@q-protex.com
www.q-protex.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Compartir AciveX entre formulario Coco_jac Varios 2 03-10-2005 22:28:04
Varias instancias DataModules rodmayes OOP 1 05-09-2005 13:37:45
DataModule llamado desde varias instancias floren OOP 4 06-04-2004 19:27:50
Fichas compartidas entre varias opciones Marina Varios 3 25-11-2003 15:49:25
consultas entre varias tablas Irina SQL 3 27-05-2003 19:58:32


La franja horaria es GMT +2. Ahora son las 08:50:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi