• Viernes 15 de Noviembre de 2024, 09:28

Autor Tema:  Ejecutar Una Funcion De Un Libreria  (Leído 2356 veces)

JONMI

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Ejecutar Una Funcion De Un Libreria
« en: Jueves 3 de Junio de 2004, 12:58 »
0
HOLA,

Estoy desarrollando una aplicacion para una almacen en MS Access, dicho almacen tiene unos cajones los cuales tienen un pequeño LED cada uno. El PC del almacen tiene una tarjeta que controla dichos LED(luces(las enciende y las apaga)).

Esa tarjeta tiene unas librerias bastante viejas con unas funciones con las que mandandole como parametro el numero de LED, enciende dicha luz.Lo que yo quiero es cogiendo los datos la base de datos encender una luz de un kajon segun el articulo seleccionado.

El problema es que no consigo utilizar las funciones de las librerias que controlan la tarjeta. Estas librerias son de extension *.lib y estan programadas en QBASIC.

Es posible acceder a este tipo de librerias desde VBA?(desde Herramientas-Referencias no se puede, no permite refenciar ese tipo de librerias)

si no es posible, como puedo convertirlas a .DLL o hacerlas accesibles desde VBA?

si alguien conoce la solucion alguna minima ayuda, agradeceria muchisimo una respuesta.Si no lo sabes gracias por leer el mensaje de todos modos.

hasta otra  
 :kicking:

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Ejecutar Una Funcion De Un Libreria
« Respuesta #1 en: Jueves 3 de Junio de 2004, 14:49 »
0
Hola JONMI.

Yo iría viendo dos posibilidades:

1-
Citar
con unas funciones con las que mandandole como parametro el numero de LED, enciende dicha luz
Si conoces la forma en que son ejecutadas las funciones y como se le envía el parámetro (un archivo de proceso por lotes, por ejemplo) la solución podría pasar por ejecutar desde vb mediante 'Shell' el mandato adecuado con sus correspondientes parámetros al caso...

2-
Si la aplicación QBASIC no está compilada (QBASIC es un lenguaje interpretado), dispondrás del fuente del mismo... pues aunque fuese trabajoso te podría convenir analizar el código, conocer la forma de funcionamiento de la tarjeta, y a partir de ahí empezar a analizar que camino te convendría tomar (tal vez un programa en C...).

Espero que estos apuntes te sirvan de algo. Suerte.

Abur.

JONMI

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Ejecutar Una Funcion De Un Libreria
« Respuesta #2 en: Jueves 3 de Junio de 2004, 15:20 »
0
Lo primero, gracias por la respuesta

Espero que pueda solucionar mi problema con tu ayuda,

eskerrik asko,

agur

JONMI

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Ejecutar Una Funcion De Un Libreria
« Respuesta #3 en: Viernes 4 de Junio de 2004, 14:51 »
0
tengo  otra pregunta, hay una instruccion llamada Declare que sirve para acceder a funciones de librerias DLL, me gustaria saber si es posible acceder a librerias *.LIB con esta instruccion, yo no lo consigo pero no controlo muy bien la sintaxis.

alguna solucion?

muchas gracias

:devil:

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Ejecutar Una Funcion De Un Libreria
« Respuesta #4 en: Sábado 5 de Junio de 2004, 08:34 »
0
Kaixo JONMI!

Mediante Declare, como muy bien dices, puedes utilizar una función externa ,residente en una librería dinámica (normalmente C/C++) en tu propio programa. La sintáxis viene dada por la forma
Citar
[Public | Private] Declare Sub nombre Lib "nombre_biblioteca" [Alias "nombre_alias"] [([lista_argumentos])]
Donde 'Public' o 'Private' marcan el ámbito o alcance de la función, 'nombre' indica el nombre de la función, 'nombre_biblioteca' indica la ruta y nombre de archivo de la biblioteca que contiene la fn, 'Alias' proporciona un nombre alternativo para referirte a ella en el caso de que el nombre de la función coincida con algún otro identificador usado en el programa y 'lista de argumentos' indica la lista de parámetros , si la hubiese, que recibe la función, declarados de igual forma que en VB (tipo nombre, otrotipo otronombre, ...).

Conseguir utilizar o no una función en una biblioteca con extensión LIB, viene dado por que la biblioteca cuente con el correspondiente 'punto de entrada' para la función extern. También de que conozcas para especificar en la declaración el número y tipo de los argumentos que recibe.

Espero que esto te sea de ayuda, Suerte.

Agur.

JONMI

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Ejecutar Una Funcion De Un Libreria
« Respuesta #5 en: Lunes 7 de Junio de 2004, 09:27 »
0
hola Brroz,

lo primero gracias por contestarme.

Private Declare Function PonDisplay Lib "DISLED.LIB" (NNUMDIS, NPUERTOIO)
Private Declare Function EnciendeLed Lib "DISLED.LIB" (NNUMLED, NPUERTOIO)

...
I = PonDisplay(CInt(Me!KOPUR), 772)
I = EnciendeLed(CInt(Me!lagun.Column(0, 0)), 772)
...

He probado a utilizar la instruccion declare, pero al llamar a la funcion declarada con DECLARE me da un error:"No se encontro el archivo DISLED.LIB"

dicho archivo esta en el escritorio, igual que mi programa. Tambien he probado a escribir la ruta entera C:\documents and settings... y me da el mismo error.

Cual puede ser la razon?

gracias de nuevo

:rolleyes:

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Ejecutar Una Funcion De Un Libreria
« Respuesta #6 en: Viernes 11 de Junio de 2004, 10:40 »
0
Kaixo JONMI.

Disculpa la tardanza...

Espero que ya hayas arreglado el tema, pero...

Citar
:"No se encontro el archivo DISLED.LIB"
El mensaje es bien claro: comprueba que la ruta y el nombre de archivo estén bien escritos y que el archivo se encuentre en la ubicación que especificas.

Agur!

JONMI

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Ejecutar Una Funcion De Un Libreria
« Respuesta #7 en: Viernes 11 de Junio de 2004, 15:56 »
0
epa brroz,

lo primero eskerrik asko por la ayuda ke me has prestado,

el error:"No se encontro el archivo DISLED.LIB", creo que se debe a que el fichero es ilegible por VB. He estado hablando con el que hizo la libreria y me ha dicho que tendra que reescribir la libreria en un dll para que pueda utilizar sus funciones desde VB. lo jodido es que me ha dicho ke me va mandar un presupuesto. Cuando el hizo la libreria se pago un dinero por su trabajo. Nos dio la libreria pero no nos dio el codigo fuente, crees que se lo puedo exigir para reescribir yo esa libreria?

muchas gracias de nuevo. :comp:  :kicking:  :devil:

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Ejecutar Una Funcion De Un Libreria
« Respuesta #8 en: Martes 15 de Junio de 2004, 18:06 »
0
Hombre, exigir, exigir... me parece que lo tienes un poco crudo. Creo que lo mejor es que llegueis a un acuerdo por un precio razonable.
También podrías intentar conseguir las especificaciones del hardware que os instaló, y a partir de ahí, si las consigues, pregunta en el foro de Microcontroladores (o tal vez elmango80 te pueda echar un cable).

Agur.

sujey_sanchez

  • Miembro activo
  • **
  • Mensajes: 26
    • Ver Perfil
Re: Ejecutar Una Funcion De Un Libreria
« Respuesta #9 en: Miércoles 30 de Junio de 2004, 03:48 »
0
Te recomiendo, que si tienes instalado el Visual Studio, hagas el DLL con Visual C++, de ejemplo consulta esta paguina: http://alonso_m.tripod.com/visualc/creardll.htm  

Espero te sirva...
Sujey