problemas con DLL y Visual Basic

09/11/2003 - 02:53 por antidesco | Informe spam
Hola
tengo un problema para pasarle un parámetro a una DLL que construí.

por ejemplo la función de prueba es la siguiente

BYTE First, Second;
unsigned char BuffCRC_A[] = {0xa0, 0x16, 0x00, 0x22, 0x00, 0x23, 0x03,
0xf0, 0xc4, 0x54, 0xe6 ,0xe6, 0x00, 0xc0, 0x02, 0x81,0x00, 0x00 ,0x00,
0x02}; /* , 0xe8, 0x4d */

ComputeCrc(2 , &BuffCRC_A[0], 20, &First, &Second);
return (First);

esta función retorna en decimal en la variable First 0xe8 y en la variable
Second 0x4d, hasta allí todo bien.

la cuestión es que necesito pasarle la cadena {0xa0, 0x16, 0x00, 0x22,
0x00, 0x23, 0x03, 0xf0, 0xc4, 0x54, 0xe6 ,0xe6, 0x00, 0xc0, 0x02,
0x81,0x00, 0x00 ,0x00, 0x02}, desde visual Basic y no se como, para que
funcione, supongo que deberìa pasarla como string y luego hacer la
transformación
el C++ no es mi fuerte así que agradecería cualquier ayuda.
de antemano gracias

Preguntas similare

Leer las respuestas

#1 Rubén Vigón
10/11/2003 - 09:24 | Informe spam
El tipo "unsigned char" de C/C++ (que admite valores de 0 a 255) se corresponde con el tipo "byte"
de Visual Basic; la definición y carga de el array sería algo así:

Dim BuffCRC_A(1 To 20) As Byte
BuffCRC_A(1) = &HA0
BuffCRC_A(2) = &H16
BuffCRC_A(4) = &H22
BuffCRC_A(6) = &H23
BuffCRC_A(7) = &H3
BuffCRC_A(8) = &HF0
BuffCRC_A(9) = &HC4
BuffCRC_A(10) = &H54
BuffCRC_A(11) = &HE6
BuffCRC_A(12) = &HE6
BuffCRC_A(14) = &HC0
BuffCRC_A(15) = &H2
BuffCRC_A(16) = &H81
BuffCRC_A(20) = &H2

Y para llamar a la función "ComputeCrc", por ejemplo:

ComputeCrc 2, BuffCRC_A(1), 20, First, Second

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic

(Guía de buen uso del foro)
http://perso.wanadoo.es/rubenvigon/foro
Respuesta Responder a este mensaje
#2 Rubén Vigón
10/11/2003 - 09:24 | Informe spam
El tipo "unsigned char" de C/C++ (que admite valores de 0 a 255) se corresponde con el tipo "byte"
de Visual Basic; la definición y carga de el array sería algo así:

Dim BuffCRC_A(1 To 20) As Byte
BuffCRC_A(1) = &HA0
BuffCRC_A(2) = &H16
BuffCRC_A(4) = &H22
BuffCRC_A(6) = &H23
BuffCRC_A(7) = &H3
BuffCRC_A(8) = &HF0
BuffCRC_A(9) = &HC4
BuffCRC_A(10) = &H54
BuffCRC_A(11) = &HE6
BuffCRC_A(12) = &HE6
BuffCRC_A(14) = &HC0
BuffCRC_A(15) = &H2
BuffCRC_A(16) = &H81
BuffCRC_A(20) = &H2

Y para llamar a la función "ComputeCrc", por ejemplo:

ComputeCrc 2, BuffCRC_A(1), 20, First, Second

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic

(Guía de buen uso del foro)
http://perso.wanadoo.es/rubenvigon/foro
Respuesta Responder a este mensaje
#3 José Manuel Agüero
10/11/2003 - 20:09 | Informe spam
Hola, antidesco:

Además de lo dicho por Rubén, quizá tengas que declarar así la función:

Declare Sub ComputeCrc Lib "Nombre de tu DLL" (Byval value1 As Long, ByRef BuffCRC As Byte, ByVal value2 As Long, ByRef First As Long, ByRef Second As Long)

Saludos.


"antidesco" escribió en el mensaje news:e%23$
| Hola
| tengo un problema para pasarle un parámetro a una DLL que construí.
|
| por ejemplo la función de prueba es la siguiente
|
| BYTE First, Second;
| unsigned char BuffCRC_A[] = {0xa0, 0x16, 0x00, 0x22, 0x00, 0x23, 0x03,
| 0xf0, 0xc4, 0x54, 0xe6 ,0xe6, 0x00, 0xc0, 0x02, 0x81,0x00, 0x00 ,0x00,
| 0x02}; /* , 0xe8, 0x4d */
|
| ComputeCrc(2 , &BuffCRC_A[0], 20, &First, &Second);
| return (First);
|
| esta función retorna en decimal en la variable First 0xe8 y en la variable
| Second 0x4d, hasta allí todo bien.
|
| la cuestión es que necesito pasarle la cadena {0xa0, 0x16, 0x00, 0x22,
| 0x00, 0x23, 0x03, 0xf0, 0xc4, 0x54, 0xe6 ,0xe6, 0x00, 0xc0, 0x02,
| 0x81,0x00, 0x00 ,0x00, 0x02}, desde visual Basic y no se como, para que
| funcione, supongo que deberìa pasarla como string y luego hacer la
| transformación
| el C++ no es mi fuerte así que agradecería cualquier ayuda.
| de antemano gracias
|
|
|
|
|
Respuesta Responder a este mensaje
#4 José Manuel Agüero
10/11/2003 - 20:09 | Informe spam
Hola, antidesco:

Además de lo dicho por Rubén, quizá tengas que declarar así la función:

Declare Sub ComputeCrc Lib "Nombre de tu DLL" (Byval value1 As Long, ByRef BuffCRC As Byte, ByVal value2 As Long, ByRef First As Long, ByRef Second As Long)

Saludos.


"antidesco" escribió en el mensaje news:e%23$
| Hola
| tengo un problema para pasarle un parámetro a una DLL que construí.
|
| por ejemplo la función de prueba es la siguiente
|
| BYTE First, Second;
| unsigned char BuffCRC_A[] = {0xa0, 0x16, 0x00, 0x22, 0x00, 0x23, 0x03,
| 0xf0, 0xc4, 0x54, 0xe6 ,0xe6, 0x00, 0xc0, 0x02, 0x81,0x00, 0x00 ,0x00,
| 0x02}; /* , 0xe8, 0x4d */
|
| ComputeCrc(2 , &BuffCRC_A[0], 20, &First, &Second);
| return (First);
|
| esta función retorna en decimal en la variable First 0xe8 y en la variable
| Second 0x4d, hasta allí todo bien.
|
| la cuestión es que necesito pasarle la cadena {0xa0, 0x16, 0x00, 0x22,
| 0x00, 0x23, 0x03, 0xf0, 0xc4, 0x54, 0xe6 ,0xe6, 0x00, 0xc0, 0x02,
| 0x81,0x00, 0x00 ,0x00, 0x02}, desde visual Basic y no se como, para que
| funcione, supongo que deberìa pasarla como string y luego hacer la
| transformación
| el C++ no es mi fuerte así que agradecería cualquier ayuda.
| de antemano gracias
|
|
|
|
|
Respuesta Responder a este mensaje
#5 antidesco
11/11/2003 - 01:05 | Informe spam
jeniales, gracias a Rubèn y a Josè, pase horas cabeceandome, ufff ya me
dolìa jejeje, y lo peor de todo es que pase al menos 3 veces por la soluciòn
que ustedes me dieron y no la vi, no saben la gran ayuda que han sido para
mi ;)


"José Manuel Agüero" <jmªgue®ø@v°daƒøne.e§> escribió en el mensaje
news:
Hola, antidesco:

Además de lo dicho por Rubén, quizá tengas que declarar así la función:

Declare Sub ComputeCrc Lib "Nombre de tu DLL" (Byval value1 As Long, ByRef
BuffCRC As Byte, ByVal value2 As Long, ByRef First As Long, ByRef Second As
Long)

Saludos.


"antidesco" escribió en el mensaje
news:e%23$
| Hola
| tengo un problema para pasarle un parámetro a una DLL que construí.
|
| por ejemplo la función de prueba es la siguiente
|
| BYTE First, Second;
| unsigned char BuffCRC_A[] = {0xa0, 0x16, 0x00, 0x22, 0x00, 0x23, 0x03,
| 0xf0, 0xc4, 0x54, 0xe6 ,0xe6, 0x00, 0xc0, 0x02, 0x81,0x00, 0x00 ,0x00,
| 0x02}; /* , 0xe8, 0x4d */
|
| ComputeCrc(2 , &BuffCRC_A[0], 20, &First, &Second);
| return (First);
|
| esta función retorna en decimal en la variable First 0xe8 y en la variable
| Second 0x4d, hasta allí todo bien.
|
| la cuestión es que necesito pasarle la cadena {0xa0, 0x16, 0x00, 0x22,
| 0x00, 0x23, 0x03, 0xf0, 0xc4, 0x54, 0xe6 ,0xe6, 0x00, 0xc0, 0x02,
| 0x81,0x00, 0x00 ,0x00, 0x02}, desde visual Basic y no se como, para que
| funcione, supongo que deberìa pasarla como string y luego hacer la
| transformación
| el C++ no es mi fuerte así que agradecería cualquier ayuda.
| de antemano gracias
|
|
|
|
|
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida