top of page
  • ntangeroratti

Leer Puerto Serial Visual Basic 6: Programación sólida con el método ReadLine ()



He estado cacharreando algo estos días con el arduino y me he puesto a aprender a controlar y comunicar el arduino con el portátil, os subo un ejemplo de como encender y apagar el led 13 mediante una aplicación realizada en visual basic 6.


La comunicación con visual basic es una comunicación serie que bien se puede realizar por los pines tx rx de Arduino o bien por el cable USB mediante CDC,que es como la he realizado yo en este ejemplo. Si tienes alguna duda no dudes en preguntar.




Leer Puerto Serial Visual Basic 6




Hola de nuevo. El código que has usado es como el mio solo que yo ya habia configurado el puerto serie en el propio control y no en form_load del formulario en visual, despues en vez de poner mscomm le puse serie de nombre, el resto es lo mismo que yo (quizás lo puse demasiado simplificado).


Yo creo que así tendría que funcionar, en cuanto puede hago un ejemplo y lo subo al blog, tu mientras vete probando, lo que tienes que modificar es ahora el programa en visual basic, para que se te sobreescriba el valor del label ya que va a estar seguido mandando valores el programa de arduino, hay muchas maneras de hacerlo. Espero que te valga y si no ya sabes a preguntar otra vez.


No tienes porque darme las gracias, yo te ayudo encantado para eso estamos, se trata de aprender a usar estos temas, he realizado un post nuevo donde tengo el nuevo código del video que has visto, tanto de arduino como de visual basic. Lo que me ayudaría sería que me mandaras tu código de arduino para saber lo que realmente quieres hacer y así probar yo y a ver si entre los dos damos con la solución.


Según puedo entender lo que quieres hacer es tener varias entradas (pulsadores o lo que sea) que mandan información al visual basic, y según esa información quieres activar unas salidas, es así o no?. Si tienes cuenta de megaupload o cualquier servicio de estos y sube un archivo rar con tu código y ponme el enlace aquí, así podré entender mejor lo que quieres hacer y ayudarte.


Hola yo he probado con 6 pulsadores como entrada y me va igual de rápido que con uno, eso si no he probado con tu código, me he hecho uno nuevo, el problema que tengo es despúes tratar la cadena recibida en visual, estoy en ello, te pongo aquí mi código arduino para que veas como hice. Yo en lugar de enviar un caracter (A,B,C,D,etc) por pulsador, lo que hago es crear una variable tipo byte e ir añadiendole los valores actuales de las entradas así solo tengo que enviar un único dato a visual basic. De todos modos probaré con tu código a ver si me ocurre lo que a ti.


void loop() //ciclo que se repite sin fin, termina en el final del código{ //De esta manera guardamos la lectura de las entradas en un único byte para poder //enviar por el puerto serie, y posteriormente tratarlo en el programa en visual byte dato; //Guarda en la variable dato el bit correspondiente a la entrada 7 del arduino dato=digitalRead(boton6); //Desplazamos un bit a la izquierda de la variable dato dato=dato


A mi me va perfectamente, te subo mi programa en visual para que le heches un vistazo, a ver si te sirve de algo, sino entiendes algo pregunta, pero creo que es bastante sencillo, lo único cambiale el puerto serie por tu com correspondiente, tienes que hacerlo en el icono del telefono, porque yo ya lo hago ahi sin hacerlo en el form load. También te adjunto el código arduino en .pde. A ver si tengo tiempo y sigo con lo de las entradas para poder encender los leds.


Edito: He estado simplificando el código en Arduino tanto para actuar con entradas (6 pulsadores) como con salidas (6 leds), desde un programa de comunicación serie que tengo que se llama Octoplus Terminal que es libre, recibo perfectamente el dato en decimal de los pulsadores, y puedo enviar datos hacia el arduino para encender los leds. En visual basic se ven perfectamente y rápido el estado de los pulsadores, pero no se que pasa al enviar el dato hacia el arduino que este no lo entiende perfectamente. El código en arduino funciona perfecto, el fallo está en el envio desde visual basic hacia arduino, a ver si le puedes hechar un vistazo y dar con el fallo. Adjunto los ficheros actualizados:


Hola, he visto sus aportes y me han ayudado mucho, gracias pero tengo un problema q no puedo solucionar espero me puedan ayudar, explico: tengo una aplicación muy similar a la de ustedes todo funciona de maravilla, pero por alguna razón el puerto COM deja de funcionar, aparentemente esta conectado y se ve en administración de dispositivos pero deja de transmitir señal, y el sistema en visual me tira el error 8015 no se puede establecer el estado de comunicacion puede q haya uno o varios parámetros de comunicaciones no validos por lo q tengo q deshabilitar y volver a habilitar el com para q vuelva a funcionar esto me pasa de 2 a 3 veces al día, no se a q se deba espero me puedan ayudar . De antemano gracias


Puede ser debido a reseteos del Arduino y que se cierre el puerto serie en la aplicación de visual basic, o puede ser defecto de los drivers asociados al puerto de tu arduino, has probado a desinstalar y volver a instalar el driver de tu arduino? Así podemos ir descartanto cosas a ver si encontramos la solución a tú problema.


En cuanto a tu duda, de verdad no he probado con más de un carácter pero me imagino que el puerto serie los detectará como dos bytes (uno para cada letra o número). Intenta a leer dos veces una detrás de otra el puerto serie y ver lo que se guarda cada vez en cada byte, después los tendras que unir para realizar las opciones que desees en los ifs.


Hola Jova, lo importante es ir aprendiendo poco a poco. Me vendría bien que me pusieras tus códigos para echarles un vistazo, y si pueden tener algún error, así que si puedes ponme tanto el código del arduino como el de visual basic y una captura del form, y los subes a algún servidor tipo mediafire (el que te guste más a ti). Y en cuanto tenga tiempo lo miro y te comento algo, en los comentarios de esta entrada puedes ir mirando código que fuimos realizando para hacer algo parecido a lo que tu quieres, lo único es que al cerrar megaupload nos hemos quedado sin los archivos, si los encuentro por el pc los resubo a mediafire ok. Un saludo y gracias a ti por visitar el blog!!!


Hola Hp, pues no he trabajado nada con visual 2008, pero supongo que para añadir un control serie será muy parecido a visual basic 6.0 o incluso más sencillo, con una búsqueda en tu buscado preferido poniendo crear control puerto serie en visual 2008 ya está, tiene que ser el mismo que tenga la placa arduino y ya podrás trabajar desde visual con tu nueva placa!! Un saludo, si encuentro algo lo comentaré ok!!


Hola Regata, tengo una tarea muy parecida con este proyecto. Mi pregunta es cómo son las conexiones entre el Arduino , el puerto serial y en general todos los componentes que se ocupan para prender el led. Me podrías pasar el diagrama? Otra cosa, si este proyecto se trabaja desde visual basic cómo es que cargas el programa de Arduino al Visual Basic? Soy nueva en esto de comunicaciones seriales. Muchas gracias que tengas un excelente día.


hola amigo soy un estudiate y he querido relizar tu practica pero no puedo establecer la comuniacion entre arduino y visual basic he capturado los codigos como los pusiste y al tratar de correr en visual me marca una depuracion tambien quisiera saber como se elige el puerto con el q vas a trabajar espero tui respuesta y un saludo grax


Usas la versión 6 de visual basic? Si es así igual te falta por añadir el control del puerto serie o algún otro control, o bien no le has llamado como tengo yo en el código. Me sería de ayuda poder ver tu programa. Un saludo!!


No entiendo a que variables te refieres, pero si es al control Serie de visual basic, lo tienes que añadir al form y ahí modificar el nombre del mismo si quieres cargar tal cual el ejemplo que he realizado, sino solo tendrías que modificar el código en vb6 para que en lugar de aparecer Serie.PortOpen = True aparezca Nombredetucontrolserie.PortOpen = True. Por lo demás no hay más variables para realizar dicho ejemplo, es sólo cargar el sketch en tu arduino, arrancar el programa en vb6 y listo. Las conexiones del arduino con el pc son a través del cable USB (en realidad es una comunicación serie) y el led está conectado al pin 13 y a gnd (es la misma conexión que emplea el led incorporado en la placa Arduino con el nombre L), lo puse para que se apreciará mejor en el video. Si no entiendes algo no dudes en preguntar de nuevo. Un saludo!!!


Soy nuevo, en visual basic. No se si te refieres al objeto a que si ya he conectado mi arduino?. Si es ello la respuesta es que sí, se encuentra conectado. Lo unico que hice fue crear los botones en visual y cheque tu código. Dentro del codigo de visual basic copie lo que tenias dentro de cada Private Sub Command1_Click()y puse lo que tu tenías. Acabo de ponerlo tal cual: Ya no me sale el error,ya compile y cargue el programa a arduino, ya le dí conectar a la interfaz, pero no prende el led, ni siquiera el led del arduino que esta integrado cerca de las salidas digitales.


Hola Regata, agradeciendo de antemano tu palpable generosidad en la enseñanza sobre este apasionante tema quisiera preguntarte cómo supiste que tu puerto es el COM6 y cómo Eric supo que el suyo es el 10?Yo tengo creo mucha experiencia en VB 6 aunque poca en Arduino, mi problema es que cuando ejecuto mi programa en VB me aparece el error el número de puerto no existe justo cuando se ejecuta la línea : MiPuerto.Open donde MiPuerto es el nombre de mi Contro MS Comm Control de VB. Esto me tiene atorado y te agradecería me indiques la solución. En cuanto a la dificultad de Erick sobre que se mantienen los datos en el serial fue un difícil problema que logré superar hace unos meses pero como lo he dejado y ahora retomado necesito repasar mi lógica en Arduino para darle respuesta, hasta ahora que lo intento con VB porque antes lo hacía con Processing pero encontré muy limitado con relación a las amplias capacidades del VB. Me leerás pronto? Saludos. 2ff7e9595c


1 view0 comments

Recent Posts

See All
bottom of page