Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: gera en 12 de Octubre de 2014, 10:52:19
Título: Pasar estructura por puerto serie en VB2010
Publicado por: gera en 12 de Octubre de 2014, 10:52:19
Hola amigos!! Cómo están? Estoy necesitando pasar un conjunto de variables desde la PC a un PIC por puerto serial. Usualmente hago esto en C y es muy fácil: Defino dos estructuras iguales, una en el PIC y otra en la PC:
Código: C
typedefstruct{
int16 calibration_max[8];
int16 calibration_min[8];
int16 kp,ki,kd, setpoint;
int16 track[MAX_SEGMENTS];
} config_t;
Luego, recorro la estructura byte por byte con un puntero char*, y voy enviando esos bytes por el puerto serie. En el PIC, recibo esos bytes y reconstruyo la estructura.
Esta vez opté por programar en Visual Basic porque es más sencillo hacer una GUI. Pero no tengo idea cómo están organizadas las estructuras en la memoria, o cómo recorrerlas con un puntero.
Alguien me puede orientar un poco? Gracias!!
Título: Re: Pasar estructura por puerto serie en VB2010
Publicado por: gera en 14 de Octubre de 2014, 14:37:58
Estuve investigando y al parecer podría hacerse con Buffer.BlockCopy(). Todavía no lo pruebo, pero la idea es copiar byte por byte los valores de la estructura en un array de bytes, y luego enviar eso por puerto serie. Sería algo así:
Código: Visual Basic
Dim config As config_t 'creamos la estructura
Dim len As Int = Marshal.SizeOf(config) 'calculamos el tamaño en bytes
Dim buff(len+1) AsByte'definimos un buffer de tamaño len
Buffer.BlockCopy(config, 0 , buff, 0, len)
buff(len)=vbCr
Cuando lo pruebe les comento cómo me fue.
PD:
Otra opción es la que muestran aquí: http://www.codeproject.com/Articles/8967/Marshaling-Structures Pero honestamente lo encuentro un poco confuso.