Título: VB 2008 SerialPort Publicado por: 01munrra en 31 Julio 2019, 15:05 pm Saludos!
Compañeros estoy ralizando un aplicacion en VB 2008 en la cual tengo mas de 4 formularios y en cada formulario estoy obteniendo los datos a traves de un dispositivo via usb, entonces estoy usando serialport para la lectura de diferentes sensores que tengo, y como no puedo estar leyendo el puerto en cada formulario, ya que me generaría un error, quisiera saber si me convendría hacerlo las lecturas añadiendo un Modulo al proyecto, y de ser asi como hacerlo? Título: Re: VB 2008 SerialPort Publicado por: Serapis en 31 Julio 2019, 16:47 pm De entrada este no es el for para VB.NET si no el de VB 6.0, peor bueno, ya lo moverá algún admin si se percata...
Creas una clase y que sea la clase la que haga todo el trabajo de lectura. La clase ha de tener una única instancia, luego... debe ser creada en un módulo (de forma privada), y tener una propiedad pública para obtener acceso a la instancia. Así cada formulario logra acceso a la misma, previo registro. El registro de cada formulario sobre la clase, es para identificar cuantos consumidores de datos tiene la clase y si es posible, derivar el contenido únicamente al consumidor final. Esto es, la clase debe mantener una colección de objetos a los que lanzar algún evento. ...de modo informal y rápido (en pseudocodigo): Código: ' Esta sería la clase de la que se crea una sola instancia y que realiza todo el trabajo de lectura del puerto... e informa a los consumidores 'registrados'. OJO: No confundir colInformation con las instancias de clsInformation, ni sus métodos. colInformation es una clase de tipo colección, que como cualquier colección tendrá los típicos métodos Add, Delete, Search, Contains, etc... vamos para añadir, eliminar y buscar. Y al menos que pueda buscarse por un string o un entero, luego dicha clase no requiere más descripciones, son genéricas. En cambio las instancias de clsInformation son otro objeto distinto, que se describe más abajo y su única relación con colInformation es que dichas instancias son guardadas ahí, lo mismo que un array de bytes guardaría bytes, pero el byte y el array son dos tipos distintos. Por su parte el módulo sería más o menos crear la única instancia de la clase y entregarla a cada uno que la solicite. Su único cometido es que como nadie fuera de l ámbito d ela clase puede crear instancias de la clase, creara él, una única instancia y entregar referencia de la misma a qien la solicite si pudo registrarse. Código: Modulo Repartidor La clase clsInformation tampoco tiene mucha miga, es sólo una clase con 1 constructor, y 2 métodos/propiedades y un evento. Cuando se reciben datos dispara su evento para entregarlos a quien creó su instancia. La otra propiedad (Id) identifica únivocamente a una instancia (solo es preciso si la clase lectora está capacitada para determinar el destino de los datos. Y por tanto, si procede quizás el ID, en vez de ser aleatorio debe tener una cadena fija establecida desde e lprincipio (incluso desde código) conocida por todos, esto básicamente una enumeración...). Código: clase clsInformation Finalmente tus formularios tendrían un código similar a: (vamos lo necesario para tratar con los objetos desceritos antes) Código: Class formulario ...seguramente al 100% no podrás aplicarlo, ya que has sido parco en descripciones, es imposible acertar a darte la solución que se adapta al 100% sin cambios con tus necesidades. Sin embargo ofrece la suficiente info, como para entender que cambios son precisos hacer para adaptarlo a tus necesidades. El resto es trabajo tuyo... Título: Re: VB 2008 SerialPort Publicado por: 01munrra en 31 Julio 2019, 17:19 pm Joder NEBIRE me a servido de mucho tu explicación, me has respondido un par de dudas que tenia y no la había posteado, mil gracias!! ;-)
|