Arduino y Visual Basic 6 (controlador de luz) (3 / 4 paso)

Paso 3: Visual Basic 6.0 (parte 2)

Después de las clases básicas, codifiqué la función de analizador para limitar la entrada del usuario y comunicaría con la función que envía datos al Arduino. Usé el analizador para que pudiera cargar comandos de otras fuentes y puedo cambiar la secuencia del programa en cualquier momento simplemente cambiando el archivo de texto. Esta técnica es muy útil en el largo plazo. Parpadeo de secuencias no necesita recodificada en VB para cambiar el patrón de la pantalla. Mi código del analizador se muestra a continuación:

Código del programa

Privado Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds como largo) ' utilizar sleep(xxxx)
Private lSide As String, rSide As String
Privada archivo As String, sección As String, Comm como MsComm, txtFeedback como la caja de texto, cuadro de como texto txtStatus

Público Sub Init_Parser(FileName As String, FileSection As String, CommPort As Variant, txtBoxFeedback As Variant, statusBox As Variant)
Archivo = archivo
Sección = FileSection
Establecer Comm = CommPort
Set txtFeedback = txtBoxFeedback
Set cuadro txtStatus = statusBox
End Sub

Público Sub StringSort(ByVal item As String)

Si Len(item) > = 20 Then ' limitación al azar para comprobar si el comando es incorrecto
Registro de "código de Error de archivo: demasiado largo"
Salida Sub
End If ' limitar la longitud de cadenas para comprobar archivo de error

Item = Trim(item)
Si InStr (elemento, "") = 0 Then ' si no hay espacio en el código
lSide = artículo: rSide = vbNullString
Otra cosa
lSide = Left (artículo, InStr (elemento, "") - 1)
rSide = derecho (elemento, Len(item) - InStr (elemento, ""))
End If
Comandante
End Sub

Público Sub Commander()
Dim fCommand As String
On Error GoTo Error

fCommand = Left (lSide, 2)
Seleccione caso fCommand ' Biblioteca de
Caso «CO»
txtStatus.Text = "Conexión de la luz..." & vbCrLf & txtStatus.Text
Light.InitLightController archivo, sección, Comm, txtFeedback
Caso "CT"
txtStatus.Text = "Desconectando la luz..." & vbCrLf & txtStatus.Text
Light.ExitLight
Caso "LH"
txtStatus.Text = "Configuración activa luces..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Caso "LI"
txtStatus.Text = "Configuración de luz de intensidad..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Caso "LO"
txtStatus.Text = "Configuración de las luces..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Caso "RE"
txtStatus.Text = "Luces restablecer..." & vbCrLf & txtStatus.Text
Light.SendData lSide
Caso "DE"
txtStatus.Text = "Demora en proceso..." & vbCrLf & txtStatus.Text
Light.SendData lSide

Caso más
GoTo Error

Final seleccione

txtStatus.Text = lSide & "" & rSide & ": ejecutado..." & vbCrLf & txtStatus.Text

Salida Sub

Error:
Registro de "archivo de código de Error: sintaxis" & lSide & "" & rSide & "No válido"
Clave = 1

End Sub

'***************************************************************************************
' pop-up cuadro de mensaje Mostrar mensaje de error
'***************************************************************************************
Registro público Sub (como cadena de texto)
On Error GoTo Error
MsgBox texto & Err.Description
Salida Sub
Error:
MsgBox "Error al registro:" & Err.Description + vbCritical
Reanudar la siguiente
End Sub

_______________________________________________________________________________________________________
El tipo de datos variante se utiliza en lugar de MSComm o cuadro de texto porque estas características no podrían pasar en un archivo dll. La manera correcta de hacerlo es declarar como un tipo variante y después fijar el nombre de variable como un objeto privado después. Otra función permite la comunicación directa de VB6 y Arduino es la clase de "función de la luz". Cuando los datos se envían a la Arduino, el programa esperará un eco de Arduino. Esta técnica se utiliza como una adaptación del protocolo del apretón de manos simple en la comunicación serial entre la computadora portátil y el Arduino. Si no se detecta un eco, el contador de tiempo de espera de fuego y saltara un cuadro de mensaje alerta al usuario sobre el problema.

Código del programa
Orden privado como cadena, longitudTexto siempre, espera siempre
File_Name privado como cadena, File_Section como cadena
MComm privado como MsComm, Box como cuadro de texto

Privado Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds como largo)
Private Declare la función GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (lpApplicationName ByVal As String, ByVal lpKeyName como cualquiera, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize como largo, ByVal lpFileName As String) como larga

Público Sub InitLightController(PortSettingFileName As String, FileSection As String, MsComm As Variant, txtFeedback As Variant)
File_Name = PortSettingFileName
File_Section = FileSection
Establecer MComm = MsComm
Set Box = txtFeedback
Tiempo de espera = 200000

' Cargado de salida ajustes de COMPORT
Registro de "archivo:" & nombre_archivo & vbCrLf & "sección:" & File_Section

' Abrir puerto y conectar con Arduino
Con MComm
Si es. PortOpen entonces. PortOpen = False ' cerrar y ajustar el número de puerto com
. CommPort = SimpleGet("comport")
. Ajustes = SimpleGet("settings")
. EOFEnable = True
Registro de "Puerto Com:" &. CommPort & vbCrLf & "configuración:" &. Configuración
Terminar con

SendData ("CO")
End Sub

Público Sub SendData (ByVal Commandx como cadena)
On Error GoTo Error
Comando = Commandx
' fíjese primero en comando
Comando = Trim(Command) ' deshacerse de espacios adicionales en el lado
Si (InStr (comando, "") <> 0) o (Len(Command) > 10) entonces ' comando no debe tener más de 10 char o contener espacios
GoTo Error ' no enviar si el formato del comando es incorrecta
End If

Dim yo como Integer, Char, String

Para i = 1 a 2 ' porque longitud de carácter ecpected es sólo 2
Char = Mid (comando, i, 1)

Si (Char > = "A" y Char < = "Z") entonces ' no hacer nada si los 2 primeros caracteres son alfabetos
Otra cosa
GoTo Error
End If
Siguiente
' saltar automáticamente los comandos sin enteros CO, CT, RE
Para i = 3 a Len(Command) ' Asegúrese de que el resto del comando son números enteros
Char = Mid (comando, i, 1)

Si (Char > = "0" y Char < = "9") entonces ' no hacer nada si los caracteres restantes son números
Otra cosa
GoTo Error
End If
Siguiente

LongitudTexto = Len(Command) ' set longitudTexto esperada eco

Con MComm
. DTREnable = False
. = False ' desactivar la petición para enviar una señal
Si es. PortOpen = False Then. PortOpen = True ' abrir el puerto
. Salida = Commandx ' enviar texto
. RThreshold = longitudTexto ' guardar envía la longitud de cadena
Final con ' puerto para dejar abiertas esperar señal de eco proceder
OnComm ' espere respuesta de eco de Arduino

Salida Sub
Error:
Si (Err.Description) entonces
MsgBox Err.Description
Otra cosa
MsgBox "Comando no válido!"
End If
End Sub

Private Sub Log(Text As String)
En Error GoTo error
tBox.Text = texto & vbCrLf & tBox.Text
Salida Sub
ERROR:
MsgBox "Error al registro:" & Err.Description
Reanudar la siguiente
End Sub

' Función de OnComm manual para detectar eco de datos enviados
Private Sub OnComm()
Dim InString cadena, contar como tiempo

Hacer
DoEvents
Sueño (1)
Si Conde > tiempo de espera entonces
MsgBox "Tiempo alcanzado!" & vbCrLf & "No hay respuesta de Arduino!"
Salida Sub
End If
Loop hasta que MComm.CommEvent = comEvReceive MComm.InBufferCount y > = longitudTexto

Sueño (5)

' Recuperar todos los datos disponibles.
MComm.InputLen = 0

' Comprobar datos.
Si MComm.InBufferCount > 0 entonces ' leer los datos.
InString = MComm.Input
' verifica si los datos recibidos es el esperado
Si InStr (InString, comando) > 0 entonces ' si el comando es un eco

Otra cosa
GoTo Error
End If

Si Len(InString) > 0 entonces ' eco de salida en el cuadro de texto
tBox.Text = InString & tBox.Text
End If
End If

Si MComm.PortOpen entonces MComm.PortOpen = False ' cierra el puerto después de recibir respuesta

Salida Sub
Error:
Si (Err.Description) entonces
MsgBox Err.Description
Otra cosa
MsgBox "Recibiendo la función Error!"
End If
End Sub

Público Sub ExitLight()
SendData ("RE")
SendData ("CT")
Si MComm.PortOpen entonces MComm.PortOpen = False ' si el puerto está abierto, cierre si antes de la salida
End Sub

Función pública SimpleGet (VarName como cadena) como cadena
Static sLocalBuffer As String * 500
Dim l como entero de

l = GetPrivateProfileString (File_Section, VarName, vbNullString, sLocalBuffer, 500, nombre_archivo)
SimpleGet = Left$ (sLocalBuffer, l)

End Function

Artículos Relacionados

Control de un motor DC con Arduino y Visual Basic

Control de un motor DC con Arduino y Visual Basic

Hola amigos este es mi primer post en instructables.com donde voy a intentar traer más des de novedad a menudo.Hoy el tema es con Arduino y Visual Basic.El proyecto que hoy podemos ver es un motor de la c.c. del regulador con Arduino y Visual Basic.P
Arduino con visual basic 6.0 de control

Arduino con visual basic 6.0 de control

este instructable es parte de mi libro Arduino + visual basic 6.0 (poner su propio software de control arduino Robot.Visual basic 6.0 es una versión muy vieja, algunas personas pueden preguntar por qué queremos utilizar visual basic 6.0. visual basic
Arduino y Visual Basic 6.0 (Motor de Servo continuo)

Arduino y Visual Basic 6.0 (Motor de Servo continuo)

este Instructable es casi similar a la luz del controlador publicada previamente. Contiene la misma estructura y el patrón en el control de Servo Motor. Usé algunas estructuras de Control de Motor de Galil de forma ideas para crear mi parser. Es deci
Controles de Kinect Arduino conectado Servos utilizando Visual Basic 2010

Controles de Kinect Arduino conectado Servos utilizando Visual Basic 2010

actualización enero de 2012: esta guía se ofrece en Channel9 de MSDN de Microsofthttp://Channel9.msdn.com/Coding4Fun/blog/Kinecting-to-Arduino-with-Visual-BasicINTRODUCCIÓNEn este proyecto, usar movimientos de izquierda y derecha en Kinect para contr
DC control con VISUAL BASIC

DC control con VISUAL BASIC

en este instructables donde voy a intentar traer más des de novedad a menudo.Hoy el tema es con Arduino y Visual Basic. El proyecto que hoy podemos ver es un motor de la c.c. del regulador con Arduino y Visual Basic. Para el control de un dc motor no
Arduino - Servo Control con Visual Basic

Arduino - Servo Control con Visual Basic

Hola chicos,Hoy te voy a mostrar cómo se puede controlar un servo con Visual basic. Antes de este proyecto nunca he utilizado Visual basic así que si alguien encuentra algún error en mi codigo por favor deja un comentario aquí y ayudarme a mejorarla.
Cómo programar Arduino Bluetooth comunicación Serial de Visual Basic Express 2010

Cómo programar Arduino Bluetooth comunicación Serial de Visual Basic Express 2010

Taquí son varios programa y Software Android para controlar tu arduino bluetooth robot con tu android. Pero usted no puede encontrar uno para usar con tus PC windows. Por lo tanto programo un poco uno en Visual Basic Express 2010. Espero que sea útil
Remoto de Arduino RGB LED por Visual Basic

Remoto de Arduino RGB LED por Visual Basic

RequisitosCualquier Arduino (estoy utilizando Arduino Uno)Visual Basic Express 2010 puede descargar VB desde aquíRGB LedPaso 1: Crear la aplicaciónEn este instructable, vamos a hacer un programa de control de Led RGB.Siga los siguientes pasos:Haga cl
Arduino y medición de humedad de temperatura Visual Basic sobre RF

Arduino y medición de humedad de temperatura Visual Basic sobre RF

Podemos ver Arduino usando RF de 433 MHz con visualización instantánea de los valores de temperatura y humedad como lo hacemos con el programa de visual basic.http://make.robimek.com/Arduino-Visual-Basic-Wireless-temperature-Humidity-Control/Vamos a
Utilizando Visual Basic 2010 para controlar Arduino Uno

Utilizando Visual Basic 2010 para controlar Arduino Uno

sé que esto se ha hecho en el pasado un par de veces así que aquí está uno más. Se trata de un esqueleto Visual Basic 2010 y Arduino Sketch que mezclan a prueba el PC a Arduino Uno conexión vía serial. Simplemente resulta LED 13 encendido o apagado.E
Consola de Control del Robot Arduino programa con visual basic

Consola de Control del Robot Arduino programa con visual basic

Vamos a hacer nuestra consola de robot para administrar este proyecto con Visual Basic.Gestionamos nuestro robot vía Bluetooth.Herramientas necesarias para nuestro formulario:13 tecla de número2 combobox número1 pieza texbox1 pedazo de GroupBox1 piez
Cómo auto-detect y conectarse a Arduino en Visual Studio mediante Visual Basic

Cómo auto-detect y conectarse a Arduino en Visual Studio mediante Visual Basic

Cómo auto detectar qué puerto arduino o geekduino es conectarse usando visual basic y se conectará automáticamente a él! (más adelante agregaré como auto detectar cuando es desconectado!).Nota: botón no es necesario pero que en caso de conectar tu ar
Haciendo que Arduino del puerto serial con visual basic

Haciendo que Arduino del puerto serial con visual basic

Vamos a hacer la interfaz del programa para conectar el puerto serie con Visual Studio.Echemos un vistazo a los detalles del programa.Herramientas que utilizamos en el formulario:botón de 3 piezas2 ComboBox número3 etiqueta de la piezapuerto seriePas
Cómo controlar con Visual Basic GizDuino

Cómo controlar con Visual Basic GizDuino

Esto lo guiará a través de la puesta en marcha, cableado del cableado externo y codificación GizDuino y VBA en el control de 4 LEDs.El Instructables se divide en 3:1. esquema de GizDuino2. diseño y código de VBA3. el cableado del circuito externo.* G