elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
22 Agosto 2008, 01:17  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación VB (Moderadores: ||MadAntrax||, E0N)
| | |-+  Crear Api
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Imprimir
Autor Tema: Crear Api  (Leído 1217 veces)
Slasher-K

Desconectado Desconectado

Mensajes: 1.480


Ver Perfil
Re: Crear Api
« Respuesta #15 en: 19 Julio 2005, 01:49 »

hwndList debe ser un registro de un tipo definido por el usuario pero no existe en la estructura, y lo otro no lo conozco o lo conozco de otra manera seguramente.

Postea la parte del codigo en donde te da el error, no fuiste muy explicito.

Saludos.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
Thaorius

Desconectado Desconectado

Mensajes: 1.075


Ver Perfil WWW
Re: Crear Api
« Respuesta #16 en: 19 Julio 2005, 02:41 »

En línea

Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí
Slasher-K

Desconectado Desconectado

Mensajes: 1.480


Ver Perfil
Re: Crear Api
« Respuesta #17 en: 19 Julio 2005, 04:34 »

El objeto MessageBlaster no existe mas en VB 6, es de versiones anteriores asi que ese codigo no sirve :(

Mira en AllApi.net, ahi hay codigos de ejemplo.

De todas formas si explicaras bien cual es tu objetivo seguramente existen otros metodos sin usar la API para hacerlo. Para crear otros menus no es necesario usar la API, podes crear uno solo, ponerle un indice y luego cargar nuevos con Load, pero explica bien que queres hacer.

Saludos.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
Thaorius

Desconectado Desconectado

Mensajes: 1.075


Ver Perfil WWW
Re: Crear Api
« Respuesta #18 en: 19 Julio 2005, 15:24 »

El software, es un control para un hardware maestro que cotrola un monton de dispositivos. Todo con pics.

Entonces, yo no quiero dar el codigo del exe. Sino el de 2 apis basicas. 1 contiene le code para generar lso menu. Cuestion de que si alguien desea añadir ponele 1 placa mas al hardware, solo agrega la opcion al menu y su respectiva funcion en la otra api. Aparte de esta otra api, tambine hay una por placa del hardware. que son cargadas por la segunda api.

Saludos
En línea

Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí
Slasher-K

Desconectado Desconectado

Mensajes: 1.480


Ver Perfil
Re: Crear Api
« Respuesta #19 en: 20 Julio 2005, 01:14 »

Ahora si ya se entiende el objetivo, jeje. Bueno lo que tenes que hacer no es escribir las funciones para crear un menu, sino las funciones para que realicen las tareas como agregar dispositivo, configurarlo, etc. y ponerlas en una DLL. El programador que utilice esa DLL se encargara de utilizar como quiera esas funciones, con menus, botones, etc.

Por ejemplo, creas una DLL (en VB son DLL ActiveX) y un modulo de objeto llamado HardClass. En este modulo podrias poner las funciones AgregarDispositivo, EnumerarDispositivos, CambiarOpcion y todas las relacionadas con el hardware que vas a controlar.

 Estas funciones son las que controlarian los dispositivos externos, pero cuando compilas la DLL el programador que la use la va a agregar como referencia al proyecto, entonces va a poder crear el objeto HardClass y usar sus funciones, pero el codigo no lo ve. Entonces eso depende del estilo propio del programador si pone un menu o un boton "Agregar Dispositivo".

Saludos.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
Thaorius

Desconectado Desconectado

Mensajes: 1.075


Ver Perfil WWW
Re: Crear Api
« Respuesta #20 en: 20 Julio 2005, 02:10 »

Por eso, las dlls en total, son estas:

GlobalFunctions.dll - Tiene funciones globales del programa, como el acceso al registro, programas de actualizacion, downloaders, etc.

Boards.dll - Contiene la informacion de control de cada dispositivo que controla el hardware central. Ya que esto se hace mediante el puerto paralelo y el pic que resive informacion y segun ella, hace tal o cual cosa con cierto dispositivo. Como el hard es libre, tambine se distribuyen esquemas y demas para la ampliacion del mismo.

Driver.dll - Contiene funciones ocmo ResetHardware, SendVols(pin), StopVolt(Pin), SendData(Pind) GetData(pin) y muchas mas.

Menu.dll - Ovbiamente esta dll genera los menus que el programador desida en indique y hacen referencia a boards.dll o al propio de cada componente(aun no lo desido).

Y aparte, 1 dll por placa que estarian contenidas en el directorio Boards dentro del dir madre dle programa. Estas son llamadas desde Boards.dll

Saludos
En línea

Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí
Slasher-K

Desconectado Desconectado

Mensajes: 1.480


Ver Perfil
Re: Crear Api
« Respuesta #21 en: 20 Julio 2005, 05:20 »

Bueno Menu.dll no deberias implementarlo de esa forma. Lo que deberias hacer es crear un objeto en board.dll con propiedades y metodos para enumerar los dispositivos, y que este objeto (por ejemplo podria llamarse UserClass) contenga una coleccion con todos los dispositivos, sus propiedades y metodos.

La estructura seria algo asi:

BOARDS.DLL

* Clase UserClass *
 - Este modulo de clase seria la interfaz entre el usuario y todos los dispositivos de hardware -

Código:
Property Get Devices(Indice) As DeviceClass

'Esta propiedad devolveria el objeto DeviceClass que contiene las propiedades y metodos para comunicarse con el dispositivo especificado en Indice. Indice puede ser un numero que identifica al dispositivo o podrias crear una funcion para buscarlo por el nombre -

End Property

Property Get DevCount() As Long

' Esta propiedad devuelve la cantidad de dispositivos de hardware -

End Property

Function EnumDeviceNames(outNames() As String) As Integer

' Esta funcion enumeraria los nombres de los dispositivos, podrias identificarlos con los nombres de las DLL o mejor, usar polimorfismo para implementar en las DLL de los dispositivos, y asi crear un objeto dinamicamente para comunicarte con ese dispositivo (mas adelante explico esto) -

End Function

Function FindDevice(Spec) As DeviceClass

' Podrias escribir una funcion que busque un dispositivo por el nombre o alguna otra propiedad -

End Function


Ahora el problema que se presenta es como comunicarse con los otros dispositivos ya que cada uno esta un una DLL diferente.

La solucion a esto es el polimorfismo, que es un concepto de la programacion orientada a objetos que permite la reutilizacion de codigo. Esto significa que yo puedo usar el mismo codigo para varias DLLs sin tener que copiarlo, lo que nos permite ampliarlo luego y uniformar un sistema.

La idea del polimorfismo para este proyecto es la siguiente:

1. Se crea una clase con todas las propiedades y metodos que tienen que tener todos los dispositivos, pero sin el codigo, solo las declaraciones (se dice que se crea la interfaz). Por ejemplo llamemosle IDevice. Entonces esta clase tendria por ejemplo las siguientes propiedades y metodos:

* Clase IDevice *

Código:
Property Get DeviceName() As String

End Property

Sub Reset()

End Sub

Sub SendVols(pin)

End Sub

Sub StopVol(pin)

End Sub

Sub SendData(pin)

End Sub

Sub GetData(pin)

End Sub

2. Creas una DLL con este modulo de clase (ninguna cosa mas a menos que se te ocurra) llamada devices.dll.

3. Cada DLL para un dispositivo tiene que incluir como referencia a devices.dll, y tener una clase predeterminada llamada DevMain que implemente al modulo IDevice (mas adelante explico como implementarlo).

 Ahora supongamos que tenemos un motor paso a paso y tenemos que crear la DLL stepengine.dll para este dispositivo. Entonces creamos el proyecto DLL ActiveX y hariamos lo siguente:

1. Agregar como referencia al proyecto el archivo devices.dll
2. Crear el modulo de clase predeterminado DevMain
3. Implementar el modulo IDevice que esta en devices.dll. Para esto existe la palabra clave Implements. Se puede usar solo a nivel de modulo en modulos de clase. En la parte de declaraciones ponemos:

Código:
Implements IDevice

Vas a notar que en la lista de objetos donde solo te aparecia Class, ahora te aparece IDevice, entonces hay que implementar cada funcion y propiedad.

En el modulo de clase quedaria algo como esto:

Código:
Private Property Get IDevice_DeviceName() As String

End Property

Private Sub IDevice_GetData(pin As Variant)

End Sub

Private Sub IDevice_Reset()

End Sub

Private Sub IDevice_SendData(pin As Variant)

End Sub

Private Sub IDevice_SendVols(pin As Variant)

End Sub

Private Sub IDevice_StopVol(pin As Variant)

End Sub

Eso significa que implementaste el modulo IDevice en DevMain de engine.dll. Ahora solo queda escribir el codigo que queramos que se ejecute para cada metodo, y crear los metodos propios de la clase.

¿esto para que sirve?, bueno antes habia dicho "unificacion", y esto quiere decir que, por ejemplo, no importa el codigo que haya que escribir en el metodo Reset de un motor paso a paso o de una licuadora (por decir algo :P), siempre van a ser lo mismo para el programa. Es decir que la clase DevMain de cualquier dispositivo va a ser la misma, esto se llama polimorfismo ;D.

Bueno continuo con la idea. Una vez que escribis el codigo para cada metodo, y propiedad, creas las mismas propiedades y metodos para la clase, ya que cuando se implementa un modulo no forma parte de la interfaz de la clase donde se implementa.

Esta parte es sencilla porque solo llamamos a los metodos de la clase implementada:

Código:
Property Get DeviceName() As String
  DeviceName = IDevice_DeviceName
End Property

Sub GetData(pin As Variant)
  Call IDevice_GetData(pin)
End Sub

Sub Reset()
  Call IDevice_Reset
End Sub

Sub SendData(pin As Variant)
  Call IDevice_SendData(pin)
End Sub

Sub SendVol(pin As Variant)
  Call IDevice_SendVol(pin)
End Sub

Sub StopVol(pin As Variant)
  Call IDevice_StopVol(pin)
End Sub

Luego se le pueden agregar mas clases al dispositivo, pero esta clase tiene que ser la misma para que todos los dispositivos tengan algo en comun.

Una vez hecha la parte de dispositivos hay que enumerarlos y poder llamar a sus metodos, y esta es la parte mas sencilla.

Para enumerarlos simplemente se pueden enumerar los nombres de las DLLs, y para comprobar si son validos crear los objetos predeterminados usando la funcion GetObject.

Entonces primero se agrega como referencia a Boards.dll el archivo drivers.dll, luego en la funcion EnumDeviceNames enumeras los nombres de los archivos y los guardas en una matriz de Strings, creas una variable de tipo IDevice.

Código:
'Modulo UserClass de boards.dll

Property Get Devices(Indice) As DeviceClass
        Dim csDevice As IDevice

  Set csDevice = GetObject(sDriver(Indice), "DevMain")

  Set Devices = csDevices
End Property

DeviceClass es una clase que se encuentra en boards.dll y tambien implementa IDevice, pero se le puede agregar mas propiedades y metodos.

Bueno espero que te haya servido.

Saludos.
En línea



A la reina de las profundidades que cuida los pasos de una sombra en la noche :*
Thaorius

Desconectado Desconectado

Mensajes: 1.075


Ver Perfil WWW
Re: Crear Api
« Respuesta #22 en: 20 Julio 2005, 19:43 »

Algunas cosas no las entendi, porque no me llevo bine con las dlls en vb y las clases.
Y ose hacer dlls pero en c++, pero como no me da el cuero para desarollar la aplicacin en c++ tengo que usar el vb.

Voy a tratar e hacerlo.

Saludos
En línea

Si te sirvio mi aporte, encontrarás más en www.teoxstudios.com. Gracias!
Buscando un buen hosting? Click aquí
Páginas: 1 [2] Ir Arriba Imprimir 
Ir a:  





Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.5 | SMF © 2006-2008, Simple Machines LLC