Quiero saber si es posible transformas estas clases en dll y importarla

Iniciado por Meta, 10 Junio 2019, 21:04 PM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Hola:

Quiero saber si estas clases se puede transformar por llamarlo de alguna manera en una librería dll y que se pueda llamar y usarla en cualquier interfaz como C#, C++ .net y V b .net.

Por ejemplo, estas clases controla el puerto serie que puedes descargar aquí.

https://github.com/Gmatarrubia/LibreriasTutoriales

He aprovechado en su tiempo hacer un tutorial sobre esas clases creando una interfaz en C++ bajo Win32 solo consola y funciona, junto con Arduino. Aquí abajo dejo el enlace de como instalarlas y usarlas.

https://www.slideshare.net/Metaconta2/arduino-c-y-puerto-serie

Probando, hice otro tutorial solo crear una dll que muestra texto y una suma en el cual lo importas a C#, lo lee y funciona tal como indica en el enlace de abajo.

https://www.slideshare.net/Metaconta/crear-una-dll-en-c-y-llamarla-con-la-interfaz-c

Dada ya esta información y antes de empezar, quiero saber si lo que quiero hacer es posible.

Para dejarlo más claro, al crear la dll en C++ win32 como indica en el tutorial de arriba, al llamarlo o importarlo con C#, tiene que ser capaz de hacerlo cambiando valores como port, baudios, paridad, bits de stop y demás, algo similar indicado aquí.



Luego enviar comandos al puerto serie y recibirlos ya explicado arriba.

En resumen
:


1. De las clases del puerto serie convertirlas en una dll.

2. Una vez creada la dll, hacer una interfaz que se pueda configurar los parámetros del puerto serie.

3. Usar el puerto serie, enviado y recibiendo tramas de bytes como indica en este tutorial ya dicho.

¿Alguna idea?

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

RayR

Sólo lo vi por encima, pero no hay nada ahí que impida o dificulte convertirlo a dll. Los puntos a tener en cuenta son los de siempre con las dll: si quieres que sea posible acceder desde programas creados con otros compiladores/lenguajes, como es tu caso, no puedes exportar clases ni funciones miembro; las funciones a exportar deberán tener el modificador extern "C"; etc.

La clase Serial en su constructor recibe como parámetro el nombre del puerto, pero el resto de la configuración la hace con valores fijos (dcbSerialParams.BaudRate=CBR_9600;
dcbSerialParams.ByteSize=8;). Puedes cambiar ese constructor para que acepte el resto de parámetros y los configure. Y creas y exportas una función con la misma cantidad de parámetos que se encargue de crear el objeto pasándole esos parámetros al constructor. Lo mismo para poder enviar y recibir datos, deberás crear y exportar funciones que llamen y le pasen los parámetros a ReadData y WriteData.