Consola Visual Basic 6

Hola:

¿Se puede crear en Visual Basic 6 en modo consola este código de Visual Basic .net 2017?

La idea es portar este código de Visual Basic .net al Visual Basic 6. Me parece todalmente diferente y complicado.

Código:
Imports System.IO.Ports
Imports System.Text

Module Module1

    Sub Main()
        ' Título de la ventana.
        Console.Title = "Recibir datos desde Arduino con Visual Basic .net"

        ' Tamaño ventana consola.
        Console.WindowWidth = 55 ' X. Ancho.
        Console.WindowHeight = 18 ' Y. Alto.
        ' Cree un nuevo objeto SerialPort con la configuración predeterminada.
        Dim Puerto_serie As New SerialPort("COM4")

        Puerto_serie.BaudRate = 115200
        Puerto_serie.Parity = Parity.None
        Puerto_serie.StopBits = StopBits.One
        Puerto_serie.DataBits = 8
        Puerto_serie.Handshake = Handshake.None
        Puerto_serie.RtsEnable = True

        ' Establecer los tiempos de espera de lectura / escritura.
        Puerto_serie.ReadTimeout = 500
        ' Milisegundos.
        Puerto_serie.WriteTimeout = 500

        ' Detecta cualquier dato recibido.
        AddHandler Puerto_serie.DataReceived, AddressOf DataReceivedHandler

        Puerto_serie.Open() ' Abrir puerto.
        Dim tecla As ConsoleKey
        Console.WriteLine("Pulse tecla 1 para encender y 2 para apagar:")

        Do
            tecla = Console.ReadKey(True).Key ' Espera pulsación de teclas.
            Select Case tecla
        ' Tecla 1 del teclado estandar.
                Case ConsoleKey.D1, ConsoleKey.NumPad1 ' Tecla 1 del número del pad.
                    Dim miBuffer1 As Byte() = Encoding.ASCII.GetBytes("Luz_ON") ' Codificación ASCII y guarda en la variable array tipo byte.
                    Puerto_serie.Write(miBuffer1, 0, miBuffer1.Length) ' Envía los datos del buffer todo su contenido.
                    Console.WriteLine("Comando ""Luz_ON"" enviado.") ' Muestra en pantalla comandos enviado.
                    Exit Select

                Case ConsoleKey.D2, ConsoleKey.NumPad2
                    Dim miBuffer2 As Byte() = Encoding.ASCII.GetBytes("Luz_OFF")
                    Puerto_serie.Write(miBuffer2, 0, miBuffer2.Length)
                    Console.WriteLine("Comando ""Luz_OFF"" enviado.")
                    Exit Select
                Case Else

                    Console.WriteLine("Tecla el 1, el 2 y Escape para salir.")
                    Exit Select
            End Select
        Loop While tecla <> ConsoleKey.Escape ' Pulsa Escape para salir del menú.

        Console.WriteLine("Presione cualquier tecla para terminar...")
        Console.WriteLine()
        Console.ReadKey() ' Espera pulsar una tecla cualquiera.

        Puerto_serie.Close() ' Cierra el puerto serie.
    End Sub

    Private Sub DataReceivedHandler(sender As Object, e As SerialDataReceivedEventArgs)

        Dim sp As SerialPort = DirectCast(sender, SerialPort)
        Dim entradaDatos As String = sp.ReadExisting() ' Almacena los datos recibidos en la variable tipo string.

        Console.WriteLine(Convert.ToString("Dato recibido desde Arduino: ") & entradaDatos) ' Muestra en pantalla los datos recibidos.

    End Sub

End Module
Saludos.
 
En Visual Basic 6 no se pueden crear aplicaciones de consola, eso era de versiones muy anteriores.
Darles el estilo sí, pero no se me hace nada práctico.

Lo que siempre quise saber y no encontré información, era cómo interceptar los mensajes de respuesta de las consolas desde VB6, ya que enviarles comandos, si era sencillo.
 
Hola:

¿Tu programa lo que hace es mostrar información de dicho microcontrolador indicado?

Podrías crear una buena base de datos, ya que Atmel tiene unos 200 microcontroladores y Microchip más de 400 diferentes.

No ignorar que Microchip compró Atmel. De paso puedes hacer los microcontroladores y microprocesadores de ARM.

Saludos.
 
Tan sólo es una prueba, no hay nada más.
Mandé el comando "avrdude.exe -c usbasp"
Y como es de esperar, me respondió con un error, que en este caso fue mostrarme los dispositivos disponibles.

No pienso hacer algo que ya está hecho, uso el AVRDUDESS 2.4 con AVRDUDE 6.1 y me va muy bien.
Y yo creo que para estos tiempos nadie ignora que Microchip ya es dueño de Atmel.

Mi duda principal con los ATmega, era sobre los fuses, pero me puse a estudiar sobre eso y no tuve problemas. (Ya me quedó muy claro)
A propósito bloqueé varios ATmega y los pude recuperar nuevamente, usando las técnicas que hay en varios posts.
De hecho, usé un programa que puede desbloquear a todos. :)
Algo así cómo el AVR Doctor, pero más sencillo porque hay que darle los parámetros.

Eso sí, se hace una interconexión de muchos cables, pero funciona. :D

Aquí la respuesta de consola en avrdude.exe:
AVRDUDE dijo:
STDERR: avrdude.exe: No AVR part has been specified, use "-p Part"

Valid parts are:
uc3a0512 = AT32UC3A0512
c128 = AT90CAN128
c32 = AT90CAN32
c64 = AT90CAN64
pwm2 = AT90PWM2
pwm2b = AT90PWM2B
pwm3 = AT90PWM3
pwm316 = AT90PWM316
pwm3b = AT90PWM3B
1200 = AT90S1200
2313 = AT90S2313
2333 = AT90S2333
2343 = AT90S2343
4414 = AT90S4414
4433 = AT90S4433
4434 = AT90S4434
8515 = AT90S8515
8535 = AT90S8535
usb1286 = AT90USB1286
usb1287 = AT90USB1287
usb162 = AT90USB162
usb646 = AT90USB646
usb647 = AT90USB647
usb82 = AT90USB82
m103 = ATmega103
m128 = ATmega128
m1280 = ATmega1280
m1281 = ATmega1281
m1284 = ATmega1284
m1284p = ATmega1284P
m1284rfr2 = ATmega1284RFR2
m128rfa1 = ATmega128RFA1
m128rfr2 = ATmega128RFR2
m16 = ATmega16
m161 = ATmega161
m162 = ATmega162
m163 = ATmega163
m164p = ATmega164P
m168 = ATmega168
m168p = ATmega168P
m169 = ATmega169
m16u2 = ATmega16U2
m2560 = ATmega2560
m2561 = ATmega2561
m2564rfr2 = ATmega2564RFR2
m256rfr2 = ATmega256RFR2
m32 = ATmega32
m324p = ATmega324P
m324pa = ATmega324PA
m325 = ATmega325
m3250 = ATmega3250
m328 = ATmega328
m328p = ATmega328P
m329 = ATmega329
m3290 = ATmega3290
m3290p = ATmega3290P
m329p = ATmega329P
m32u2 = ATmega32U2
m32u4 = ATmega32U4
m406 = ATMEGA406
m48 = ATmega48
m48p = ATmega48P
m64 = ATmega64
m640 = ATmega640
m644 = ATmega644
m644p = ATmega644P
m644rfr2 = ATmega644RFR2
m645 = ATmega645
m6450 = ATmega6450
m649 = ATmega649
m6490 = ATmega6490
m64rfr2 = ATmega64RFR2
m8 = ATmega8
m8515 = ATmega8515
m8535 = ATmega8535
m88 = ATmega88
m88p = ATmega88P
m8u2 = ATmega8U2
t10 = ATtiny10
t11 = ATtiny11
t12 = ATtiny12
t13 = ATtiny13
t15 = ATtiny15
t1634 = ATtiny1634
t20 = ATtiny20
t2313 = ATtiny2313
t24 = ATtiny24
t25 = ATtiny25
t26 = ATtiny26
t261 = ATtiny261
t4 = ATtiny4
t40 = ATtiny40
t4313 = ATtiny4313
t43u = ATtiny43u
t44 = ATtiny44
t45 = ATtiny45
t461 = ATtiny461
t5 = ATtiny5
t84 = ATtiny84
t85 = ATtiny85
t861 = ATtiny861
t88 = ATtiny88
t9 = ATtiny9
x128a1 = ATxmega128A1
x128a1d = ATxmega128A1revD
x128a1u = ATxmega128A1U
x128a3 = ATxmega128A3
x128a3u = ATxmega128A3U
x128a4 = ATxmega128A4
x128a4u = ATxmega128A4U
x128b1 = ATxmega128B1
x128b3 = ATxmega128B3
x128c3 = ATxmega128C3
x128d3 = ATxmega128D3
x128d4 = ATxmega128D4
x16a4 = ATxmega16A4
x16a4u = ATxmega16A4U
x16c4 = ATxmega16C4
x16d4 = ATxmega16D4
x16e5 = ATxmega16E5
x192a1 = ATxmega192A1
x192a3 = ATxmega192A3
x192a3u = ATxmega192A3U
x192c3 = ATxmega192C3
x192d3 = ATxmega192D3
x256a1 = ATxmega256A1
x256a3 = ATxmega256A3
x256a3b = ATxmega256A3B
x256a3bu = ATxmega256A3BU
x256a3u = ATxmega256A3U
x256c3 = ATxmega256C3
x256d3 = ATxmega256D3
x32a4 = ATxmega32A4
x32a4u = ATxmega32A4U
x32c4 = ATxmega32C4
x32d4 = ATxmega32D4
x32e5 = ATxmega32E5
x384c3 = ATxmega384C3
x384d3 = ATxmega384D3
x64a1 = ATxmega64A1
x64a1u = ATxmega64A1U
x64a3 = ATxmega64A3
x64a3u = ATxmega64A3U
x64a4 = ATxmega64A4
x64a4u = ATxmega64A4U
x64b1 = ATxmega64B1
x64b3 = ATxmega64B3
x64c3 = ATxmega64C3
x64d3 = ATxmega64D3
x64d4 = ATxmega64D4
x8e5 = ATxmega8E5
ucr2 = deprecated, use 'uc3a0512'
 
Lo de desbloquear AVR. ¿Te refieres a la protección del contenido del hex dentro del AVR tal como ocurre con los PIC?

Si es así, los PIC es imposible para nosotros pero no en el laboratorio que existe un proceso caro, laborioso, engorroso.
 
No, sino al no establecer correctamente los fuses de Xtal, INTOSC, etc.
Si ese parámetro no se establece correctamente en un ATmega, ya no podrá ser leído ni grabado posteriormente.

Son muy diferentes a los PIC en ese aspecto. Los ATmega usan SPI para su programación, lo cual los hace dependientes de la velocidad de comunicación al ser leídos o programados.
Los PIC, por el contrario, usan un protocolo estándar ISCP genérico entre cualquiera de ellos.

Si algo se mueve en los fuses de un ATmega, ya no podrá leerse ni grabarse con un programador común.
Ya será necesario usar un programador HV, pero hay técnicas simples para poder hacerlo.

Aquí hay otra cosa a tomar en cuenta.
Los fuses en un ATmega se programan de forma independiente.
En un PIC siempre hay que establecerlos.
Y no hay problema si nos equivocamos con ellos. (Un borrado lo deja cómo de fábrica)
En un ATmega, no. O usas lo que viene por defecto, lo configuras bien, o no funciona.
Estoy seguro que todos los que usan Arduino, no se han percatado de eso.
 
Última edición:
Los que usan Arduino como básico no, los que usan Arduino como avanzado si. Desde hace un tiempmo, se hacen Arduino con ARM. Es que los italianos al ver la compra de Microchip sobre Atmel, se cabrearon, no quieren saber nada de PIC y de hecho, no los hay.

Gracias por la aclaración.
 
A mi no me importa si se usa Arduino, me importa la plataforma, que viene siendo ATmega. (Atmel y ahora Microchip)
Tengo la suerte de que en mi país puedo contactar con el distribuidor directo y eso me da la posibilidad de conseguir cualquier dispositivo de la empresa a costos muy bajos, pedir muestras gratis y requerir soporte.

Arduino es una plataforma para "No me gusta hacer nada y lo quiero hecho"
Basado en ATmega aunque también fue PIC alguna vez.
No enseña porque copias, no aprendes porque te dan los sketches. (Programas del entorno)
Apto para quienes ya se olvidaron de programar y hacer las cosas dependiendo de otros.

Ahora que si eres de los que les gusta programar, sube tus sketches para Arduino, y serás un hacker en programación. jaja.
 
Ahora mismo estaba con ARduino y en este momento aprendiendo a fondo otra vez, más bien recordando el PIC en ASM. Ojalá venga en el futuro un buen libro para el MPLAB X con el XC8, XC32. Ese libro se usará para institutos y mira por donde, aprenderás la leche.

Como puedes ver, hacen libros y libros sobre Arduino, y de PIC que antes se hacía la hostia, y ano se molestan tanto porque PIC ya no está de moda, la moda ahora es Arduino y Raspberry Pi, también siguen haciendo libros.
 
Hola
A mi no me importa si se usa Arduino, me importa la plataforma, que viene siendo ATmega. (Atmel y ahora Microchip)
Tengo la suerte de que en mi país puedo contactar con el distribuidor directo y eso me da la posibilidad de conseguir cualquier dispositivo de la empresa a costos muy bajos, pedir muestras gratis y requerir soporte.

Arduino es una plataforma para "No me gusta hacer nada y lo quiero hecho"
Basado en ATmega aunque también fue PIC alguna vez.
No enseña porque copias, no aprendes porque te dan los sketches. (Programas del entorno)
Apto para quienes ya se olvidaron de programar y hacer las cosas dependiendo de otros.

Ahora que si eres de los que les gusta programar, sube tus sketches para Arduino, y serás un hacker en programación. jaja.
Bueno por empezar lo de los "FUCE BIT" era un tema que queria aprender (uso correcto del "FUSECALC" gratuito)​
Es algo que si no se usa atmega no se entiende (diferente a los PIC)​
Como aprendi solo ., "bloquie" un monton de veces mis atmegas​
Me quedaron inservibles ., hasta que arme el "FUSEBIT DOCTOR"​
Luego al no poder desbloquear algunos corectamente ., me arme la interface con el MAX232., y la consola en D.O.S​
En fin ., todo un dilema ., cuando uno no aprende bien las cosas ., por entenderlo mal​
De igual manera que usar la Herramienta gratuita atmel studio​
Te da la posibilidad de compilar en ASM ., C y C++​
Te traduce de C a ASM (de ASM a C no lo hace) y de C a C++ ., o de C++ a C​
Ahora ., en el caso delos arduinos ., la funcion de cambio de fusebit ., esta inabilitada ., (hay que habilitarla la funcion ISP desde la interfaz arduino ., para luego poder cambiar los fucebit por ISP​
Los fuce bit se graban de manera independiente del programa (por ejemplo el "WDT"​
En fin es toda una "historia" ., muy distinta con los atmegas , que con los PIC​
 
Cada derrota es una experiencia. Los errores o el equivocarse forman parte del aprendizaje, ánimos y adelante.

Para tener muchos ATmega que se quedan inservibles, no me hace ni pizca de gracia, esa opción prefiero los PIC. No se como será en los microcontroladores de ARM, hablo de microcontroladores de ARM, no procesadores de ARM que es otra cosa.
 
Atrás
Arriba