ANEXO B Código Fuente del Software de Teleoperación.

Anuncio
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
ANEXO B
Código Fuente del Software de
Teleoperación.
149
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Anexo B
Se detallan en este anexo, tal y como se mencionó en el Capítulo 5 de este informe, los
Códigos fuentes del programa de la PC – C.C.I. Software
B.1 Código fuente de la pantalla principal - MDI
Private Sub Abrir_Click()
AbrirArchivo
End Sub
Private Sub Acercade_Click()
frmAcercade.Show
End Sub
Private Sub AgregarUsuario_Click()
If UsuarioActual = "Administrador" Then
frmAgregarUsuario.Show
Else
MsgBox "El usuario actual no es el Administrador, solamente el Administrador de CCI puede agregar Usuarios.",
vbExclamation, "Usuario no Autorizado"
End If
End Sub
Private Sub Alarmas_Click()
FrmAlarmas.Show
End Sub
Private Sub cabiarcontraseña_Click()
If UsuarioActual <> "" Then
frmCambioContraseña.Show
Else
DeseaLoguearse = MsgBox("No hay ningún usuario Logueado. Debe Loguearse primero para poder cambiar su
contraseña. Desea Loguearse ahora?", vbYesNo + vbQuestion, "Cambio de Contraseña")
If DeseaLoguearse = 6 Then
frmLogin.Show
End If
End If
End Sub
Private Sub cambiarusuario_Click()
If UsuarioActual = "" Then
DeseaLoguearse = MsgBox("No hay ningún usuario Logueado. ¿Desea Loguearse ahora?", vbYesNo + vbQuestion,
"Usuario no Logueado")
If DeseaLoguearse = 6 Then
frmLogin.Show
End If
Else
frmLogin.Icon = LoadPicture(App.Path & "\iconos\cambiarus.ico")
frmLogin.Caption = "Cambiar Usuario"
frmLogin.Show
End If
End Sub
Private Sub Cascada_Click()
Principal.Arrange 0
End Sub
Private Sub clima_Click()
FrmClima.Show
End Sub
Private Sub Controles_Click()
FrmTemperatura.Show
FrmIluminacion.Show
FrmRiego.Show
150
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
End Sub
Private Sub Equipos_Click()
frmEquipos.Show
End Sub
Private Sub graficos_Click()
frmGraficos.Show
End Sub
Private Sub Guardar_Click()
GuardarArchivo
End Sub
Private Sub Horizontal_Click()
Principal.Arrange 1
End Sub
Private Sub Iluminacion_Click()
FrmIluminacion.Show
End Sub
Private Sub MenuLogin_Click()
If UsuarioActual = "" Then
frmLogin.Show
Else
cambiarsesión = MsgBox("El Usuario Actual es: " + UsuarioActual + ". ¿Desea cerrar la sesión de " + UsuarioActual +
"?", vbYesNo + vbQuestion, "Cerrar Sesión")
If cambiarsesión = 6 Then
Login = False
UsuarioActual = ""
Principal.StatusBar.Panels.Item(3) = "Usuario Actual: NO LOGUEADO "
If frmTempOpen = True Then
FrmTemperatura.cmdEnviarTemp.Enabled = False
End If
If frmLuzOpen = True Then
FrmIluminacion.cmdSetLuz.Enabled = False
End If
If frmRiegoOpen = True Then
FrmRiego.cmdSetearHumedad.Enabled = False
End If
If frmCtrlManualOpen = True Then
FrmManual.cmdActivar.Enabled = False
End If
End If
End If
End Sub
Private Sub Manual_Click()
FrmManual.Show
End Sub
Private Sub MDIForm_Load()
Login = False
NumFich = FreeFile
Open App.Path & "\puerto.cci" For Input As #NumFich
Input #NumFich, CommPort
Close #NumFich
Dim i As Integer
For i = 1 To 6
StatusBar.Panels.Add
Next i
With StatusBar.Panels
.Item(1).Style = sbrDate
151
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
.Item(2).Style = sbrTime
.Item(3).AutoSize = sbrContents
.Item(4).AutoSize = sbrContents
.Item(5).Style = sbrNum
.Item(6).Style = sbrCaps
.Item(7).AutoSize = sbrContents
'Valor de los paneles
.Item(4) = "Puerto COM " + CommPort
.Item(7).Text = "C.C.I."
'ToolTipText de los Paneles
.Item(1).ToolTipText = "Fecha Actual"
.Item(2).ToolTipText = "Hora Actual"
.Item(3).ToolTipText = "Usuario Actual"
.Item(4).ToolTipText = "Puerto de Comunicaciones"
.Item(5).ToolTipText = "Estado del Teclado Numérico"
.Item(6).ToolTipText = "Estado de la Tecla Bloq. Mayús."
.Item(7).ToolTipText = "Ayuda"
'Tamaños y alineación de los Paneles
.Item(1).MinWidth = 1300
.Item(1).Alignment = sbrCenter
.Item(2).MinWidth = 1200
.Item(2).Alignment = sbrCenter
.Item(4).MinWidth = 1500
.Item(4).Alignment = sbrCenter
.Item(5).MinWidth = 800
.Item(5).Alignment = sbrCenter
.Item(6).MinWidth = 1000
.Item(6).Alignment = sbrCenter
.Item(7).MinWidth = 4000
.Item(7).Alignment = sbrCenter
End With
frmMonitor.Show
End Sub
Private Sub monitor_Click()
frmMonitor.Show
End Sub
Private Sub MonitoresIndividuales_Click()
FrmAlarmas.Show
frmEquipos.Show
FrmClima.Show
End Sub
Private Sub MonitorGraficos_Click()
frmMonitor.Show
frmGraficos.Show
End Sub
Private Sub Riego_Click()
FrmRiego.Show
End Sub
Private Sub Salir_Click()
End
End Sub
Private Sub SetearTx_Click()
If UsuarioActual = "Administrador" Then
frmSetearTx.Show
Else
MsgBox "El usuario actual no es el Administrador, solamente el Administrador de CCI puede Setear los parámetros de
Transmisión.", vbCritical, "Error de Usuario"
End If
End Sub
152
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Private Sub Temperatura_Click()
FrmTemperatura.Show
End Sub
Private Sub TiempoRespuesta_Timer()
Help ("Falla en la Transmisión")
MsgBox "Tiempo de Respuesta Agotado. Falla en La transmisión.", vbCritical, "Error en la Transmisión"
TiempodeTxAgotado = True
Principal.MSCTxRx.PortOpen = False
Help ("C.C.I.")
End Sub
Private Sub Toolbar_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case "GuardarArc"
GuardarArchivo
Case "AbrirArc"
AbrirArchivo
Case "Login"
If UsuarioActual = "" Then
frmLogin.Show
Else
cerrarsesión = MsgBox("El Usuario Actual es: " + UsuarioActual + ". ¿Desea Cerrar la sesión de " + UsuarioActual
+ "?", vbYesNo + vbQuestion, "Cerrar Sesión")
If cerrarsesión = 6 Then
Login = False
UsuarioActual = ""
Principal.StatusBar.Panels.Item(3) = "Usuario Actual: NO LOGUEADO "
Principal.MenuLogin.Caption = "&Login"
Principal.Toolbar.Buttons.Item(4).ToolTipText = "Login"
Principal.Toolbar.Buttons.Item(5).ToolTipText = "Login"
If frmTempOpen = True Then
FrmTemperatura.cmdEnviarTemp.Enabled = False
End If
If frmLuzOpen = True Then
FrmIluminacion.cmdSetLuz.Enabled = False
End If
If frmRiegoOpen = True Then
FrmRiego.cmdSetearHumedad.Enabled = False
End If
If frmCtrlManualOpen = True Then
FrmManual.cmdActivar.Enabled = False
End If
End If
End If
Case "CambiarUsuario"
If UsuarioActual = "" Then
frmLogin.Show
Else
frmLogin.Icon = LoadPicture(App.Path & "\iconos\cambiarus.ico")
frmLogin.Caption = "Cambiar Usuario"
frmLogin.Show
End If
Case "Equipos"
frmEquipos.Show
Case "Alarmas"
FrmAlarmas.Show
Case "Clima"
FrmClima.Show
Case "MonitorGral"
frmMonitor.Show
Case "Graficos"
frmGraficos.Show
Case "Temperatura"
FrmTemperatura.Show
Case "Iluminación"
FrmIluminacion.Show
153
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Case "Riego"
FrmRiego.Show
Case "Manual"
FrmManual.Show
Case "Cerrar"
RespuestaaPregunta = MsgBox("¿Realmente desea salir de C.C.I.?", vbYesNo + vbQuestion + vbDefaultButton1,
"Salir")
If RespuestaaPregunta = vbYes Then
Unload Me
End If
End Select
End Sub
Function AbrirArchivo()
Dim NombredeArchivo As String
AbriryGuardar.Filter = "Archivos de Seteo de CCI *.asc)|*.asc"
AbriryGuardar.ShowOpen
If AbriryGuardar.FileName <> "" Then
NumFich = FreeFile
NombredeArchivo = AbriryGuardar.FileName
NumFich = FreeFile
Open NombredeArchivo For Input As #NumFich
Input #NumFich, vHoras, vMinutos, vSegundos, vLuzHIni, vLuzMIni, vLuzHFin, vLuzMFin, vLuzSet1, vLuzSet2,
vRiegoSet, vTMinDia, vTInfDia, vTSupDia, vTMaxDia, vTMinNoche, vTInfNoche, vTSupNoche, vTMaxNoche, vHoraSetD,
vMinSetD, vHoraSetN, vMinSetN
Close #NumFich
Open App.Path & "\variables.cci" For Output As #NumFich
Write #NumFich, vHoras, vMinutos, vSegundos, vLuzHIni, vLuzMIni, vLuzHFin, vLuzMFin, vLuzSet1, vLuzSet2,
vRiegoSet, vTMinDia, vTInfDia, vTSupDia, vTMaxDia, vTMinNoche, vTInfNoche, vTSupNoche, vTMaxNoche, vHoraSetD,
vMinSetD, vHoraSetN, vMinSetN
Close #NumFich
If frmTempOpen = True Then
FrmTemperatura.txtSetMinD.Text = Str(vTMinDia)
FrmTemperatura.txtSetInfD.Text = Str(vTInfDia)
FrmTemperatura.txtSetSupD.Text = Str(vTSupDia)
FrmTemperatura.txtSetMaxD.Text = Str(vTMaxDia)
FrmTemperatura.txtSetMinN.Text = Str(vTMinNoche)
FrmTemperatura.txtSetInfN.Text = Str(vTInfNoche)
FrmTemperatura.txtSetSupN.Text = Str(vTSupNoche)
FrmTemperatura.txtSetMaxN.Text = Str(vTMaxNoche)
FrmTemperatura.txtHinicio.Text = Str(vHoraSetD)
FrmTemperatura.txtMinInicio.Text = Str(vMinSetD)
FrmTemperatura.txtHfin.Text = Str(vHoraSetN)
FrmTemperatura.txtMinFin.Text = Str(vMinSetN)
End If
If frmLuzOpen = True Then
FrmIluminacion.txtLuzSet1.Text = Str(vLuzSet1)
FrmIluminacion.txtLuzSet2.Text = Str(vLuzSet2)
FrmIluminacion.txtHinicio.Text = Str(vLuzHIni)
FrmIluminacion.txtMinInicio.Text = Str(vLuzMIni)
FrmIluminacion.txtHfin.Text = Str(vLuzHFin)
FrmIluminacion.txtMinFin.Text = Str(vLuzMFin)
End If
If frmRiegoOpen = True Then
FrmRiego.txtHumedadDeseada.Text = Str(vRiegoSet)
End If
End If
End Function
Function GuardarArchivo()
Dim NombredeArchivo As String
AbriryGuardar.Filter = "Archivos de Seteo de CCI (*.asc)|*.asc"
AbriryGuardar.ShowSave
If AbriryGuardar.FileName <> "" Then
154
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
NumFich = FreeFile
Open App.Path & "\variables.cci" For Input As #NumFich
Input #NumFich, vHoras, vMinutos, vSegundos, vLuzHIni, vLuzMIni, vLuzHFin, vLuzMFin, vLuzSet1, vLuzSet2,
vRiegoSet, vTMinDia, vTInfDia, vTSupDia, vTMaxDia, vTMinNoche, vTInfNoche, vTSupNoche, vTMaxNoche, vHoraSetD,
vMinSetD, vHoraSetN, vMinSetN
Close #NumFich
NombredeArchivo = AbriryGuardar.FileName
NumFich = FreeFile
Open NombredeArchivo For Output As #NumFich
Write #NumFich, vHoras, vMinutos, vSegundos, vLuzHIni, vLuzMIni, vLuzHFin, vLuzMFin, vLuzSet1, vLuzSet2,
vRiegoSet, vTMinDia, vTInfDia, vTSupDia, vTMaxDia, vTMinNoche, vTInfNoche, vTSupNoche, vTMaxNoche, vHoraSetD,
vMinSetD, vHoraSetN, vMinSetN
Close #NumFich
End If
End Function
Private Sub Vertical_Click()
Principal.Arrange 2
End Sub
B.2. Código fuente de la Ventana Login
Option Explicit
Dim UsuarioRegistrado As String
Dim UsuarioAnterior As String
Dim cerrar As Variant
Private Sub cmdAceptar_GotFocus()
Help ("Intentar iniciar con: " + txtUsuario.Text)
End Sub
Private Sub cmdCancelar_Click()
If UsuarioActual = "" Then
Login = False
Principal.StatusBar.Panels.Item(3) = "Usuario Actual: NO LOGUEADO "
End If
Unload Me
End Sub
Private Sub cmdAceptar_Click()
Usuario = txtUsuario.Text + ".ucc"
Contraseña = txtContraseña.Text
UsuarioRegistrado = Dir(App.Path & "\" + Usuario)
If Usuario = UsuarioRegistrado Then
NumFich = FreeFile
Open App.Path & "\" + Usuario For Input As #NumFich
Input #NumFich, ContraseñaGuardada
UsuarioAnterior = txtUsuario.Text
Close #NumFich
NumFich = FreeFile
Open App.Path & "\usuanterior.ccc" For Output As #NumFich
Write #NumFich, UsuarioAnterior
Close #NumFich
If ContraseñaGuardada = Contraseña Then
Login = True
UsuarioActual = txtUsuario.Text
Principal.StatusBar.Panels.Item(3) = "Usuario Actual: " + UsuarioActual + " "
Principal.MenuLogin.Caption = "Cerrar &Sesión"
Principal.Toolbar.Buttons.Item(4).ToolTipText = "Cambiar Usuario"
Principal.Toolbar.Buttons.Item(5).ToolTipText = "Cerrar Sesión"
If frmTempOpen = True Then
FrmTemperatura.cmdEnviarTemp.Enabled = True
End If
If frmLuzOpen = True Then
FrmIluminacion.cmdSetLuz.Enabled = True
End If
155
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
If frmRiegoOpen = True Then
FrmRiego.cmdSetearHumedad.Enabled = True
End If
If frmCtrlManualOpen = True Then
FrmManual.cmdActivar.Enabled = True
End If
Dim NumerodeLogin As Integer
NumFich = FreeFile
Open App.Path & "\acthora.cci" For Input As #NumFich
Input #NumFich, NumerodeLogin
Close #NumFich
NumerodeLogin = NumerodeLogin + 1
If NumerodeLogin = 15 Then
Dim AjustarHora
AjustarHora = MsgBox("Recuerde que la hora de sus sistema se transmite al control con cada configuración.
Revise la hora períodicamente para corregirla si es necesario. ¿Desea corregirla ahora?.", vbExclamation + vbYesNo,
"Ajuste la hora")
If AjustarHora = 6 Then
Dim lngx
lngx = Shell("Rundll32.exe shell32.dll,Control_RunDLL timedate.cpl @X,0")
End If
NumerodeLogin = 0
End If
NumFich = FreeFile
Open App.Path & "\acthora.cci" For Output As #NumFich
Write #NumFich, NumerodeLogin
Close #NumFich
Unload Me
Else
MsgBox "La contraseña no es válida. Vuelva a intentarlo.", vbCritical, "Error en Contraseña"
txtContraseña.SetFocus
SendKeys "{Home}+{End}"
End If
Else
MsgBox "El Usuario no está registrado. Pongase en contacto con el Administrador de CCI para registrarse.", vbCritical,
"Usuario no Registrado"
End If
End Sub
Private Sub cmdCancelar_GotFocus()
Help ("Cancelar Inicio Logeado")
End Sub
Private Sub Form_Load()
NumFich = FreeFile
Open App.Path & "\usuanterior.ccc" For Input As #NumFich
Input #NumFich, UsuarioAnterior
Close #NumFich
txtUsuario.Text = UsuarioAnterior
Me.Show
If txtUsuario.Text <> "" Then
txtContraseña.SetFocus
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
Help ("C.C.I.")
End Sub
Private Sub txtContraseña_GotFocus()
Help ("Ingrese La Contraseña")
txtContraseña.SelStart = 0
txtContraseña.SelLength = Len(txtContraseña)
156
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
End Sub
Private Sub txtContraseña_LostFocus()
Help ("C.C.I.")
End Sub
Private Sub txtUsuario_GotFocus()
Help ("Ingrese Nombre de Usuario")
txtUsuario.SelStart = 0
txtUsuario.SelLength = Len(txtUsuario)
End Sub
B. 3 Código fuente de la Ventana cambiar usuario
Coincide con el código de la ventana login
B. 4 Código fuente de la Ventana Agregar Usuario
Dim UsuarioNuevo, UsuarioRegistrado As String
Private Sub cmdAceptar_Click()
UsuarioNuevo = txtNombreUsuario.Text + ".ucc"
UsuarioRegistrado = Dir(App.Path & "\" + UsuarioNuevo)
If UsuarioNuevo <> UsuarioRegistrado Then
If txtContraseña.Text <> txtRepitaContraseña.Text Then
MsgBox ("Las contraseñas ingresadas no coinciden, intentelo de nuevo."), vbCritical, "Error en las Contraseñas"
Else
NumFich = FreeFile
Usuario = txtNombreUsuario.Text
Contraseña = txtContraseña.Text
Open App.Path & "\" + Usuario + ".ucc" For Output As #NumFich
Write #NumFich, Contraseña
Close #NumFich
Unload Me
MsgBox ("El nuevo Usuario se registró con éxito. Gracias."), vbInformation, "Usuario Nuevo"
End If
Else
MsgBox "Este Usuario ya Existe. Utilice un Nombre de Usuario Distinto.", vbCritical, "Error - Usuario Existente"
End If
End Sub
Private Sub cmdAceptar_GotFocus()
Help ("Crear a: " + txtNombreUsuario.Text + " como usuario de C.C.I.")
End Sub
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdCancel_GotFocus()
Help ("Cancelar la Creación de Usuario")
End Sub
Private Sub Form_Unload(Cancel As Integer)
Help ("C.C.I.")
End Sub
Private Sub txtContraseña_Change()
If txtNombreUsuario.Text <> "" And txtRepitaContraseña.Text <> "" Then
cmdAceptar.Enabled = True
End If
End Sub
Private Sub txtContraseña_GotFocus()
Help ("Ingrese la Contraseña")
txtContraseña.SelStart = 0
txtContraseña.SelLength = Len(txtContraseña)
157
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
End Sub
Private Sub txtNombreUsuario_Change()
If txtContraseña.Text <> "" And txtRepitaContraseña.Text <> "" Then
cmdAceptar.Enabled = True
End If
End Sub
Private Sub txtNombreUsuario_GotFocus()
Help ("Ingrese Nombre de Usuario Nuevo")
txtNombreUsuario.SelStart = 0
txtNombreUsuario.SelLength = Len(txtNombreUsuario)
End Sub
Private Sub txtRepitaContraseña_Change()
If txtContraseña.Text <> "" And txtNombreUsuario.Text <> "" Then
cmdAceptar.Enabled = True
End If
End Sub
Private Sub txtRepitaContraseña_GotFocus()
Help ("Ingrese la Contraseña Nuevamente")
txtRepitaContraseña.SelStart = 0
txtRepitaContraseña.SelLength = Len(txtRepitaContraseña)
End Sub
B. 5 Código fuente de la Ventana Cambiar contraseña
Dim UsuarioCC, UsuarioRCC, ContraseñaOld, Contraseñanew, RContraseña As String
Private Sub cmdAceptar_Click()
UsuarioCC = txtUsuario.Text + ".ucc"
ContraseñaOld = txtContraseñaold.Text
Contraseñanew = txtContraseñaNew.Text
RContraseña = txtRepitaContraseña.Text
UsuarioRCC = Dir(App.Path & "\" + Usuario)
If UsuarioCC = UsuarioRCC Then
NumFich = FreeFile
Open App.Path & "\" + Usuario For Input As #NumFich
Input #NumFich, ContraseñaGuardada
Close #NumFich
If ContraseñaGuardada = ContraseñaOld Then
If Contraseñanew = RContraseña Then
NumFich = FreeFile
Open App.Path & "\" + UsuarioCC For Output As #NumFich
Write #NumFich, Contraseñanew
Close #NumFich
Unload Me
MsgBox ("La contraseña se cambió con éxito. Gracias."), vbInformation, "Cambio de Contraseña"
Else
MsgBox ("Las contraseñas ingresadas no coinciden, intentelo de nuevo."), vbCritical, "Error en las Contraseñas"
End If
Else
MsgBox "La contraseña ingresada como contraseña Anterior no es correcta. Vuelva a intentarlo", vbCritical, "Error
en las Contraseñas"
txtContraseñaold.SetFocus
SendKeys "{Home}+{End}"
End If
Else
MsgBox "El Usuario no está registrado. Pongase en contacto con el Administrador de CCI para registrarse.",
vbInformation, "Usuario no Registrado"
End If
End Sub
Private Sub cmdCancelar_Click()
Unload Me
End Sub
158
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Private Sub Form_Load()
txtUsuario.Text = UsuarioActual
txtUsuario.Locked = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
Help ("C.C.I.")
End Sub
Private Sub txtContraseñaNew_Change()
If txtRepitaContraseña.Text <> "" And txtContraseñaold.Text <> "" And txtUsuario.Text <> "" Then
cmdAceptar.Enabled = True
End If
End Sub
Private Sub txtContraseñaNew_GotFocus()
Help ("Ingrese la Contraseña Nueva")
txtContraseñaNew.SelStart = 0
txtContraseñaNew.SelLength = Len(txtContraseñaNew)
End Sub
Private Sub txtContraseñaold_Change()
If txtRepitaContraseña.Text <> "" And txtContraseñaNew.Text <> "" And txtUsuario.Text <> "" Then
cmdAceptar.Enabled = True
End If
End Sub
Private Sub txtContraseñaold_GotFocus()
Help ("Ingrese la Contraseña Vieja")
txtContraseñaold.SelStart = 0
txtContraseñaold.SelLength = Len(txtContraseñaold)
End Sub
Private Sub txtRepitaContraseña_Change()
If txtContraseñaold.Text <> "" And txtContraseñaNew.Text <> "" And txtUsuario.Text <> "" Then
cmdAceptar.Enabled = True
End If
End Sub
Private Sub txtRepitaContraseña_GotFocus()
Help ("Repita la Contraseña Nueva")
txtRepitaContraseña.SelStart = 0
txtRepitaContraseña.SelLength = Len(txtRepitaContraseña)
End Sub
Private Sub txtUsuario_Change()
If txtRepitaContraseña.Text <> "" And txtContraseñaold.Text <> "" And txtContraseñaNew <> "" Then
cmdAceptar.Enabled = True
End If
End Sub
B.6 Código fuente de la función RS232Rx()
'FUNCIONES DE RECEPCIÓN
Function RS232Rx()
reintentarRS232Rx:
Help ("Recibiendo Datos del Control...")
If Principal.MSCTxRx.PortOpen = True Then
Exit Function
End If
Principal.MSCTxRx.CommPort = CommPort
Principal.MSCTxRx.PortOpen = True
CadRecibida = ""
159
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Principal.MSCTxRx.Output = Chr$(10)
Principal.MSCTxRx.Output = Chr$(200)
TiempodeTxAgotado = False
While Principal.MSCTxRx.InBufferCount = 0
DoEvents
If TiempodeTxAgotado = True Then
Principal.TiempoRespuesta.Enabled = False
Exit Function
End If
Principal.TiempoRespuesta.Enabled = True
Wend
Principal.TiempoRespuesta.Enabled = False
CadRecibida = Principal.MSCTxRx.Input
For i = 1 To 6
VRx(i) = Asc(Mid$(CadRecibida, i, 1))
Next
vTemperat = VRx(1)
vHumedad = VRx(2)
vIlumina = VRx(3)
vEstEquip = VRx(4)
vEstAlarm = VRx(5)
vXor = VRx(6)
vXorCalculo = VRx(1) Xor VRx(2) Xor VRx(3) Xor VRx(4) Xor VRx(5)
If vXor <> vXorCalculo Then
RespuestaaPregunta = MsgBox("ERROR!... Los registros enviados por el control no fueron correctamente recibidos
por el soft. Revise las conexiones e inténtelo nuevamente. ¿Desea reintentar la conexión ahora?.", vbCritical +
vbRetryCancel, "Error de Transmisión.")
If RespuestaaPregunta = vbRetry Then
GoTo reintentarRS232Rx
End If
End If
If vEstAlarm - 32 >= 0 Then
CtrlSinEnergia = True
vEstAlarm = vEstAlarm - 32
Else
CtrlSinEnergia = False
End If
If vEstEquip - 128 >= 0 Then
CtrlSinDatos = True
vEstEquip = vEstEquip - 128
Else
CtrlSinDatos = False
End If
FechayHora = Now
NumFich = FreeFile
Open App.Path & "\parclimaticos.cci" For Output As #NumFich
Write #NumFich, vTemperat, vIlumina, vHumedad, FechayHora
Close #NumFich
Principal.MSCTxRx.PortOpen = False
Help ("C.C.I.")
If EnviarDespues = True Then
RS232Tx
End If
End Function
B.7 Código fuente de la función RS232Tx()
'FUNCIONES DE TRANSMICIÓN
Function RS232Tx()
reintentarRS232Tx:
160
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Help ("Transmitiendo Datos al Control...")
ArmarVector
CadAEnviar = ""
If Principal.MSCTxRx.PortOpen = True Then
EnviarDespues = True
Exit Function
End If
EnviarDespues = False
Principal.MSCTxRx.CommPort = CommPort
Principal.MSCTxRx.PortOpen = True
For i = 1 To 34
CadAEnviar = Chr$(VTx(i))
Principal.MSCTxRx.Output = CadAEnviar
Next
TiempodeTxAgotado = False
While Principal.MSCTxRx.InBufferCount = 0
DoEvents
If TiempodeTxAgotado = True Then
Principal.TiempoRespuesta.Enabled = False
Exit Function
End If
Principal.TiempoRespuesta.Enabled = True
Wend
Principal.TiempoRespuesta.Enabled = False
CadRecibida = Principal.MSCTxRx.Input
Principal.MSCTxRx.PortOpen = False
If CadRecibida = "" Then
RespuestaaPregunta = MsgBox("ERROR!... Los registros no fueron correctamente recibidos por el Control. Revise las
conexiones e inténtelo nuevamente. ¿Desea reintentar la conexión ahora?.", vbCritical + vbRetryCancel, "Error de
Transmisión.")
If RespuestaaPregunta = vbRetry Then
GoTo reintentarRS232Tx
End If
Else
MsgBox "La Transmisión se realizó satisfactoriamente.", vbInformation, "Transmisión Exitosa."
End If
Help ("C.C.I.")
End Function
Function ArmarVector()
HoraCompleta = Now
vHoras = Hour(HoraCompleta)
vMinutos = Minute(HoraCompleta)
vSegundos = Second(HoraCompleta)
VTx(2) = vHoras 'Horas
VTx(3) = vMinutos 'Minutos
VTx(4) = vSegundos 'Segundos
VTx(5) = vLuzHIni
VTx(6) = vLuzMIni
VTx(7) = vLuzHFin
VTx(8) = vLuzMFin
'Hora de Arranque Ctrl. de Luz
'Minutos de Arranque Ctrl. de Luz
'Hora de Fin Ctrl. de Luz
'Minutos de Fin Ctrl. de Luz
'La ecuación de la recta que describe el AD para temperatura es y = x * (1023/100)
VTx(9) = CLng(vLuzSet1) * 1023 / 100 'Nivel para encender Banco 1)
'lL
VTx(11) = CLng(vLuzSet2) * 1023 / 100 'Nivel para encender Banco 2
'2L
VTx(13) = CLng(vRiegoSet) * 1023 / 100 'Nivel de Humedad Requerido.
'L
'Ajuste de Curva para la Temperatura
161
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
If vTMinDia <= 5 Then
vTMinDia = vTMinDia + 9
ElseIf vTMinDia <= 15 Then
vTMinDia = vTMinDia + 8
ElseIf vTMinDia <= 20 Then
vTMinDia = vTMinDia + 7
ElseIf vTMinDia <= 30 Then
vTMinDia = vTMinDia + 6
ElseIf vTMinDia <= 40 Then
vTMinDia = vTMinDia + 4
ElseIf vTMinDia <= 45 Then
vTMinDia = vTMinDia + 3
ElseIf vTMinDia <= 50 Then
vTMinDia = vTMinDia + 1
End If
If vTInfDia <= 5 Then
vTInfDia = vTInfDia + 9
ElseIf vTInfDia <= 15 Then
vTInfDia = vTInfDia + 8
ElseIf vTInfDia <= 20 Then
vTInfDia = vTInfDia + 7
ElseIf vTInfDia <= 30 Then
vTInfDia = vTInfDia + 6
ElseIf vTInfDia <= 40 Then
vTInfDia = vTInfDia + 4
ElseIf vTInfDia <= 45 Then
vTInfDia = vTInfDia + 3
ElseIf vTInfDia <= 50 Then
vTInfDia = vTInfDia + 1
End If
If vTSupDia <= 5 Then
vTSupDia = vTSupDia + 9
ElseIf vTSupDia <= 15 Then
vTSupDia = vTSupDia + 8
ElseIf vTSupDia <= 20 Then
vTSupDia = vTSupDia + 7
ElseIf vTSupDia <= 30 Then
vTSupDia = vTSupDia + 6
ElseIf vTSupDia <= 40 Then
vTSupDia = vTSupDia + 4
ElseIf vTSupDia <= 45 Then
vTSupDia = vTSupDia + 3
ElseIf vTSupDia <= 50 Then
vTSupDia = vTSupDia + 1
End If
If vTMaxDia <= 5 Then
vTMaxDia = vTMaxDia + 9
ElseIf vTMaxDia <= 15 Then
vTMaxDia = vTMaxDia + 8
ElseIf vTMaxDia <= 20 Then
vTMaxDia = vTMaxDia + 7
ElseIf vTMaxDia <= 30 Then
vTMaxDia = vTMaxDia + 6
ElseIf vTMaxDia <= 40 Then
vTMaxDia = vTMaxDia + 4
ElseIf vTMaxDia <= 45 Then
vTMaxDia = vTMaxDia + 3
ElseIf vTMaxDia <= 50 Then
vTMaxDia = vTMaxDia + 1
End If
If vTMinNoche <= 5 Then
vTMinNoche = vTMinNoche + 9
ElseIf vTMinNoche <= 15 Then
vTMinNoche = vTMinNoche + 8
ElseIf vTMinNoche <= 20 Then
162
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
vTMinNoche = vTMinNoche + 7
ElseIf vTMinNoche <= 30 Then
vTMinNoche = vTMinNoche + 6
ElseIf vTMinNoche <= 40 Then
vTMinNoche = vTMinNoche + 4
ElseIf vTMinNoche <= 45 Then
vTMinNoche = vTMinNoche + 3
ElseIf vTMinNoche <= 50 Then
vTMinNoche = vTMinNoche + 1
End If
If vTInfNoche <= 5 Then
vTInfNoche = vTInfNoche + 9
ElseIf vTInfNoche <= 15 Then
vTInfNoche = vTInfNoche + 8
ElseIf vTInfNoche <= 20 Then
vTInfNoche = vTInfNoche + 7
ElseIf vTInfNoche <= 30 Then
vTInfNoche = vTInfNoche + 6
ElseIf vTInfNoche <= 40 Then
vTInfNoche = vTInfNoche + 4
ElseIf vTInfNoche <= 45 Then
vTInfNoche = vTInfNoche + 3
ElseIf vTInfNoche <= 50 Then
vTInfNoche = vTInfNoche + 1
End If
If vTSupNoche <= 5 Then
vTSupNoche = vTSupNoche + 9
ElseIf vTSupNoche <= 15 Then
vTSupNoche = vTSupNoche + 8
ElseIf vTSupNoche <= 20 Then
vTSupNoche = vTSupNoche + 7
ElseIf vTSupNoche <= 30 Then
vTSupNoche = vTSupNoche + 6
ElseIf vTSupNoche <= 40 Then
vTSupNoche = vTSupNoche + 4
ElseIf vTSupNoche <= 45 Then
vTSupNoche = vTSupNoche + 3
ElseIf vTSupNoche <= 50 Then
vTSupNoche = vTSupNoche + 1
End If
If vTMaxNoche <= 5 Then
vTMaxNoche = vTMaxDia + 9
ElseIf vTMaxNoche <= 15 Then
vTMaxNoche = vTMaxNoche + 8
ElseIf vTMaxNoche <= 20 Then
vTMaxNoche = vTMaxNoche + 7
ElseIf vTMaxNoche <= 30 Then
vTMaxNoche = vTMaxNoche + 6
ElseIf vTMaxNoche <= 40 Then
vTMaxNoche = vTMaxNoche + 4
ElseIf vTMaxNoche <= 45 Then
vTMaxNoche = vTMaxNoche + 3
ElseIf vTMaxNoche <= 50 Then
vTMaxNoche = vTMaxNoche + 1
End If
'La ecuación de la recta que describe el AD para temperatura es y = x * (0.1680415) + 6.90589236
VTx(15) = CLng(vTMinDia) * 1013 / 48.4 - 2.55785 '1023 / 60 + 170.5 'Variables de Seteo de Temperatura Diurna
'L
VTx(17) = CLng(vTInfDia) * 1013 / 48.4 - 2.55785 '1023 / 60 + 170.5
'L
VTx(19) = CLng(vTSupDia) * 1013 / 48.4 - 2.55785 '1023 / 60 + 170.5
'L
VTx(21) = CLng(vTMaxDia) * 1013 / 48.4 - 2.55785 '1023 / 60 + 170.5
'L
VTx(23) = CLng(vTMinNoche) * 1013 / 48.4 - 2.55785 '1023 / 60 + 170.5 'Variables de Seteo de Temperatura Nocturna
163
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
'L'
VTx(25) = CLng(vTInfNoche) * 1013 / 48.4 - 2.55785 '1023 / 60 + 170.5
'L
VTx(27) = CLng(vTSupNoche) * 1013 / 48.4 - 2.55785 '1023 / 60 + 170.5
'L
VTx(29) = CLng(vTMaxNoche) * 1013 / 48.4 - 2.55785 '1023 / 60 + 170.5
'L
VTx(31) = vHoraSetN 'Hora y Minuto de comienzo de la Noche.
VTx(32) = vMinSetN
VTx(33) = vHoraSetD 'Hora y Minuto de comienzo del Día.
VTx(34) = vMinSetD
For i = 9 To 29 Step 2
vIntermedia = VTx(i) - 512
If vIntermedia < 0 Then
vIntermedia = VTx(i) - 256
If vIntermedia < 0 Then
VTx(i + 1) = VTx(i)
VTx(i) = 0
Else
VTx(i) = 1
VTx(i + 1) = vIntermedia
End If
Else
vIntermedia2 = vIntermedia - 256
If vIntermedia2 < 0 Then
VTx(i) = 2
VTx(i + 1) = vIntermedia
Else
VTx(i) = 3
VTx(i + 1) = vIntermedia2
End If
End If
Next
VTx(1) = VTx(2) Xor VTx(3) Xor VTx(4) Xor VTx(5) Xor VTx(6) Xor VTx(7) Xor VTx(8) Xor VTx(9) Xor VTx(10) Xor
VTx(11) Xor VTx(12) Xor VTx(13) Xor VTx(14) Xor VTx(15) Xor VTx(16) Xor VTx(17) Xor VTx(18) Xor VTx(19) Xor VTx(20)
Xor VTx(21) Xor VTx(22) Xor VTx(23) Xor VTx(24) Xor VTx(25) Xor VTx(26) Xor VTx(27) Xor VTx(28) Xor VTx(29) Xor
VTx(30) Xor VTx(31) Xor VTx(32) Xor VTx(33) Xor VTx(34)
End Function
B. 8 Código fuente de la Ventana de Control de Temperatura
Private Sub ChkActivarIntervalo_Click()
If ChkActivarIntervalo.Value = Checked Then
lbAmplitud.Enabled = True
lb0.Enabled = True
txtGrIntervalo.Enabled = True
cmdHelp.Enabled = True
txtSetMaxD.Text = Str(Val(txtSetSupD.Text) + Val(txtGrIntervalo.Text))
txtSetMaxN.Text = Str(Val(txtSetSupN.Text) + Val(txtGrIntervalo.Text))
txtSetMinD.Text = Str(Val(txtSetInfD.Text) - Val(txtGrIntervalo.Text))
txtSetMinN.Text = Str(Val(txtSetInfN.Text) - Val(txtGrIntervalo.Text))
txtSetMaxD.Enabled = False
txtSetMaxN.Enabled = False
txtSetMinD.Enabled = False
txtSetMinN.Enabled = False
Else
txtSetMaxD.Enabled = True
txtSetMaxN.Enabled = True
txtSetMinD.Enabled = True
txtSetMinN.Enabled = True
lbAmplitud.Enabled = False
lb0.Enabled = False
txtGrIntervalo.Enabled = False
cmdHelp.Enabled = False
End If
End Sub
164
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Private Sub ChkActivarIntervalo_GotFocus()
Help ("Activa / Desactiva el Intérvalo para Temperaturas.")
End Sub
Private Sub cmdActualizarTemp_Click()
RS232Rx
NumFich = FreeFile
Open App.Path & "\parclimaticos.cci" For Input As #NumFich
Input #NumFich, vTemperat, vIlumina, vHumedad, FechayHora
Close #NumFich
lblNivelTemp.Caption = "Nivel al " + Str(FechayHora) + ": " + Str(vTemperat) + "º."
End Sub
Private Sub cmdActualizarTemp_GotFocus()
Help ("Actualiza el Nivel de Temperatura")
End Sub
Private Sub cmdEnviarTemp_Click()
vTMinDia = Val(txtSetMinD.Text)
vTInfDia = Val(txtSetInfD.Text)
vTSupDia = Val(txtSetSupD.Text)
vTMaxDia = Val(txtSetMaxD.Text)
vTMinNoche = Val(txtSetMinN.Text)
vTInfNoche = Val(txtSetInfN.Text)
vTSupNoche = Val(txtSetSupN.Text)
vTMaxNoche = Val(txtSetMaxN.Text)
vHoraSetD = Val(txtHinicio.Text)
vMinSetD = Val(txtMinInicio.Text)
vHoraSetN = Val(txtHfin.Text)
vMinSetN = Val(txtMinFin.Text)
NumFich = FreeFile
Open App.Path & "\variables.cci" For Output As #NumFich
Write #NumFich, vHoras, vMinutos, vSegundos, vLuzHIni, vLuzMIni, vLuzHFin, vLuzMFin, vLuzSet1, vLuzSet2,
vRiegoSet, vTMinDia, vTInfDia, vTSupDia, vTMaxDia, vTMinNoche, vTInfNoche, vTSupNoche, vTMaxNoche, vHoraSetD,
vMinSetD, vHoraSetN, vMinSetN
Close #NumFich
RS232Tx
lblmin.Caption = "Temp. Set Mín. Actual"
lblinf.Caption = "Temp. Set Inf. Actual"
lblsup.Caption = "Temp. Set Sup. Actual"
lblmax.Caption = "Temp. Set Máx. Actual"
End Sub
Private Sub cmdEnviarTemp_GotFocus()
Help ("Envia los datos al Control.")
End Sub
Private Sub cmdHelp_Click()
MsgBox "El intervalo de temperaturas será de " + txtGrIntervalo.Text + "º por encima de la temperatura superior y de " +
txtGrIntervalo.Text + "º por debajo de la Temperatura inferior. Es decir que por ejemplo si la Temperatura Inferior está en
15º, a los" + Str(15 - Val(txtGrIntervalo.Text)) + "º se activará la alarma de temperatura minima; analogamente si la
Temperatura Superior está Seteada en 25º, a los " + Str(25 + Val(txtGrIntervalo.Text)) + "º se encenderá la alarma de
Temperatura Máxima.", vbInformation, "Ayuda"
End Sub
Private Sub cmdHelp_GotFocus()
Help ("Ayuda")
End Sub
Private Sub cmdHelpHorario_Click()
MsgBox "Ud. puede setear cual es el horario de comienzo y final del día, dentro de lo cual el sistema utilizará los
parametros Diurnos seteado. Fuera de ese intérvalo, el sistema utiliza los parámetros Nocturnos de Temperaturas.",
vbInformation, "Ayuda"
End Sub
165
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Private Sub cmdHelpHorario_GotFocus()
Help ("Ayuda")
End Sub
Private Sub Form_Load()
Me.Top = 0
Me.Left = 5
frmTempOpen = True
If Login = True Then
cmdEnviarTemp.Enabled = True
End If
Me.Width = 4320
Me.Height = 5655
NumFich = FreeFile
Open App.Path & "\variables.cci" For Input As #NumFich
Input #NumFich, vHoras, vMinutos, vSegundos, vLuzHIni, vLuzMIni, vLuzHFin, vLuzMFin, vLuzSet1, vLuzSet2,
vRiegoSet, vTMinDia, vTInfDia, vTSupDia, vTMaxDia, vTMinNoche, vTInfNoche, vTSupNoche, vTMaxNoche, vHoraSetD,
vMinSetD, vHoraSetN, vMinSetN
Close #NumFich
txtSetMinD.Text = Str(vTMinDia)
txtSetInfD.Text = Str(vTInfDia)
txtSetSupD.Text = Str(vTSupDia)
txtSetMaxD.Text = Str(vTMaxDia)
txtSetMinN.Text = Str(vTMinNoche)
txtSetInfN.Text = Str(vTInfNoche)
txtSetSupN.Text = Str(vTSupNoche)
txtSetMaxN.Text = Str(vTMaxNoche)
txtHinicio.Text = Str(vHoraSetD)
txtMinInicio.Text = Str(vMinSetD)
txtHfin.Text = Str(vHoraSetN)
txtMinFin.Text = Str(vMinSetN)
lblmin.Caption = "Temp. Set Mín. Actual"
lblinf.Caption = "Temp. Set Inf. Actual"
lblsup.Caption = "Temp. Set Sup. Actual"
lblmax.Caption = "Temp. Set Máx. Actual"
NumFich = FreeFile
Open App.Path & "\txrx.scc" For Input As #NumFich
Input #NumFich, CommPort, IntervaloClima, IntervaloEquipos, IntervaloAlarmas, ActualizarOpenCtrl
Close #NumFich
If ActualizarOpenCtrl = True Then
RS232Rx
End If
NumFich = FreeFile
Open App.Path & "\parclimaticos.cci" For Input As #NumFich
Input #NumFich, vTemperat, vIlumina, vHumedad, FechayHora
Close #NumFich
lblNivelTemp.Caption = "Nivel al " + Str(FechayHora) + ": " + Str(vTemperat) + "º."
End Sub
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then Exit Sub
Me.Width = 4320
Me.Height = 5655
End Sub
Private Sub Form_Unload(Cancel As Integer)
Help ("C.C.I.")
frmTempOpen = False
End Sub
Private Sub txtGrIntervalo_Change()
txtSetMaxD.Text = Str(Val(txtSetSupD.Text) + Val(txtGrIntervalo.Text))
txtSetMaxN.Text = Str(Val(txtSetSupN.Text) + Val(txtGrIntervalo.Text))
166
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
txtSetMinD.Text = Str(Val(txtSetInfD.Text) - Val(txtGrIntervalo.Text))
txtSetMinN.Text = Str(Val(txtSetInfN.Text) - Val(txtGrIntervalo.Text))
End Sub
Private Sub txtGrIntervalo_GotFocus()
Help ("Ingrese la Semiamplitud del Intérvalo")
txtGrIntervalo.SelStart = 0
txtGrIntervalo.SelLength = Len(txtGrIntervalo)
End Sub
Private Sub txtHfin_GotFocus()
Help ("Ingrese la Hora de Fin del Día.")
txtHfin.SelStart = 0
txtHfin.SelLength = Len(txtHfin)
End Sub
Private Sub txtHinicio_GotFocus()
Help ("Ingrese la Hora de Inicio del Día.")
txtHinicio.SelStart = 0
txtHinicio.SelLength = Len(txtHinicio)
End Sub
Private Sub txtMinFin_GotFocus()
Help ("Ingrese los Minutos de Fin del Día.")
txtMinFin.SelStart = 0
txtMinFin.SelLength = Len(txtMinFin)
End Sub
Private Sub txtMinInicio_GotFocus()
Help ("Ingrese los Minutos de Inicio del Día.")
txtMinInicio.SelStart = 0
txtMinInicio.SelLength = Len(txtMinInicio)
End Sub
Private Sub txtSetInfD_Change()
If Val(txtSetInfD.Text) < 0 Then
txtSetInfD = 0
End If
If udInfD.Max >= Val(txtSetInfD.Text) And udInfD.Min <= Val(txtSetInfD.Text) Then
udInfD.Value = Val(txtSetInfD.Text)
ElseIf udInfD.Min > Val(txtSetInfD.Text) Then
udInfD.Min = Val(txtSetInfD.Text)
udInfD.Value = udInfD.Min
Else
udInfD.Max = Val(txtSetInfD.Text)
udInfD.Value = udInfD.Max
End If
'Actualiza la caja de temperatura mínima en función del intervalo
If ChkActivarIntervalo.Value = Checked Then
txtSetMinD.Text = Str(Val(txtSetInfD.Text) - Val(txtGrIntervalo.Text))
End If
lblinf.Caption = "Temp. Set Inferior"
End Sub
Private Sub txtSetInfD_GotFocus()
Help ("Ingrese el valor Set T. Inferior Diurna")
txtSetInfD.SelStart = 0
txtSetInfD.SelLength = Len(txtSetInfD)
End Sub
Private Sub txtSetInfN_Change()
If Val(txtSetInfN.Text) < 0 Then
txtSetInfN = 0
End If
If udInfN.Max >= Val(txtSetInfN.Text) And udInfN.Min <= Val(txtSetInfN.Text) Then
udInfN.Value = Val(txtSetInfN.Text)
ElseIf udInfN.Min > Val(txtSetInfN.Text) Then
udInfN.Min = Val(txtSetInfN.Text)
udInfN.Value = udInfN.Min
167
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Else
udInfN.Max = Val(txtSetInfN.Text)
udInfN.Value = udInfN.Max
End If
'Actualiza la caja de temperatura mínima en función del intervalo
If ChkActivarIntervalo.Value = Checked Then
txtSetMinN.Text = Str(Val(txtSetInfN.Text) - Val(txtGrIntervalo.Text))
End If
lblinf.Caption = "Temp. Set Inferior"
End Sub
Private Sub txtSetInfN_GotFocus()
Help ("Ingrese el valor Set T. Inferior Nocturna")
txtSetInfN.SelStart = 0
txtSetInfN.SelLength = Len(txtSetInfN)
End Sub
Private Sub txtSetMaxD_Change()
If txtSetMaxD > 48 Then
txtSetMaxD = 48
End If
If udMaxD.Max >= Val(txtSetMaxD.Text) And udMaxD.Min <= Val(txtSetMaxD.Text) Then
udMaxD.Value = Val(txtSetMaxD.Text)
ElseIf udMaxD.Min > Val(txtSetMaxD.Text) Then
udMaxD.Min = Val(txtSetMaxD.Text)
udMaxD.Value = udMaxD.Min
Else
udMaxD.Max = Val(txtSetMaxD.Text)
udMaxD.Value = udMaxD.Max
End If
lblmax.Caption = "Temp. Set Máxima"
End Sub
Private Sub txtSetMaxD_GotFocus()
Help ("Ingrese el valor Set T. Máxima Diurna")
txtSetMaxD.SelStart = 0
txtSetMaxD.SelLength = Len(txtSetMaxD)
End Sub
Private Sub txtSetMaxN_Change()
If txtSetMaxN > 48 Then
txtSetMaxN = 48
End If
If udMaxN.Max >= Val(txtSetMaxN.Text) And udMaxN.Min <= Val(txtSetMaxN.Text) Then
udMaxN.Value = Val(txtSetMaxN.Text)
ElseIf udMaxN.Min > Val(txtSetMaxN.Text) Then
udMaxN.Min = Val(txtSetMaxN.Text)
udMaxN.Value = udMaxN.Min
Else
udMaxN.Max = Val(txtSetMaxN.Text)
udMaxN.Value = udMaxN.Max
End If
lblmax.Caption = "Temp. Set Máxima"
End Sub
Private Sub txtSetMaxN_GotFocus()
Help ("Ingrese el valor Set T. Máxima Nocturna")
txtSetMaxN.SelStart = 0
txtSetMaxN.SelLength = Len(txtSetMaxN)
End Sub
Private Sub txtSetMinD_Change()
If Val(txtSetMinD.Text) < 0 Then
txtSetMinD = 0
End If
If udMinD.Max >= Val(txtSetMinD.Text) And udMinD.Min <= Val(txtSetMinD.Text) Then
udMinD.Value = Val(txtSetMinD.Text)
ElseIf udMinD.Min > Val(txtSetMinD.Text) Then
168
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
MsgBox "La Temperatura de Alarma Mínima que Ud. está seteando es demasiado baja. Asegurese de que el valor es
correcto y de que su equipo de refrigeración llegue a dicha Temperatura", vbExclamation, "Advertencia"
udMinD.Min = Val(txtSetMinD.Text)
udMinD.Value = udMinD.Min
Else
udMinD.Max = Val(txtSetMinD.Text)
udMinD.Value = udMinD.Max
End If
lblmin.Caption = "Temp. Set Mínima"
End Sub
Private Sub txtSetMinD_GotFocus()
Help ("Ingrese el valor Set T. Mínima Diurna")
txtSetMinD.SelStart = 0
txtSetMinD.SelLength = Len(txtSetMinD)
End Sub
Private Sub txtSetMinN_Change()
If Val(txtSetMinN.Text) < 0 Then
txtSetMinN = 0
End If
If udMinN.Max >= Val(txtSetMinN.Text) And udMinN.Min <= Val(txtSetMinN.Text) Then
udMinN.Value = Val(txtSetMinN.Text)
ElseIf udMinN.Min > Val(txtSetMinN.Text) Then
udMinN.Min = Val(txtSetMinN.Text)
udMinN.Value = udMinN.Min
Else
udMinN.Max = Val(txtSetMinN.Text)
udMinN.Value = udMinN.Max
End If
lblmin.Caption = "Temp. Set Mínima"
End Sub
Private Sub txtSetMinN_GotFocus()
Help ("Ingrese el valor Set T. Mínima Nocturna")
txtSetMinN.SelStart = 0
txtSetMinN.SelLength = Len(txtSetMinN)
End Sub
Private Sub txtSetSupD_Change()
If Val(txtSetSupD.Text) < 0 Then
txtSetSupD = 0
End If
If udSupD.Max >= Val(txtSetSupD.Text) And udSupD.Min <= Val(txtSetSupD.Text) Then
udSupD.Value = Val(txtSetSupD.Text)
ElseIf udSupD.Min > Val(txtSetSupD.Text) Then
udSupD.Min = Val(txtSetSupD.Text)
udSupD.Value = udSupD.Min
Else
udSupD.Max = Val(txtSetSupD.Text)
udSupD.Value = udSupD.Max
End If
'Actualiza la caja de temperatura maxima en función del intervalo
If ChkActivarIntervalo.Value = Checked Then
txtSetMaxD.Text = Str(Val(txtSetSupD.Text) - Val(txtGrIntervalo.Text))
End If
lblsup.Caption = "Temp. Set Superior"
End Sub
Private Sub txtSetSupD_GotFocus()
Help ("Ingrese el valor Set T. Superior Diurna")
txtSetSupD.SelStart = 0
txtSetSupD.SelLength = Len(txtSetSupD)
End Sub
Private Sub txtSetSupN_Change()
If Val(txtSetSupN.Text) < 0 Then
txtSetSupN = 0
End If
169
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
If udSupN.Max >= Val(txtSetSupN.Text) And udSupN.Min <= Val(txtSetSupN.Text) Then
udSupN.Value = Val(txtSetSupN.Text)
ElseIf udSupN.Min > Val(txtSetSupN.Text) Then
udSupN.Min = Val(txtSetSupN.Text)
udSupN.Value = udSupN.Min
Else
udSupN.Max = Val(txtSetSupN.Text)
udSupN.Value = udSupN.Max
End If
'Actualiza la caja de temperatura maxima en función del intervalo
If ChkActivarIntervalo.Value = Checked Then
txtSetMaxN.Text = Str(Val(txtSetSupN.Text) - Val(txtGrIntervalo.Text))
End If
lblsup.Caption = "Temp. Set Superior"
End Sub
Private Sub txtSetSupN_GotFocus()
Help ("Ingrese el valor Set T. Superior Nocturna")
txtSetSupN.SelStart = 0
txtSetSupN.SelLength = Len(txtSetSupN)
End Sub
Private Sub udInfD_DownClick()
txtSetInfD.Text = Str(udInfD.Value)
End Sub
Private Sub udInfD_UpClick()
txtSetInfD.Text = Str(udInfD.Value)
End Sub
Private Sub udInfN_DownClick()
txtSetInfN.Text = Str(udInfN.Value)
End Sub
Private Sub udInfN_UpClick()
txtSetInfN.Text = Str(udInfN.Value)
End Sub
Private Sub udMaxD_DownClick()
txtSetMaxD.Text = Str(udMaxD.Value)
End Sub
Private Sub udMaxD_UpClick()
txtSetMaxD.Text = Str(udMaxD.Value)
End Sub
Private Sub udMaxN_DownClick()
txtSetMaxN.Text = Str(udMaxN.Value)
End Sub
Private Sub udMaxN_UpClick()
txtSetMaxN.Text = Str(udMaxN.Value)
End Sub
Private Sub udMinD_DownClick()
txtSetMinD.Text = Str(udMinD.Value)
End Sub
Private Sub udMinD_UpClick()
txtSetMinD.Text = Str(udMinD.Value)
End Sub
Private Sub udMinN_DownClick()
txtSetMinN.Text = Str(udMinN.Value)
End Sub
Private Sub udMinN_UpClick()
txtSetMinN.Text = Str(udMinN.Value)
170
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
End Sub
Private Sub udSupD_DownClick()
txtSetSupD.Text = Str(udSupD.Value)
End Sub
Private Sub udSupD_UpClick()
txtSetSupD.Text = Str(udSupD.Value)
End Sub
Private Sub udSupN_DownClick()
txtSetSupN.Text = Str(udSupN.Value)
End Sub
Private Sub udSupN_UpClick()
txtSetSupN.Text = Str(udSupN.Value)
End Sub
Private Sub txtHfin_Change()
varHFin = Val(txtHfin.Text)
If varHFin > 23 Then
MsgBox "La Hora no puede ser mayor a 23.", vbCritical, "Error"
txtHfin.Text = "23"
varHFin = Val(txtHfin.Text)
upHoraFin.Value = varHFin
ElseIf varHFin < 0 Then
MsgBox "La Hora no puede ser negativa.", vbCritical, "Error"
txtHfin.Text = "0"
varHFin = Val(txtHfin.Text)
upHoraFin.Value = varHFin
Else
upHoraFin.Value = varHFin
End If
End Sub
Private Sub txtHinicio_Change()
varHInicio = Val(txtHinicio.Text)
If varHInicio > 23 Then
MsgBox "La Hora no puede ser mayor a 23.", vbCritical, "Error"
txtHinicio.Text = "23"
varHInicio = Val(txtHinicio.Text)
upHoraInicio.Value = varHInicio
ElseIf varHInicio < 0 Then
MsgBox "La Hora no puede ser negativa.", vbCritical, "Error"
txtHinicio.Text = "0"
varHInicio = Val(txtHinicio.Text)
upHoraInicio.Value = varHInicio
Else
upHoraInicio.Value = varHInicio
End If
End Sub
Private Sub txtMinFin_Change()
varMinFin = Val(txtMinFin.Text)
If varMinFin > 59 Then
MsgBox "Los Minutos pueden ser superiores a 59.", vbCritical, "Error"
txtMinFin.Text = "59"
varMinFin = Val(txtMinFin.Text)
upMinFin.Value = varMinFin
ElseIf varMinFin < 0 Then
MsgBox "Los Minutos no pueden ser negativos.", vbCritical, "Error"
txtMinFin.Text = "0"
varMinFin = Val(txtMinFin.Text)
upMinFin.Value = varMinFin
Else
upMinFin.Value = varMinFin
End If
End Sub
171
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Private Sub txtMinInicio_Change()
varMinInicio = Val(txtMinInicio.Text)
If varMinInicio > 59 Then
MsgBox "Los Minutos pueden ser superiores a 59.", vbCritical, "Error"
txtMinInicio.Text = "59"
varMinInicio = Val(txtMinInicio.Text)
upMinInicio.Value = varMinInicio
ElseIf varMinInicio < 0 Then
MsgBox "Los Minutos no pueden ser negativos.", vbCritical, "Error"
txtMinInicio.Text = "0"
varMinInicio = Val(txtMinInicio.Text)
upMinInicio.Value = varMinInicio
Else
upMinInicio.Value = varMinInicio
End If
End Sub
Private Sub upHoraFin_DownClick()
txtHfin.Text = Str(upHoraFin.Value)
End Sub
Private Sub upHoraFin_UpClick()
txtHfin.Text = Str(upHoraFin.Value)
End Sub
Private Sub upHoraInicio_DownClick()
txtHinicio.Text = Str(upHoraInicio.Value)
End Sub
Private Sub upHoraInicio_UpClick()
txtHinicio.Text = Str(upHoraInicio.Value)
End Sub
Private Sub upMinFin_DownClick()
txtMinFin.Text = Str(upMinFin.Value)
End Sub
Private Sub upMinFin_UpClick()
txtMinFin.Text = Str(upMinFin.Value)
End Sub
Private Sub upMinInicio_DownClick()
txtMinInicio.Text = Str(upMinInicio.Value)
End Sub
Private Sub upMinInicio_UpClick()
txtMinInicio.Text = Str(upMinInicio.Value)
End Sub
B. 9 Código fuente de la Ventana de Control de Iluminación
Private Sub cmdActualizar_Click()
RS232Rx
NumFich = FreeFile
Open App.Path & "\parclimaticos.cci" For Input As #NumFich
Input #NumFich, vTemperat, vIlumina, vHumedad, FechayHora
Close #NumFich
lblNivelLuz.Caption = "Nivel al " + Str(FechayHora) + ": " + Str(vIlumina) + "%."
End Sub
Private Sub cmdActualizar_GotFocus()
Help ("Actualiza el valor de Iluminación Actual.")
End Sub
Private Sub cmdHelpLuz_Click()
MsgBox "Ud. puede setear cual es el horario de comienzo y fin del control de iluminación, fuera de este rango, los Bancos
Lumínicos permanecerán apagados, independientemente del nivel de iluminación existente.", vbInformation, "Ayuda"
172
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
End Sub
Private Sub cmdHelpLuz_GotFocus()
Help ("Ayuda")
End Sub
Private Sub cmdHelpLuz2_Click()
MsgBox "Los niveles de Iluminación en los que enciende cada Banco, son independientes entre sí. Puede setear los
bancos entre 0 y 100 % de iluminación, considerando un 100% la iluminación directa en un día soleado.", vbInformation,
"Ayuda"
End Sub
Private Sub cmdHelpLuz2_GotFocus()
Help ("Ayuda")
End Sub
Private Sub cmdSetLuz_Click()
vLuzSet1 = Val(txtLuzSet1.Text)
vLuzSet2 = Val(txtLuzSet2.Text)
vLuzHIni = Val(txtHinicio.Text)
vLuzMIni = Val(txtMinInicio.Text)
vLuzHFin = Val(txtHfin.Text)
vLuzMFin = Val(txtMinFin.Text)
NumFich = FreeFile
Open App.Path & "\variables.cci" For Output As #NumFich
Write #NumFich, vHoras, vMinutos, vSegundos, vLuzHIni, vLuzMIni, vLuzHFin, vLuzMFin, vLuzSet1, vLuzSet2,
vRiegoSet, vTMinDia, vTInfDia, vTSupDia, vTMaxDia, vTMinNoche, vTInfNoche, vTSupNoche, vTMaxNoche, vHoraSetD,
vMinSetD, vHoraSetN, vMinSetN
Close #NumFich
RS232Tx
End Sub
Private Sub Form_Load()
Me.Top = 2440
Me.Left = 4350
frmLuzOpen = True
If Login = True Then
cmdSetLuz.Enabled = True
End If
Me.Width = 4320
Me.Height = 3510
NumFich = FreeFile
Open App.Path & "\variables.cci" For Input As #NumFich
Input #NumFich, vHoras, vMinutos, vSegundos, vLuzHIni, vLuzMIni, vLuzHFin, vLuzMFin, vLuzSet1, vLuzSet2,
vRiegoSet, vTMinDia, vTInfDia, vTSupDia, vTMaxDia, vTMinNoche, vTInfNoche, vTSupNoche, vTMaxNoche, vHoraSetD,
vMinSetD, vHoraSetN, vMinSetN
Close #NumFich
txtLuzSet1.Text = Str(vLuzSet1)
txtLuzSet2.Text = Str(vLuzSet2)
txtHinicio.Text = Str(vLuzHIni)
txtMinInicio.Text = Str(vLuzMIni)
txtHfin.Text = Str(vLuzHFin)
txtMinFin.Text = Str(vLuzMFin)
NumFich = FreeFile
Open App.Path & "\txrx.scc" For Input As #NumFich
Input #NumFich, CommPort, IntervaloClima, IntervaloEquipos, IntervaloAlarmas, ActualizarOpenCtrl
Close #NumFich
If ActualizarOpenCtrl = True Then
RS232Rx
End If
NumFich = FreeFile
Open App.Path & "\parclimaticos.cci" For Input As #NumFich
Input #NumFich, vTemperat, vIlumina, vHumedad, FechayHora
Close #NumFich
lblNivelLuz.Caption = "Nivel al " + Str(FechayHora) + ": " + Str(vIlumina) + "%."
173
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
End Sub
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then Exit Sub
Me.Width = 4320
Me.Height = 3510
End Sub
Private Sub Form_Unload(Cancel As Integer)
Help ("C.C.I.")
frmLuzOpen = False
End Sub
Private Sub txtHfin_Change()
varHFin = Val(txtHfin.Text)
If varHFin > 23 Then
MsgBox "La Hora no puede ser mayor a 23.", vbCritical, "Error"
txtHfin.Text = "23"
varHFin = Val(txtHfin.Text)
upHoraFin.Value = varHFin
ElseIf varHFin < 0 Then
MsgBox "La Hora no puede ser negativa.", vbCritical, "Error"
txtHfin.Text = "0"
varHFin = Val(txtHfin.Text)
upHoraFin.Value = varHFin
Else
upHoraFin.Value = varHFin
End If
End Sub
Private Sub txtHfin_GotFocus()
Help ("Ingrese la hora Final del control de Luz")
txtHfin.SelStart = 0
txtHfin.SelLength = Len(txtHfin)
End Sub
Private Sub txtHinicio_Change()
varHInicio = Val(txtHinicio.Text)
If varHInicio > 23 Then
MsgBox "La Hora no puede ser mayor a 23.", vbCritical, "Error"
txtHinicio.Text = "23"
varHInicio = Val(txtHinicio.Text)
upHoraInicio.Value = varHInicio
ElseIf varHInicio < 0 Then
MsgBox "La Hora no puede ser negativa.", vbCritical, "Error"
txtHinicio.Text = "0"
varHInicio = Val(txtHinicio.Text)
upHoraInicio.Value = varHInicio
Else
upHoraInicio.Value = varHInicio
End If
End Sub
Private Sub txtHinicio_GotFocus()
Help ("Ingrese La hora de comienzo del control de Luz")
txtHinicio.SelStart = 0
txtHinicio.SelLength = Len(txtHinicio)
End Sub
Private Sub txtLuzSet1_Change()
udSet1.Value = Val(txtLuzSet1.Text)
End Sub
Private Sub txtLuzSet1_GotFocus()
Help ("Especifique el valor en % de Set para el Banco 1")
txtLuzSet1.SelStart = 0
txtLuzSet1.SelLength = Len(txtLuzSet1)
End Sub
174
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Private Sub txtLuzSet2_Change()
udSet2.Value = Val(txtLuzSet2.Text)
End Sub
Private Sub txtLuzSet2_GotFocus()
Help ("Especifique el valor en % de Set para el Banco 2")
txtLuzSet2.SelStart = 0
txtLuzSet2.SelLength = Len(txtLuzSet2)
End Sub
Private Sub txtMinFin_Change()
varMinFin = Val(txtMinFin.Text)
If varMinFin > 59 Then
MsgBox "Los Minutos pueden ser superiores a 59.", vbCritical, "Error"
txtMinFin.Text = "59"
varMinFin = Val(txtMinFin.Text)
upMinFin.Value = varMinFin
ElseIf varMinFin < 0 Then
MsgBox "Los Minutos no pueden ser negativos.", vbCritical, "Error"
txtMinFin.Text = "0"
varMinFin = Val(txtMinFin.Text)
upMinFin.Value = varMinFin
Else
upMinFin.Value = varMinFin
End If
End Sub
Private Sub txtMinFin_GotFocus()
Help ("Ingrese los minutos de Fin del control de Luz")
txtMinFin.SelStart = 0
txtMinFin.SelLength = Len(txtMinFin)
End Sub
Private Sub txtMinInicio_Change()
varMinInicio = Val(txtMinInicio.Text)
If varMinInicio > 59 Then
MsgBox "Los Minutos pueden ser superiores a 59.", vbCritical, "Error"
txtMinInicio.Text = "59"
varMinInicio = Val(txtMinInicio.Text)
upMinInicio.Value = varMinInicio
ElseIf varMinInicio < 0 Then
MsgBox "Los Minutos no pueden ser negativos.", vbCritical, "Error"
txtMinInicio.Text = "0"
varMinInicio = Val(txtMinInicio.Text)
upMinInicio.Value = varMinInicio
Else
upMinInicio.Value = varMinInicio
End If
End Sub
Private Sub txtMinInicio_GotFocus()
Help ("Ingrese Los minutos de comienzo del control de Luz")
txtMinInicio.SelStart = 0
txtMinInicio.SelLength = Len(txtMinInicio)
End Sub
Private Sub udSet1_DownClick()
txtLuzSet1.Text = Str(udSet1.Value)
End Sub
Private Sub udSet1_UpClick()
txtLuzSet1.Text = Str(udSet1.Value)
End Sub
Private Sub udSet2_DownClick()
txtLuzSet2.Text = Str(udSet2.Value)
End Sub
Private Sub udSet2_UpClick()
175
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
txtLuzSet2.Text = Str(udSet2.Value)
End Sub
Private Sub upHoraFin_DownClick()
txtHfin.Text = Str(upHoraFin.Value)
End Sub
Private Sub upHoraFin_UpClick()
txtHfin.Text = Str(upHoraFin.Value)
End Sub
Private Sub upHoraInicio_DownClick()
txtHinicio.Text = Str(upHoraInicio.Value)
End Sub
Private Sub upHoraInicio_UpClick()
txtHinicio.Text = Str(upHoraInicio.Value)
End Sub
Private Sub upMinFin_DownClick()
txtMinFin.Text = Str(upMinFin.Value)
End Sub
Private Sub upMinFin_UpClick()
txtMinFin.Text = Str(upMinFin.Value)
End Sub
Private Sub upMinInicio_DownClick()
txtMinInicio.Text = Str(upMinInicio.Value)
End Sub
Private Sub upMinInicio_UpClick()
txtMinInicio.Text = Str(upMinInicio.Value)
End Sub
B. 10 Código fuente de la Ventana de Control de Riego
Private Sub cmdActualizarHumedad_Click()
RS232Rx
NumFich = FreeFile
Open App.Path & "\parclimaticos.cci" For Input As #NumFich
Input #NumFich, vTemperat, vIlumina, vHumedad, FechayHora
Close #NumFich
lblNivelhumedad.Caption = "Nivel al " + Str(FechayHora) + ": " + Str(vHumedad) + "%."
End Sub
Private Sub cmdActualizarHumedad_GotFocus()
Help ("Actualiza el nivel de Humedad")
End Sub
Private Sub cmdHelpLuz_Click()
MsgBox "Debe setear en este punto, el nivel de humedad deseado, entre 0% y 100%, por debajo del cual se encenderá
el sistema de riego.", vbInformation, "Ayuda"
End Sub
Private Sub cmdHelpLuz_GotFocus()
Help ("Ayuda")
End Sub
Private Sub cmdSetearHumedad_Click()
vRiegoSet = Val(txtHumedadDeseada.Text)
NumFich = FreeFile
Open App.Path & "\variables.cci" For Output As #NumFich
Write #NumFich, vHoras, vMinutos, vSegundos, vLuzHIni, vLuzMIni, vLuzHFin, vLuzMFin, vLuzSet1, vLuzSet2,
vRiegoSet, vTMinDia, vTInfDia, vTSupDia, vTMaxDia, vTMinNoche, vTInfNoche, vTSupNoche, vTMaxNoche, vHoraSetD,
vMinSetD, vHoraSetN, vMinSetN
Close #NumFich
176
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
RS232Tx
End Sub
Private Sub cmdSetearHumedad_GotFocus()
Help ("Enviar Datos al Control")
End Sub
Private Sub Form_Load()
Me.Top = 0
Me.Left = 4350
frmRiegoOpen = True
If Login = True Then
cmdSetearHumedad.Enabled = True
End If
Me.Width = 4320
Me.Height = 2415
NumFich = FreeFile
Open App.Path & "\variables.cci" For Input As #NumFich
Input #NumFich, vHoras, vMinutos, vSegundos, vLuzHIni, vLuzMIni, vLuzHFin, vLuzMFin, vLuzSet1, vLuzSet2,
vRiegoSet, vTMinDia, vTInfDia, vTSupDia, vTMaxDia, vTMinNoche, vTInfNoche, vTSupNoche, vTMaxNoche, vHoraSetD,
vMinSetD, vHoraSetN, vMinSetN
Close #NumFich
txtHumedadDeseada.Text = Str(vRiegoSet)
NumFich = FreeFile
Open App.Path & "\txrx.scc" For Input As #NumFich
Input #NumFich, CommPort, IntervaloClima, IntervaloEquipos, IntervaloAlarmas, ActualizarOpenCtrl
Close #NumFich
If ActualizarOpenCtrl = True Then
RS232Rx
End If
NumFich = FreeFile
Open App.Path & "\parclimaticos.cci" For Input As #NumFich
Input #NumFich, vTemperat, vIlumina, vHumedad, FechayHora
Close #NumFich
lblNivelhumedad.Caption = "Nivel al " + Str(FechayHora) + ": " + Str(vHumedad) + "%."
End Sub
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then Exit Sub
Me.Width = 4320
Me.Height = 2415
End Sub
Private Sub Form_Unload(Cancel As Integer)
Help ("C.C.I.")
frmRiegoOpen = False
End Sub
Private Sub txtHumedadDeseada_Change()
UdHumSet.Value = Val(txtHumedadDeseada.Text)
End Sub
Private Sub txtHumedadDeseada_GotFocus()
Help ("Especifique el valor de Humedad Deseado")
txtHumedadDeseada.SelStart = 0
txtHumedadDeseada.SelLength = Len(txtHumedadDeseada)
End Sub
Private Sub UdHumSet_DownClick()
txtHumedadDeseada.Text = Str(UdHumSet.Value)
End Sub
Private Sub UdHumSet_UpClick()
txtHumedadDeseada.Text = Str(UdHumSet.Value)
End Sub
177
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
B. 11 Código fuente de los Monitores Individuales
B.11.1 Código fuente de la Ventana de Monitoreo del Clima.
Private Sub chkActualizar_Click()
If cmdActualizarClima.Caption = "&Actualizar" Then
cmdActualizarClima.Caption = "&Comenzar"
ElseIf cmdActualizarClima.Caption = "&Comenzar" Then
cmdActualizarClima.Caption = "&Actualizar"
ElseIf cmdActualizarClima.Caption = "&Detener" Then
cmdActualizarClima.Caption = "&Actualizar"
tmrActualizarClima.Enabled = False
End If
End Sub
Private Sub chkActualizar_GotFocus()
Help ("Habilita / Deshabilitar las Actualizaciones Periódicas")
End Sub
Private Sub cmdActualizarClima_Click()
If cmdActualizarClima.Caption = "&Actualizar" Or cmdActualizarClima.Caption = "&Comenzar" Then
If chkActualizar.Value = Unchecked Then
cmdActualizarClima.Caption = "&Actualizando"
RS232Rx
If TiempodeTxAgotado = True Then
cmdActualizarClima.Caption = "&Actualizar"
Exit Sub
End If
If CtrlSinEnergia = True Then
MsgBox "El Control se encuentra sin Energía Externa. Verifique la alimentación del mismo y encienda este
monitor nuevamente.", vbCritical + vbOKOnly, "Control Sin Energía!!!!"
tmrActualizarClima.Enabled = False
If chkActualizar.Value = Unchecked Then
cmdActualizarClima.Caption = "&Actualizar"
Else
cmdActualizarClima.Caption = "&Comenzar"
End If
ElseIf CtrlSinDatos = True Then
MsgBox "El Control se encuentra sin Datos para Operar. Setee el Control y Encienda el Monitor nuevamente.",
vbCritical + vbOKOnly, "Control Sin Datos!!!!"
tmrActualizarClima.Enabled = False
If chkActualizar.Value = Unchecked Then
cmdActualizarClima.Caption = "&Actualizar"
Else
cmdActualizarClima.Caption = "&Comenzar"
End If
Else
NumFich = FreeFile
Open App.Path & "\parclimaticos.cci" For Input As #NumFich
Input #NumFich, vTemperat, vIlumina, vHumedad, FechayHora
Close #NumFich
txtTemperatura = Str(vTemperat) + " º"
txtIluminación = Str(vIlumina) + " %"
txtHumedad = Str(vHumedad) + " %"
lblHora.Caption = FechayHora
cmdActualizarClima.Caption = "&Actualizar"
End If
Else
cmdActualizarClima.Caption = "&Actualizando"
RS232Rx
If TiempodeTxAgotado = True Then
chkActualizar.Value = Unchecked
cmdActualizarClima.Caption = "&Actualizar"
Exit Sub
End If
If CtrlSinEnergia = True Then
MsgBox "El Control se encuentra sin Energía Externa. Verifique la alimentación del mismo y encienda este
monitor nuevamente.", vbCritical + vbOKOnly, "Control Sin Energía!!!!"
tmrActualizarClima.Enabled = False
178
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
If chkActualizar.Value = Unchecked Then
cmdActualizarClima.Caption = "&Actualizar"
Else
cmdActualizarClima.Caption = "&Comenzar"
End If
ElseIf CtrlSinDatos = True Then
MsgBox "El Control se encuentra sin Datos para Operar. Setee el Control y Encienda el Monitor nuevamente.",
vbCritical + vbOKOnly, "Control Sin Datos!!!!"
tmrActualizarClima.Enabled = False
If chkActualizar.Value = Unchecked Then
cmdActualizarClima.Caption = "&Actualizar"
Else
cmdActualizarClima.Caption = "&Comenzar"
End If
Else
NumFich = FreeFile
Open App.Path & "\parclimaticos.cci" For Input As #NumFich
Input #NumFich, vTemperat, vIlumina, vHumedad, FechayHora
Close #NumFich
txtTemperatura = Str(vTemperat) + " º"
txtIluminación = Str(vIlumina) + " %"
txtHumedad = Str(vHumedad) + " %"
lblHora.Caption = FechayHora
cmdActualizarClima.Caption = "&Detener"
tmrActualizarClima.Interval = IntervaloClima * 1000
tmrActualizarClima.Enabled = True
End If
End If
Else
tmrActualizarClima.Enabled = False
If chkActualizar.Value = Unchecked Then
cmdActualizarClima.Caption = "&Actualizar"
Else
cmdActualizarClima.Caption = "&Comenzar"
End If
End If
End Sub
Private Sub cmdActualizarClima_GotFocus()
If chkActualizar.Value = Unchecked Then
Help ("Actualiza el Estado Climático")
Else
Help ("Comenza a Actualizar el Estado Climático")
End If
End Sub
Private Sub Form_Load()
Me.Top = 0
Me.Left = 6180
frmClimaOpen = True
Me.Width = 2610
Me.Height = 2760
NumFich = FreeFile
Open App.Path & "\parclimaticos.cci" For Input As #NumFich
Input #NumFich, vTemperat, vIlumina, vHumedad, FechayHora
Close #NumFich
txtTemperatura = Str(vTemperat) + " º"
txtIluminación = Str(vIlumina) + " %"
txtHumedad = Str(vHumedad) + " %"
lblHora.Caption = FechayHora
NumFich = FreeFile
Open App.Path & "\txrx.scc" For Input As #NumFich
Input #NumFich, CommPort, IntervaloClima, IntervaloEquipos, IntervaloAlarmas
Close #NumFich
chkActualizar.Caption = "Actualizar Cada " + Str(IntervaloClima) + " Seg."
End Sub
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then Exit Sub
179
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Me.Width = 2610
Me.Height = 2760
End Sub
Private Sub Form_Unload(Cancel As Integer)
Help ("C.C.I.")
frmClimaOpen = False
End Sub
Private Sub tmrActualizarClima_Timer()
cmdActualizarClima.Caption = "Actualizando"
RS232Rx
If TiempodeTxAgotado = True Then
chkActualizar.Value = Unchecked
cmdActualizarClima.Caption = "&Actualizar"
Exit Sub
End If
vIdentAlarmas = vEstAlarm - 32
If vIdentAlarmas >= 0 Then
MsgBox "El Control se encuentra sin Energía Externa. Verifique la alimentación del mismo y encienda este monitor
nuevamente.", vbCritical + vbOKOnly, "Control Sin Energía!!!!"
If chkActualizar.Value = Unchecked Then
cmdActualizarClima.Caption = "&Actualizar"
Else
cmdActualizarClima.Caption = "&Comenzar"
End If
tmrActualizarClima.Enabled = False
Else
NumFich = FreeFile
Open App.Path & "\parclimaticos.cci" For Input As #NumFich
Input #NumFich, vTemperat, vIlumina, vHumedad, FechayHora
Close #NumFich
txtTemperatura = Str(vTemperat) + " º"
txtIluminación = Str(vIlumina) + " %"
txtHumedad = Str(vHumedad) + " %"
lblHora.Caption = FechayHora
cmdActualizarClima.Caption = "&Detener"
End If
End Sub
B.11.2 Código fuente de la Ventana de Monitoreo de Equipos.
Private Sub chkActualizar_Click()
If cmdActualizarEquipos.Caption = "&Actualizar" Then
cmdActualizarEquipos.Caption = "&Comenzar"
ElseIf cmdActualizarEquipos.Caption = "&Comenzar" Then
cmdActualizarEquipos.Caption = "&Actualizar"
ElseIf cmdActualizarEquipos.Caption = "&Detener" Then
cmdActualizarEquipos.Caption = "&Actualizar"
tmrActualizarEquipos.Enabled = False
End If
End Sub
Private Sub chkActualizar_GotFocus()
Help ("Habilita / Deshabilitar las Actualizaciones Periódicas")
End Sub
Private Sub cmdActualizarEquipos_Click()
If cmdActualizarEquipos.Caption = "&Actualizar" Or cmdActualizarEquipos.Caption = "&Comenzar" Then
If chkActualizar.Value = Unchecked Then
cmdActualizarEquipos.Caption = "&Actualizando"
ActualizarEquipos
cmdActualizarEquipos.Caption = "&Actualizar"
Else
cmdActualizarEquipos.Caption = "&Actualizando"
ActualizarEquipos
If TiempodeTxAgotado = False Then
If CtrlSinEnergia = True Or CtrlSinDatos = True Then
180
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
cmdActualizarEquipos.Caption = "&Comenzar"
Else
tmrActualizarEquipos.Interval = IntervaloEquipos * 1000
tmrActualizarEquipos.Enabled = True
cmdActualizarEquipos.Caption = "&Detener"
End If
End If
End If
Else
tmrActualizarEquipos.Enabled = False
If chkActualizar.Value = Unchecked Then
cmdActualizarEquipos.Caption = "&Actualizar"
Else
cmdActualizarEquipos.Caption = "&Comenzar"
End If
End If
End Sub
Private Sub cmdActualizarEquipos_GotFocus()
If chkActualizar.Value = Unchecked Then
Help ("Actualiza el estado de las Alarmas")
Else
Help ("Comienza / Detiene la Actualización Periódica.")
End If
End Sub
Private Sub Form_Load()
Me.Top = 0
Me.Left = 0
frmEquiposOpen = True
Me.Width = 2700
Me.Height = 3465
NumFich = FreeFile
Open App.Path & "\txrx.scc" For Input As #NumFich
Input #NumFich, CommPort, IntervaloClima, IntervaloEquipos, IntervaloAlarmas
Close #NumFich
chkActualizar.Caption = "Actualizar Cada " + Str(IntervaloEquipos) + " Seg."
End Sub
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then Exit Sub
Me.Width = 2700
Me.Height = 3465
End Sub
Private Sub Form_Unload(Cancel As Integer)
Help ("C.C.I.")
frmEquiposOpen = False
End Sub
Private Sub tmrActualizarEquipos_Timer()
cmdActualizarEquipos.Caption = "Actualizando"
ActualizarEquipos
cmdActualizarEquipos.Caption = "&Detener"
End Sub
Function ActualizarEquipos()
Dim vIdentEquipo, vIdentEquipoAux As Integer
RS232Rx
If TiempodeTxAgotado = True Then
If chkActualizar.Value = Checked Then
tmrActualizarEquipos.Enabled = False
chkActualizar.Value = Unchecked
cmdActualizarEquipos.Caption = "&Actualizar"
Exit Function
Else
Exit Function
End If
End If
If CtrlSinEnergia = True Then
181
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
MsgBox "El Control se encuentra sin Energía Externa. Verifique la alimentación del mismo y encienda este monitor
nuevamente.", vbCritical + vbOKOnly, "Control Sin Energía!!!!"
If chkActualizar.Value = Unchecked Then
cmdActualizarEquipos.Caption = "&Actualizar"
Else
cmdActualizarEquipos.Caption = "&Comenzar"
End If
tmrActualizarEquipos.Enabled = False
Exit Function
End If
If CtrlSinDatos = True Then
MsgBox "El Control se encuentra sin Datos para Operar. Setee el Control y Encienda el Monitor nuevamente.",
vbCritical + vbOKOnly, "Control Sin Datos!!!!"
If chkActualizar.Value = Unchecked Then
cmdActualizarEquipos.Caption = "&Actualizar"
Else
cmdActualizarEquipos.Caption = "&Comenzar"
End If
tmrActualizarEquipos.Enabled = False
Exit Function
End If
vIdentEquipo = vEstEquip - 64
If vIdentEquipo >= 0 Then
txtRiego.Text = "Detenido"
Else
vIdentEquipo = vEstEquip - 32
If vIdentEquipo >= 0 Then
txtRiego.Text = "Encendido"
Else
txtRiego.Text = "Apagado"
vIdentEquipo = vEstEquip
End If
End If
vIdentEquipoAux = vIdentEquipo
vIdentEquipo = vIdentEquipo - 16
If vIdentEquipo >= 0 Then
txtBanco2.Text = "Encendido"
Else
txtBanco2.Text = "Apagado"
vIdentEquipo = vIdentEquipoAux
End If
vIdentEquipoAux = vIdentEquipo
vIdentEquipo = vIdentEquipo - 8
If vIdentEquipo >= 0 Then
txtBanco1.Text = "Encendido"
Else
txtBanco1.Text = "Apagado"
vIdentEquipo = vIdentEquipoAux
End If
vIdentEquipoAux = vIdentEquipo
vIdentEquipo = vIdentEquipo - 4
If vIdentEquipo >= 0 Then
txtAire.Text = "Encendido"
Else
txtAire.Text = "Apagado"
vIdentEquipo = vIdentEquipoAux
End If
vIdentEquipoAux = vIdentEquipo
vIdentEquipo = vIdentEquipo - 2
If vIdentEquipo >= 0 Then
txtPiloto.Text = "Encendido"
Else
txtPiloto.Text = "Apagado"
vIdentEquipo = vIdentEquipoAux
182
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
End If
vIdentEquipoAux = vIdentEquipo
vIdentEquipo = vIdentEquipo - 1
If vIdentEquipo >= 0 Then
txtCalefactor.Text = "Encendido"
Else
txtCalefactor.Text = "Apagado"
vIdentEquipo = vIdentEquipoAux
End If
End Function
Private Sub tmrEquipos_Timer()
If txtPiloto.Text = "Apagado" Then
txtPiloto.ForeColor = &H80000008
If txtPiloto.BackColor = &HFF& Then
txtPiloto.BackColor = &H80000005
Else
txtPiloto.BackColor = &HFF&
txtPiloto.ForeColor = &HFFFFFF
End If
End If
End Sub
Private Sub txtAire_Change()
If txtAire.Text = "Encendido" Then
txtAire.BackColor = &H80FF80
Else
txtAire.BackColor = &HC0FFC0
End If
End Sub
Private Sub txtBanco1_Change()
If txtBanco1.Text = "Encendido" Then
txtBanco1.BackColor = &H80FF80
Else
txtBanco1.BackColor = &HC0FFC0
End If
End Sub
Private Sub txtBanco2_Change()
If txtBanco2.Text = "Encendido" Then
txtBanco2.BackColor = &H80FF80
Else
txtBanco2.BackColor = &HC0FFC0
End If
End Sub
Private Sub txtCalefactor_Change()
If txtCalefactor.Text = "Encendido" Then
txtCalefactor.BackColor = &H80FF80
Else
txtCalefactor.BackColor = &HC0FFC0
End If
End Sub
Private Sub txtPiloto_Change()
If txtPiloto.Text = "Encendido" Then
txtPiloto.BackColor = &H80FF80
txtPiloto.ForeColor = &H80000008
Else
tmrEquipos.Enabled = True
End If
End Sub
Private Sub txtRiego_Change()
If txtRiego.Text = "Encendido" Then
txtRiego.BackColor = &H80FF80
ElseIf txtRiego.Text = "Detenido" Then
183
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
txtRiego.BackColor = &H80FFFF
Else
txtRiego.BackColor = &HC0FFC0
End If
End Sub
B.11.3 Código fuente de la Ventana de Monitoreo de Alarmas.
Private Sub chkActualizar_Click()
If cmdActualizarAlarmas.Caption = "&Actualizar" Then
cmdActualizarAlarmas.Caption = "&Comenzar"
ElseIf cmdActualizarAlarmas.Caption = "&Comenzar" Then
cmdActualizarAlarmas.Caption = "&Actualizar"
ElseIf cmdActualizarAlarmas.Caption = "&Detener" Then
cmdActualizarAlarmas.Caption = "&Actualizar"
tmrActualizarAlarmas.Enabled = False
End If
End Sub
Private Sub chkActualizar_GotFocus()
Help ("Habilita / Deshabilitar las Actualizaciones Periódicas")
End Sub
Private Sub cmdActualizarAlarmas_Click()
If cmdActualizarAlarmas.Caption = "&Actualizar" Or cmdActualizarAlarmas.Caption = "&Comenzar" Then
If chkActualizar.Value = Unchecked Then
cmdActualizarAlarmas.Caption = "&Actualizando"
ActualizarAlarmas
cmdActualizarAlarmas.Caption = "&Actualizar"
Else
cmdActualizarAlarmas.Caption = "&Actualizando"
ActualizarAlarmas
If TiempodeTxAgotado = False Then
If CtrlSinEnergia = True Or CtrlSinDatos = True Then
cmdActualizarAlarmas.Caption = "&Comenzar"
Else
tmrActualizarAlarmas.Interval = IntervaloAlarmas * 1000
tmrActualizarAlarmas.Enabled = True
cmdActualizarAlarmas.Caption = "&Detener"
End If
End If
End If
Else
tmrActualizarAlarmas.Enabled = False
If chkActualizar.Value = Unchecked Then
cmdActualizarAlarmas.Caption = "&Actualizar"
Else
cmdActualizarAlarmas.Caption = "&Comenzar"
End If
End If
End Sub
Private Sub cmdActualizarAlarmas_GotFocus()
If cmdActualizarAlarmas.Caption = "&Actualizar" Or cmdActualizarAlarmas.Caption = "&Comenzar" Then
If chkActualizar.Value = Unchecked Then
Help ("Actualiza el estado de las Alarmas")
Else
Help ("Comenza a Actualizar el estado de las Alarmas")
End If
Else
Help ("Detiene la Actualización del estado de las Alarmas")
End If
End Sub
Private Sub Form_Load()
Me.Top = 0
Me.Left = 2730
frmAlarmasOpen = True
184
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Me.Width = 3420
Me.Height = 3240
NumFich = FreeFile
Open App.Path & "\txrx.scc" For Input As #NumFich
Input #NumFich, CommPort, IntervaloClima, IntervaloEquipos, IntervaloAlarmas
Close #NumFich
chkActualizar.Caption = "Actualizar Cada " + Str(IntervaloAlarmas) + " Seg."
End Sub
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then Exit Sub
Me.Width = 3420
Me.Height = 3240
End Sub
Private Sub Form_Unload(Cancel As Integer)
Help ("C.C.I.")
frmAlarmasOpen = False
End Sub
Private Sub tmrActualizarAlarmas_Timer()
cmdActualizarAlarmas.Caption = "Actualizando"
ActualizarAlarmas
cmdActualizarAlarmas.Caption = "&Detener"
End Sub
Private Sub tmrAlarmas_Timer()
If txtAlarmFaltaAgua.Text = "Encendida" Then
txtAlarmFaltaAgua.ForeColor = &H80000008
If txtAlarmFaltaAgua.BackColor = &HFF& Then
txtAlarmFaltaAgua.BackColor = &H80000005
Else
txtAlarmFaltaAgua.BackColor = &HFF&
txtAlarmFaltaAgua.ForeColor = &HFFFFFF
End If
End If
If txtAlarmPilotoOff.Text = "Encendida" Then
txtAlarmPilotoOff.ForeColor = &H80000008
If txtAlarmPilotoOff.BackColor = &HFF& Then
txtAlarmPilotoOff.BackColor = &H80000005
Else
txtAlarmPilotoOff.BackColor = &HFF&
txtAlarmPilotoOff.ForeColor = &HFFFFFF
End If
End If
If txtAlarmRiegoDet.Text = "Encendida" Then
txtAlarmRiegoDet.ForeColor = &H80000008
If txtAlarmRiegoDet.BackColor = &HFF& Then
txtAlarmRiegoDet.BackColor = &H80000005
Else
txtAlarmRiegoDet.BackColor = &HFF&
txtAlarmRiegoDet.ForeColor = &HFFFFFF
End If
End If
If txtAlarmTempMax.Text = "Encendida" Then
txtAlarmTempMax.ForeColor = &H80000008
If txtAlarmTempMax.BackColor = &HFF& Then
txtAlarmTempMax.BackColor = &H80000005
Else
txtAlarmTempMax.BackColor = &HFF&
txtAlarmTempMax.ForeColor = &HFFFFFF
End If
End If
If txtAlarmTempMin.Text = "Encendida" Then
txtAlarmTempMin.ForeColor = &H80000008
If txtAlarmTempMin.BackColor = &HFF& Then
txtAlarmTempMin.BackColor = &H80000005
Else
txtAlarmTempMin.BackColor = &HFF&
txtAlarmTempMin.ForeColor = &HFFFFFF
185
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
End If
End If
End Sub
Private Sub txtAlarmFaltaAgua_Change()
If txtAlarmFaltaAgua.Text = "Encendida" Then
txtAlarmFaltaAgua.BackColor = &HFF&
txtAlarmFaltaAgua.ForeColor = &HFFFFFF
Else
txtAlarmFaltaAgua.BackColor = &HC0FFC0
txtAlarmFaltaAgua.ForeColor = &H80000008
End If
End Sub
Private Sub txtAlarmPilotoOff_Change()
If txtAlarmPilotoOff.Text = "Encendida" Then
txtAlarmPilotoOff.BackColor = &HFF&
txtAlarmPilotoOff.ForeColor = &HFFFFFF
Else
txtAlarmPilotoOff.BackColor = &HC0FFC0
txtAlarmPilotoOff.ForeColor = &H80000008
End If
End Sub
Private Sub txtAlarmRiegoDet_Change()
If txtAlarmRiegoDet.Text = "Encendida" Then
txtAlarmRiegoDet.BackColor = &HFF&
txtAlarmRiegoDet.ForeColor = &HFFFFFF
Else
txtAlarmRiegoDet.BackColor = &HC0FFC0
txtAlarmRiegoDet.ForeColor = &H80000008
End If
End Sub
Private Sub txtAlarmTempMax_Change()
If txtAlarmTempMax.Text = "Encendida" Then
txtAlarmTempMax.BackColor = &HFF&
txtAlarmTempMax.ForeColor = &HFFFFFF
Else
txtAlarmTempMax.BackColor = &HC0FFC0
txtAlarmTempMax.ForeColor = &H80000008
End If
End Sub
Private Sub txtAlarmTempMin_Change()
If txtAlarmTempMin.Text = "Encendida" Then
txtAlarmTempMin.BackColor = &HFF&
txtAlarmTempMin.ForeColor = &HFFFFFF
Else
txtAlarmTempMin.BackColor = &HC0FFC0
txtAlarmTempMin.ForeColor = &H80000008
End If
End Sub
Function ActualizarAlarmas()
Dim vIdentAlarmas, vIdentAlarmasAux As Integer
RS232Rx
If TiempodeTxAgotado = True Then
If chkActualizar.Value = Checked Then
tmrActualizarAlarmas.Enabled = False
chkActualizar.Value = Unchecked
cmdActualizarAlarmas.Caption = "&Actualizar"
Exit Function
Else
Exit Function
End If
End If
If CtrlSinEnergia = True Then
186
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
MsgBox "El Control se encuentra sin Energía Externa. Verifique la alimentación del mismo y encienda este monitor
nuevamente.", vbCritical + vbOKOnly, "Control Sin Energía!!!!"
If chkActualizar.Value = Unchecked Then
cmdActualizarAlarmas.Caption = "&Actualizar"
Else
cmdActualizarAlarmas.Caption = "&Comenzar"
End If
tmrActualizarAlarmas.Enabled = False
Exit Function
End If
If CtrlSinDatos = True Then
MsgBox "El Control se encuentra sin Datos para Operar. Setee el Control y Encienda el Monitor nuevamente.",
vbCritical + vbOKOnly, "Control Sin Datos!!!!"
If chkActualizar.Value = Unchecked Then
cmdActualizarAlarmas.Caption = "&Actualizar"
Else
cmdActualizarAlarmas.Caption = "&Comenzar"
End If
tmrActualizarAlarmas.Enabled = False
Exit Function
End If
vIdentAlarmas = vEstAlarm - 16
If vIdentAlarmas >= 0 Then
txtAlarmPilotoOff.Text = "Encendida"
Else
txtAlarmPilotoOff.Text = "Apagada"
vIdentAlarmas = vEstAlarm
End If
vIdentAlarmasAux = vIdentAlarmas
vIdentAlarmas = vIdentAlarmas - 8
If vIdentAlarmas >= 0 Then
txtAlarmRiegoDet.Text = "Encendida"
Else
txtAlarmRiegoDet.Text = "Apagada"
vIdentAlarmas = vIdentAlarmasAux
End If
vIdentAlarmasAux = vIdentAlarmas
vIdentAlarmas = vIdentAlarmas - 4
If vIdentAlarmas >= 0 Then
txtAlarmFaltaAgua.Text = "Encendida"
Else
txtAlarmFaltaAgua.Text = "Apagada"
vIdentAlarmas = vIdentAlarmasAux
End If
vIdentAlarmasAux = vIdentAlarmas
vIdentAlarmas = vIdentAlarmas - 2
If vIdentAlarmas >= 0 Then
txtAlarmTempMax.Text = "Encendida"
Else
txtAlarmTempMax.Text = "Apagada"
vIdentAlarmas = vIdentAlarmasAux
End If
vIdentAlarmasAux = vIdentAlarmas
vIdentAlarmas = vIdentAlarmas - 1
If vIdentAlarmas >= 0 Then
txtAlarmTempMin.Text = "Encendida"
Else
txtAlarmTempMin.Text = "Apagada"
vIdentAlarmas = vIdentAlarmasAux
End If
End Function
187
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
B. 12 Código fuente de la Ventana de Monitoreo General
Private Sub chkSonido_GotFocus()
Help ("Activa / Desactiva el sonido para las Alarmas")
End Sub
Private Sub cmdMonitorear_Click()
If cmdMonitorear.Caption = "&Monitorear" Then
cmdMonitorear.Caption = "&Detener"
tmrMonitor.Enabled = True
Else
cmdMonitorear.Caption = "&Monitorear"
tmrMonitor.Enabled = False
Led.BackStyle = 0
End If
End Sub
Private Sub cmdMonitorear_GotFocus()
If cmdMonitorear.Caption = "&Monitorear" Then
Help ("Comienza el Monitoreo.")
Else
Help ("Detiene el Monitoreo.")
End If
End Sub
Private Sub Form_Load()
Me.Height = 6780
Me.Width = 4400
Me.Top = 0
Me.Left = 0
End Sub
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then Exit Sub
Me.Height = 6780
Me.Width = 4400
End Sub
Private Sub Form_Unload(Cancel As Integer)
Help ("C.C.I.")
End Sub
Private Sub tmrMonitor_Timer()
If Led.BackStyle = 0 Then
Led.BackStyle = 1
Else
Monitorear
Led.BackStyle = 0
End If
End Sub
Function Monitorear()
Dim vIdentAlarmas, vIdentAlarmasAux As Integer
Dim vIdentEquipo, vIdentEquipoAux As Integer
RS232Rx
If TiempodeTxAgotado = True Then
tmrMonitor.Enabled = False
cmdMonitorear.Caption = "&Monitorear"
Exit Function
End If
If CtrlSinEnergia = True Then
picAlarmPiloff.Picture = LoadPicture(App.Path & "\iconos\sinenergia.ico")
picAlarmTmin.Picture = LoadPicture(App.Path & "\iconos\sinenergia.ico")
picAlarmTmax.Picture = LoadPicture(App.Path & "\iconos\sinenergia.ico")
188
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
picAlarmFaltaAgua.Picture = LoadPicture(App.Path & "\iconos\sinenergia.ico")
picAlarmRiegoDet.Picture = LoadPicture(App.Path & "\iconos\sinenergia.ico")
picEquPil.Picture = LoadPicture(App.Path & "\iconos\sinenergia.ico")
picEquCalef.Picture = LoadPicture(App.Path & "\iconos\sinenergia.ico")
picEquRef.Picture = LoadPicture(App.Path & "\iconos\sinenergia.ico")
picEquRiego.Picture = LoadPicture(App.Path & "\iconos\sinenergia.ico")
picEquB1.Picture = LoadPicture(App.Path & "\iconos\sinenergia.ico")
picEquB2.Picture = LoadPicture(App.Path & "\iconos\sinenergia.ico")
lblPiloto.Caption = "Ctrl. Sin Energía"
lblCalefaccion.Caption = "Ctrl. Sin Energía"
lblRefrigeracion.Caption = "Ctrl. Sin Energía"
lblRiego.Caption = "Ctrl. Sin Energía"
lblLuzB1.Caption = "Ctrl. Sin Energía"
lblLuzB2.Caption = "Ctrl. Sin Energía"
lblTemperatura.Caption = "Ctrl. Sin Energía"
lblHumedad.Caption = "Ctrl. Sin Energía"
lblIluminacion.Caption = "Ctrl. Sin Energía"
lblPilOff.Caption = "Ctrl. Sin Energía"
lblFaltaAgua.Caption = "Ctrl. Sin Energía"
LblRiegoDet.Caption = "Ctrl. Sin Energía"
lblTMax.Caption = "Ctrl. Sin Energía"
lblTmin.Caption = "Ctrl. Sin Energía"
MsgBox "El Control se encuentra sin Energía Externa. Verifique la alimentación del mismo y encienda este monitor
nuevamente.", vbCritical + vbOKOnly, "Control Sin Energía!!!!"
cmdMonitorear.Caption = "&Monitorear"
tmrMonitor.Enabled = False
Exit Function
End If
If CtrlSinDatos = True Then
picAlarmPiloff.Picture = LoadPicture(App.Path & "\iconos\txrx.ico")
picAlarmTmin.Picture = LoadPicture(App.Path & "\iconos\txrx.ico")
picAlarmTmax.Picture = LoadPicture(App.Path & "\iconos\txrx.ico")
picAlarmFaltaAgua.Picture = LoadPicture(App.Path & "\iconos\txrx.ico")
picAlarmRiegoDet.Picture = LoadPicture(App.Path & "\iconos\txrx.ico")
picEquPil.Picture = LoadPicture(App.Path & "\iconos\txrx.ico")
picEquCalef.Picture = LoadPicture(App.Path & "\iconos\txrx.ico")
picEquRef.Picture = LoadPicture(App.Path & "\iconos\txrx.ico")
picEquRiego.Picture = LoadPicture(App.Path & "\iconos\txrx.ico")
picEquB1.Picture = LoadPicture(App.Path & "\iconos\txrx.ico")
picEquB2.Picture = LoadPicture(App.Path & "\iconos\txrx.ico")
lblPiloto.Caption = "Setee el Ctrl."
lblCalefaccion.Caption = "Ctrl. Sin Datos"
lblRefrigeracion.Caption = "Setee el Ctrl."
lblRiego.Caption = "Ctrl. Sin Datos"
lblLuzB1.Caption = "Ctrl. Sin Datos"
lblLuzB2.Caption = "Setee el Ctrl."
lblTemperatura.Caption = "Ctrl. Sin Datos"
lblHumedad.Caption = "Setee el Ctrl."
lblIluminacion.Caption = "Ctrl. Sin Datos"
lblPilOff.Caption = "Ctrl. Sin Datos"
lblFaltaAgua.Caption = "Setee el Ctrl."
LblRiegoDet.Caption = "Ctrl. Sin Datos"
lblTMax.Caption = "Setee el Ctrl."
lblTmin.Caption = "Ctrl. Sin Datos"
MsgBox "El Control se encuentra sin Datos para Operar. Setee el Control y Encienda el Monitor nuevamente.",
vbCritical + vbOKOnly, "Control Sin Datos!!!!"
cmdMonitorear.Caption = "&Monitorear"
tmrMonitor.Enabled = False
Exit Function
End If
lblTemperatura.Caption = "Temperatura: " + Str(vTemperat) + " º"
lblIluminacion.Caption = "Iluminación: " + Str(vIlumina) + " %"
189
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
lblHumedad.Caption = "Humedad: " + Str(vHumedad) + " %"
vIdentAlarmas = vEstAlarm - 16
If vIdentAlarmas >= 0 Then
picAlarmPiloff.Picture = LoadPicture(App.Path & "\iconos\alarmon.ico")
lblPilOff.ForeColor = &HFF&
If chkSonido.Value = Checked Then
snd = sndPlaySound(App.Path & "\iconos\alarm.wav", SND_ASYNC Or SND_NODEFAULT)
End If
Else
picAlarmPiloff.Picture = LoadPicture(App.Path & "\iconos\alarmoff.ico")
lblPilOff.ForeColor = &H80000012
vIdentAlarmas = vEstAlarm
End If
vIdentAlarmasAux = vIdentAlarmas
vIdentAlarmas = vIdentAlarmas - 8
If vIdentAlarmas >= 0 Then
picAlarmRiegoDet.Picture = LoadPicture(App.Path & "\iconos\alarmon.ico")
LblRiegoDet.ForeColor = &HFF&
If chkSonido.Value = Checked Then
snd = sndPlaySound(App.Path & "\iconos\alarm.wav", SND_ASYNC Or SND_NODEFAULT)
End If
Else
picAlarmRiegoDet.Picture = LoadPicture(App.Path & "\iconos\alarmoff.ico")
LblRiegoDet.ForeColor = &H80000012
vIdentAlarmas = vIdentAlarmasAux
End If
vIdentAlarmasAux = vIdentAlarmas
vIdentAlarmas = vIdentAlarmas - 4
If vIdentAlarmas >= 0 Then
picAlarmFaltaAgua.Picture = LoadPicture(App.Path & "\iconos\alarmon.ico")
lblFaltaAgua.ForeColor = &HFF&
If chkSonido.Value = Checked Then
snd = sndPlaySound(App.Path & "\iconos\alarm.wav", SND_ASYNC Or SND_NODEFAULT)
End If
Else
picAlarmFaltaAgua.Picture = LoadPicture(App.Path & "\iconos\alarmoff.ico")
lblFaltaAgua.ForeColor = &H80000012
vIdentAlarmas = vIdentAlarmasAux
End If
vIdentAlarmasAux = vIdentAlarmas
vIdentAlarmas = vIdentAlarmas - 2
If vIdentAlarmas >= 0 Then
picAlarmTmax.Picture = LoadPicture(App.Path & "\iconos\alarmon.ico")
lblTMax.ForeColor = &HFF&
If chkSonido.Value = Checked Then
snd = sndPlaySound(App.Path & "\iconos\alarm.wav", SND_ASYNC Or SND_NODEFAULT)
End If
Else
picAlarmTmax.Picture = LoadPicture(App.Path & "\iconos\alarmoff.ico")
lblTMax.ForeColor = &H80000012
vIdentAlarmas = vIdentAlarmasAux
End If
vIdentAlarmasAux = vIdentAlarmas
vIdentAlarmas = vIdentAlarmas - 1
If vIdentAlarmas >= 0 Then
picAlarmTmin.Picture = LoadPicture(App.Path & "\iconos\alarmon.ico")
lblTmin.ForeColor = &HFF&
If chkSonido.Value = Checked Then
snd = sndPlaySound(App.Path & "\iconos\alarm.wav", SND_ASYNC Or SND_NODEFAULT)
End If
Else
picAlarmTmin.Picture = LoadPicture(App.Path & "\iconos\alarmoff.ico")
lblTmin.ForeColor = &H80000012
vIdentAlarmas = vIdentAlarmasAux
End If
190
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
'EQUIPOS
vIdentEquipo = vEstEquip - 64
If vIdentEquipo >= 0 Then
picEquRiego.Picture = LoadPicture(App.Path & "\iconos\riegodet.ico")
lblRiego.Caption = "Detenido"
lblRiego.ForeColor = &HFFFF&
lblRiego.BackColor = &H80C0FF
Else
vIdentEquipo = vEstEquip - 32
If vIdentEquipo >= 0 Then
picEquRiego.Picture = LoadPicture(App.Path & "\iconos\riegoon.ico")
lblRiego.Caption = "Encendido"
lblRiego.BackColor = &H8000000F
lblRiego.ForeColor = &H808000 '&HFFFF00
Else
picEquRiego.Picture = LoadPicture(App.Path & "\iconos\riegooff.ico")
lblRiego.Caption = "Apagado"
vIdentEquipo = vEstEquip
lblRiego.ForeColor = &H80000012
lblRiego.BackColor = &H8000000F
End If
End If
vIdentEquipoAux = vIdentEquipo
vIdentEquipo = vIdentEquipo - 16
If vIdentEquipo >= 0 Then
picEquB2.Picture = LoadPicture(App.Path & "\iconos\luzon.ico")
lblLuzB2.Caption = "Banco2 Encendido"
lblLuzB2.ForeColor = &HFFFF&
Else
picEquB2.Picture = LoadPicture(App.Path & "\iconos\luzoff.ico")
lblLuzB2.Caption = "Banco2 Apagado"
vIdentEquipo = vIdentEquipoAux
lblLuzB2.ForeColor = &H80000012
End If
vIdentEquipoAux = vIdentEquipo
vIdentEquipo = vIdentEquipo - 8
If vIdentEquipo >= 0 Then
picEquB1.Picture = LoadPicture(App.Path & "\iconos\luzon.ico")
lblLuzB1.Caption = "Banco1 Encendido"
lblLuzB1.ForeColor = &HFFFF&
Else
picEquB1.Picture = LoadPicture(App.Path & "\iconos\luzoff.ico")
lblLuzB1.Caption = "Banco1 Apagado"
vIdentEquipo = vIdentEquipoAux
lblLuzB1.ForeColor = &H80000012
End If
vIdentEquipoAux = vIdentEquipo
vIdentEquipo = vIdentEquipo - 4
If vIdentEquipo >= 0 Then
picEquRef.Picture = LoadPicture(App.Path & "\iconos\refrion.ico")
lblRefrigeracion.Caption = "Encendido"
lblRefrigeracion.ForeColor = &HFF0000
Else
picEquRef.Picture = LoadPicture(App.Path & "\iconos\refrioff.ico")
lblRefrigeracion.Caption = "Apagado"
vIdentEquipo = vIdentEquipoAux
lblRefrigeracion.ForeColor = &H80000012
End If
vIdentEquipoAux = vIdentEquipo
vIdentEquipo = vIdentEquipo - 2
If vIdentEquipo >= 0 Then
picEquPil.Picture = LoadPicture(App.Path & "\iconos\pilon.ico")
lblPiloto.Caption = "Piloto Encendido"
lblPiloto.ForeColor = &H80000012
Else
191
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
picEquPil.Picture = LoadPicture(App.Path & "\iconos\piloff.ico")
vIdentEquipo = vIdentEquipoAux
lblPiloto.Caption = "Piloto Apagado"
lblPiloto.ForeColor = &HFF&
End If
vIdentEquipoAux = vIdentEquipo
vIdentEquipo = vIdentEquipo - 1
If vIdentEquipo >= 0 Then
picEquCalef.Picture = LoadPicture(App.Path & "\iconos\calefon.ico")
lblCalefaccion.Caption = "Calef. Encendida"
lblCalefaccion.ForeColor = &H40C0&
Else
picEquCalef.Picture = LoadPicture(App.Path & "\iconos\calefoff.ico")
lblCalefaccion.Caption = "Calef. Apagada"
lblCalefaccion.ForeColor = &H80000012
vIdentEquipo = vIdentEquipoAux
End If
End Function
B. 13 Código fuente de la Ventana de Gráficos Temporales.
Private Sub chkBorrarGrafico_GotFocus()
Help ("Borra / Mantiene el gráfico antes de regraficar.")
End Sub
Private Sub chkRecomenzar_Click()
If chkBorrarGrafico.Enabled = True Then
chkBorrarGrafico.Enabled = False
Else
chkBorrarGrafico.Enabled = True
End If
End Sub
Private Sub chkRecomenzar_GotFocus()
Help ("Habilita / Dehabilita la Graficación Contínua.")
End Sub
Private Sub cmbEstadisticas_Click()
If cmbEstadisticas.Text = "Temperatura" Then
lblActual.Caption = "Actual: " + Str(vActualT) + " º"
lblMinimo.Caption = "Mínimo: " + Str(vMinimoT) + " º"
lblMaximo.Caption = "Máximo: " + Str(vMaximoT) + " º"
lblAmplitud.Caption = "Amplitud: " + Str(vAmplitudT) + " º"
lblPromedio.Caption = "Promedio: " + Str(vPromedioT) + " º"
ElseIf cmbEstadisticas.Text = "Humedad" Then
lblActual.Caption = "Actual: " + Str(vActualH) + " %"
lblMinimo.Caption = "Mínimo: " + Str(vMinimoH) + " %"
lblMaximo.Caption = "Máximo: " + Str(vMaximoH) + " %"
lblAmplitud.Caption = "Amplitud: " + Str(vAmplitudH) + " %"
lblPromedio.Caption = "Promedio: " + Str(vPromedioH) + " %"
ElseIf cmbEstadisticas.Text = "Iluminación" Then
lblActual.Caption = "Actual: " + Str(vActualL) + " %"
lblMinimo.Caption = "Mínimo: " + Str(vMinimoL) + " %"
lblMaximo.Caption = "Máximo: " + Str(vMaximoL) + " %"
lblAmplitud.Caption = "Amplitud: " + Str(vAmplitudL) + " %"
lblPromedio.Caption = "Promedio: " + Str(vPromedioL) + " %"
End If
End Sub
Private Sub cmbEstadisticas_GotFocus()
Help ("Seleccione el Parametro para ver Estadísticas")
End Sub
Private Sub cmbParametro_click()
If cmbParametro.Text = "Temperatura" Then
If mschTemperatura.chartType = VtChChartType2dArea Then
optArea.Value = True
192
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
ElseIf mschTemperatura.chartType = VtChChartType2dBar Then
optBarras.Value = True
ElseIf mschTemperatura.chartType = VtChChartType2dLine Then
optLineas.Value = True
ElseIf mschTemperatura.chartType = VtChChartType2dStep Then
optPaso.Value = True
End If
ElseIf cmbParametro.Text = "Humedad" Then
If mschHumedad.chartType = VtChChartType2dArea Then
optArea.Value = True
ElseIf mschHumedad.chartType = VtChChartType2dBar Then
optBarras.Value = True
ElseIf mschHumedad.chartType = VtChChartType2dLine Then
optLineas.Value = True
ElseIf mschHumedad.chartType = VtChChartType2dStep Then
optPaso.Value = True
End If
ElseIf cmbParametro.Text = "Iluminación" Then
If mschIluminacion.chartType = VtChChartType2dArea Then
optArea.Value = True
ElseIf mschIluminacion.chartType = VtChChartType2dBar Then
optBarras.Value = True
ElseIf mschIluminacion.chartType = VtChChartType2dLine Then
optLineas.Value = True
ElseIf mschIluminacion.chartType = VtChChartType2dStep Then
optPaso.Value = True
End If
End If
End Sub
Private Sub cmbParametro_GotFocus()
Help ("Parametro a cambiar el Tipo de Gráfico")
End Sub
Private Sub cmbTiempo_Change()
Help ("Seleccione si el tiempo es en Minutos u Horas")
End Sub
Private Sub cmbTiempo_GotFocus()
Help ("Tiempo en Horas o Minutos")
End Sub
Private Sub cmdComenzar_Click()
If cmdComenzar.Caption = "Comen&zar" Then
Dim vTiempoTotal As Integer
vTiempoTotal = Val(txtTiempo)
If vTiempoTotal <> Val(txtTiempo) Then
MsgBox "El tiempo de debe ser un valor entero entero. El programa lo redondeará automáticamente.", vbInformation +
vbOKOnly, "Valor erroneo."
txtTiempo.Text = Str(vTiempoTotal)
End If
If vTiempoTotal = 0 Then
MsgBox "El tiempo de debe ser un valor entero entero superior o igual a 1. El programa lo establecerá como 1.",
vbInformation + vbOKOnly, "Valor erroneo."
txtTiempo.Text = "1"
End If
Muestra = 0
If cmbTiempo.Text = "Horas" Then
vTiempoTotal = vTiempoTotal * 60
End If
CuentaTiempo = vTiempoTotal * 10 / 48 * 60
AuxCuentaTiempo = CuentaTiempo
pbRegresiva.Max = CuentaTiempo
pbRegresiva.Min = 0
pbPorciento.Max = 100
pbPorcientoT.Max = 100
pbPorcientoH.Max = 100
pbPorcientoL.Max = 100
193
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
pbPorciento.Min = 0
pbPorcientoT.Min = 0
pbPorcientoH.Min = 0
pbPorcientoL.Min = 0
lblPorciento.Caption = "0% Graficado"
pbPorciento.Value = 0
pbPorcientoT.Value = 0
pbPorcientoH.Value = 0
pbPorcientoL.Value = 0
lblPorciento.Visible = True
pbPorciento.Visible = True
lblregresiva.Caption = "Muestreando en: " + Str(CuentaTiempo)
lblregresiva.Visible = True
pbRegresiva.Visible = True
PonerenCero
tmrTiempo.Enabled = True
cmdComenzar.Caption = "&Detener"
Else
tmrTiempo.Enabled = False
cmdComenzar.Caption = "Comen&zar"
End If
End Sub
Private Sub cmdComenzar_GotFocus()
If cmdComenzar.Caption = "Comen&zar" Then
Help ("Comienza la graficación")
Else
Help ("Detiene la Graficación")
End If
End Sub
Private Sub cmdCopiarHumedad_Click()
mschHumedad.EditCopy
End Sub
Private Sub cmdCopiarHumedad_GotFocus()
Help ("Copia el Gráfico de Humedad")
End Sub
Private Sub cmdCopiarIluminacion_Click()
mschIluminacion.EditCopy
End Sub
Private Sub cmdCopiarIluminacion_GotFocus()
Help ("Copia el Gráfico de Iluminación")
End Sub
Private Sub cmdCopiarTemperatura_Click()
mschTemperatura.EditCopy
End Sub
Private Sub cmdCopiarTemperatura_GotFocus()
Help ("Copia el Gráfico de Temperatura")
End Sub
Private Sub cmdImprimirHumedad_Click()
mschHumedad.EditCopy
Printer.Print " "
Printer.PaintPicture Clipboard.GetData(), 0, 0
Printer.EndDoc
End Sub
Private Sub cmdImprimirHumedad_GotFocus()
Help ("Imprime Gráfico de Humedad")
End Sub
Private Sub cmdImprimirIluminación_Click()
mschIluminacion.EditCopy
194
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Printer.Print " "
Printer.PaintPicture Clipboard.GetData(), 0, 0
Printer.EndDoc
End Sub
Private Sub cmdImprimirIluminación_GotFocus()
Help ("Imprime Gráfico de Iluminación")
End Sub
Private Sub cmdImprimirTemperatura_Click()
mschTemperatura.EditCopy
Printer.Print " "
Printer.PaintPicture Clipboard.GetData(), 0, 0
Printer.EndDoc
End Sub
Private Sub cmdImprimirTemperatura_GotFocus()
Help ("Imprime Gráfico de Temperatura")
End Sub
Private Sub Form_Load()
Me.Height = 6780
Me.Width = 7380
Me.Top = 0
Me.Left = 4450
End Sub
Function Graficar()
Dim MatrizT(48, 1 To 1) As Integer
Dim MatrizH(48, 1 To 1) As Integer
Dim MatrizL(48, 1 To 1) As Integer
NumFich = FreeFile
Open App.Path & "\muestrat.gcc" For Input As #NumFich
Input #NumFich, T(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(9), T(10), T(11), T(12), T(13), T(14), T(15), T(16),
T(17), T(18), T(19), T(20), T(21), T(22), T(23), T(24), T(25), T(26), T(27), T(28), T(29), T(30), T(31), T(32), T(33), T(34),
T(35), T(36), T(37), T(38), T(39), T(40), T(41), T(42), T(43), T(44), T(45), T(46), T(47), T(48)
Close #NumFich
NumFich = FreeFile
Open App.Path & "\muestrah.gcc" For Input As #NumFich
Input #NumFich, H(0), H(1), H(2), H(3), H(4), H(5), H(6), H(7), H(8), H(9), H(10), H(11), H(12), H(13), H(14), H(15), H(16),
H(17), H(18), H(19), H(20), H(21), H(22), H(23), H(24), H(25), H(26), H(27), H(28), H(29), H(30), H(31), H(32), H(33), H(34),
H(35), H(36), H(37), H(38), H(39), H(40), H(41), H(42), H(43), H(44), H(45), H(46), H(47), H(48)
Close #NumFich
NumFich = FreeFile
Open App.Path & "\muestral.gcc" For Input As #NumFich
Input #NumFich, L(0), L(1), L(2), L(3), L(4), L(5), L(6), L(7), L(8), L(9), L(10), L(11), L(12), L(13), L(14), L(15), L(16), L(17),
L(18), L(19), L(20), L(21), L(22), L(23), L(24), L(25), L(26), L(27), L(28), L(29), L(30), L(31), L(32), L(33), L(34), L(35), L(36),
L(37), L(38), L(39), L(40), L(41), L(42), L(43), L(44), L(45), L(46), L(47), L(48)
Close #NumFich
RS232Rx
If CtrlSinEnergia = True Or CtrlSinDatos = True Then
tmrTiempo.Enabled = False
lblregresiva.Visible = False
pbRegresiva.Visible = False
cmdComenzar.Caption = "Comen&zar"
MsgBox "El Graficador se encuentra detenido debido a que el control se encuentra sin Datos para Operar o sin Energía
Externa. Revise el Control y Encienda el Graficador nuevamente.", vbCritical + vbOKOnly, "Graficador Detenido!!!!"
Exit Function
End If
T(Muestra) = vTemperat
H(Muestra) = vHumedad
L(Muestra) = vIlumina
vActualT = vTemperat
vActualH = vHumedad
195
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
vActualL = vIlumina
NumFich = FreeFile
Open App.Path & "\muestrat.gcc" For Output As #NumFich
Write #NumFich, T(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(9), T(10), T(11), T(12), T(13), T(14), T(15), T(16),
T(17), T(18), T(19), T(20), T(21), T(22), T(23), T(24), T(25), T(26), T(27), T(28), T(29), T(30), T(31), T(32), T(33), T(34),
T(35), T(36), T(37), T(38), T(39), T(40), T(41), T(42), T(43), T(44), T(45), T(46), T(47), T(48)
Close #NumFich
NumFich = FreeFile
Open App.Path & "\muestrah.gcc" For Output As #NumFich
Write #NumFich, H(0), H(1), H(2), H(3), H(4), H(5), H(6), H(7), H(8), H(9), H(10), H(11), H(12), H(13), H(14), H(15), H(16),
H(17), H(18), H(19), H(20), H(21), H(22), H(23), H(24), H(25), H(26), H(27), H(28), H(29), H(30), H(31), H(32), H(33), H(34),
H(35), H(36), H(37), H(38), H(39), H(40), H(41), H(42), H(43), H(44), H(45), H(46), H(47), H(48)
Close #NumFich
NumFich = FreeFile
Open App.Path & "\muestral.gcc" For Output As #NumFich
Write #NumFich, L(0), L(1), L(2), L(3), L(4), L(5), L(6), L(7), L(8), L(9), L(10), L(11), L(12), L(13), L(14), L(15), L(16), L(17),
L(18), L(19), L(20), L(21), L(22), L(23), L(24), L(25), L(26), L(27), L(28), L(29), L(30), L(31), L(32), L(33), L(34), L(35), L(36),
L(37), L(38), L(39), L(40), L(41), L(42), L(43), L(44), L(45), L(46), L(47), L(48)
Close #NumFich
Dim Punto As Integer
For Punto = 0 To 48
MatrizT(Punto, 1) = T(Punto)
MatrizH(Punto, 1) = H(Punto)
MatrizL(Punto, 1) = L(Punto)
Next
'Estadísticas
Dim r As Integer
vPromedioT = 0
vPromedioH = 0
vPromedioL = 0
vMinimoT = T(0)
vMinimoH = H(0)
vMinimoL = L(0)
For r = 0 To Muestra
If vMinimoT > T(r) Then vMinimoT = T(r)
If vMaximoT < T(r) Then vMaximoT = T(r)
vPromedioT = vPromedioT + T(r)
If vMinimoH > H(r) Then vMinimoH = H(r)
If vMaximoH < H(r) Then vMaximoH = H(r)
vPromedioH = vPromedioH + H(r)
If vMinimoL > L(r) Then vMinimoL = L(r)
If vMaximoL < L(r) Then vMaximoL = L(r)
vPromedioL = vPromedioL + L(r)
Next
If Muestra <> 0 Then
vPromedioT = vPromedioT / (Muestra + 1)
vPromedioH = vPromedioH / (Muestra + 1)
vPromedioL = vPromedioL / (Muestra + 1)
End If
vAmplitudT = vMaximoT - vMinimoT
vAmplitudH = vMaximoH - vMinimoH
vAmplitudL = vMaximoL - vMinimoL
If cmbEstadisticas.Text = "Temperatura" Then
lblActual.Caption = "Actual: " + Str(vActualT) + " º"
lblMinimo.Caption = "Mínimo: " + Str(vMinimoT) + " º"
lblMaximo.Caption = "Máximo: " + Str(vMaximoT) + " º"
lblAmplitud.Caption = "Amplitud: " + Str(vAmplitudT) + " º"
lblPromedio.Caption = "Promedio: " + Str(vPromedioT) + " º"
ElseIf cmbEstadisticas.Text = "Humedad" Then
lblActual.Caption = "Actual: " + Str(vActualH) + " %"
lblMinimo.Caption = "Mínimo: " + Str(vMinimoH) + " %"
196
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
lblMaximo.Caption = "Máximo: " + Str(vMaximoH) + " %"
lblAmplitud.Caption = "Amplitud: " + Str(vAmplitudH) + " %"
lblPromedio.Caption = "Promedio: " + Str(vPromedioH) + " %"
ElseIf cmbEstadisticas.Text = "Iluminación" Then
lblActual.Caption = "Actual: " + Str(vActualL) + " %"
lblMinimo.Caption = "Mínimo: " + Str(vMinimoL) + " %"
lblMaximo.Caption = "Máximo: " + Str(vMaximoL) + " %"
lblAmplitud.Caption = "Amplitud: " + Str(vAmplitudL) + " %"
lblPromedio.Caption = "Promedio: " + Str(vPromedioL) + " %"
End If
Dim Porciento As Integer
Porciento = Muestra * 100 / 48
lblPorciento.Caption = Str(Porciento) + "% Graficado"
pbPorciento.Value = Porciento
pbPorcientoT.Value = Porciento
pbPorcientoH.Value = Porciento
pbPorcientoL.Value = Porciento
Muestra = Muestra + 1
If Muestra = 49 Then
If chkRecomenzar.Value = Unchecked Then
tmrTiempo.Enabled = False
lblregresiva.Visible = False
pbRegresiva.Visible = False
cmdComenzar.Caption = "Comen&zar"
Else
If chkBorrarGrafico.Value = Checked Then
PonerenCero
Muestra = 0
Else
Muestra = 0
End If
End If
End If
mschTemperatura.ChartData = MatrizT
mschHumedad.ChartData = MatrizH
mschIluminacion.ChartData = MatrizL
End Function
Function PonerenCero()
For i = 0 To 48
T(i) = 0
H(i) = 0
L(i) = 0
Next
NumFich = FreeFile
Open App.Path & "\muestrat.gcc" For Output As #NumFich
Write #NumFich, T(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(9), T(10), T(11), T(12), T(13), T(14), T(15), T(16),
T(17), T(18), T(19), T(20), T(21), T(22), T(23), T(24), T(25), T(26), T(27), T(28), T(29), T(30), T(31), T(32), T(33), T(34),
T(35), T(36), T(37), T(38), T(39), T(40), T(41), T(42), T(43), T(44), T(45), T(46), T(47), T(48)
Close #NumFich
NumFich = FreeFile
Open App.Path & "\muestrah.gcc" For Output As #NumFich
Write #NumFich, H(0), H(1), H(2), H(3), H(4), H(5), H(6), H(7), H(8), H(9), H(10), H(11), H(12), H(13), H(14), H(15), H(16),
H(17), H(18), H(19), H(20), H(21), H(22), H(23), H(24), H(25), H(26), H(27), H(28), H(29), H(30), H(31), H(32), H(33), H(34),
H(35), H(36), H(37), H(38), H(39), H(40), H(41), H(42), H(43), H(44), H(45), H(46), H(47), H(48)
Close #NumFich
NumFich = FreeFile
Open App.Path & "\muestral.gcc" For Output As #NumFich
Write #NumFich, L(0), L(1), L(2), L(3), L(4), L(5), L(6), L(7), L(8), L(9), L(10), L(11), L(12), L(13), L(14), L(15), L(16), L(17),
L(18), L(19), L(20), L(21), L(22), L(23), L(24), L(25), L(26), L(27), L(28), L(29), L(30), L(31), L(32), L(33), L(34), L(35), L(36),
L(37), L(38), L(39), L(40), L(41), L(42), L(43), L(44), L(45), L(46), L(47), L(48)
Close #NumFich
End Function
197
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then Exit Sub
Me.Height = 6780
Me.Width = 7380
End Sub
Private Sub Form_Unload(Cancel As Integer)
Help ("C.C.I.")
End Sub
Private Sub optArea_Click()
If cmbParametro.Text = "Temperatura" Then
mschTemperatura.chartType = VtChChartType2dArea
ElseIf cmbParametro.Text = "Humedad" Then
mschHumedad.chartType = VtChChartType2dArea
ElseIf cmbParametro.Text = "Iluminación" Then
mschIluminacion.chartType = VtChChartType2dArea
End If
End Sub
Private Sub optArea_GotFocus()
Help ("Tipo de gráfico de Áreas")
End Sub
Private Sub optBarras_Click()
If cmbParametro.Text = "Temperatura" Then
mschTemperatura.chartType = VtChChartType2dBar
ElseIf cmbParametro.Text = "Humedad" Then
mschHumedad.chartType = VtChChartType2dBar
ElseIf cmbParametro.Text = "Iluminación" Then
mschIluminacion.chartType = VtChChartType2dBar
End If
End Sub
Private Sub optBarras_GotFocus()
Help ("Tipo de gráfico de Barras")
End Sub
Private Sub optLineas_Click()
If cmbParametro.Text = "Temperatura" Then
mschTemperatura.chartType = VtChChartType2dLine
ElseIf cmbParametro.Text = "Humedad" Then
mschHumedad.chartType = VtChChartType2dLine
ElseIf cmbParametro.Text = "Iluminación" Then
mschIluminacion.chartType = VtChChartType2dLine
End If
End Sub
Private Sub optLineas_GotFocus()
Help ("Tipo de gráfico de Líneas")
End Sub
Private Sub optPaso_Click()
If cmbParametro.Text = "Temperatura" Then
mschTemperatura.chartType = VtChChartType2dStep
ElseIf cmbParametro.Text = "Humedad" Then
mschHumedad.chartType = VtChChartType2dStep
ElseIf cmbParametro.Text = "Iluminación" Then
mschIluminacion.chartType = VtChChartType2dStep
End If
End Sub
Private Sub optPaso_GotFocus()
Help ("Tipo de gráfico de Pasos")
End Sub
Private Sub tmrTiempo_Timer()
CuentaTiempo = CuentaTiempo - 1
198
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
lblregresiva.Caption = "Muestreando en: " + Str(CuentaTiempo)
pbRegresiva.Value = CuentaTiempo
If CuentaTiempo = 0 Then
Graficar
CuentaTiempo = AuxCuentaTiempo
End If
End Sub
Private Sub txtTiempo_GotFocus()
Help ("Ingrese la cantidad de " + cmbTiempo.Text)
txtTiempo.SelStart = 0
txtTiempo.SelLength = Len(txtTiempo)
End Sub
Private Sub udTiempo_Change()
If cmbTiempo.Text = "Minutos" Then
udTiempo.Max = 300
udTiempo.Min = 1
ElseIf cmbTiempo.Text = "Horas" Then
udTiempo.Max = 24
udTiempo.Min = 1
End If
txtTiempo.Text = Str(udTiempo.Value)
End Sub
B.14 Código fuente de la Ventana de Control Manual
Dim RespuestaaPregunta
Dim CMEquipos, CMAlarmas As Long
Dim Calefactor, Aire, Banco1, Banco2, Riego As Byte
Dim APilotoOFF, ATMax, ATMin, AFaltaH2O, ARiegoDet As Byte
Private Sub chkAlamRiegoDetenido_Click()
If chkAlamRiegoDetenido.Value = cheked Then
ARiegoDet = 0
Else
ARiegoDet = 1
End If
Enviar
End Sub
Private Sub chkAlamRiegoDetenido_GotFocus()
Help ("Enciende / Apaga la Alarma de Riego Detenido.")
End Sub
Private Sub chkAlamTempMin_Click()
If chkAlamTempMin.Value = cheked Then
ATMin = 0
Else
ATMin = 1
End If
Enviar
End Sub
Private Sub chkAlamTempMin_GotFocus()
Help ("Enciende / Apaga la Alarma de Temperatura Mínima.")
End Sub
Private Sub chkAlarmPiloto_Click()
If chkAlarmPiloto.Value = cheked Then
APilotoOFF = 0
Else
APilotoOFF = 1
End If
Enviar
199
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
End Sub
Private Sub chkAlarmPiloto_GotFocus()
Help ("Enciende / Apaga la Alarma de Piloto Apagado.")
End Sub
Private Sub chkAlarmTempMax_Click()
If chkAlarmTempMax.Value = cheked Then
ATMax = 0
Else
ATMax = 1
End If
Enviar
End Sub
Private Sub chkAlarmTempMax_GotFocus()
Help ("Enciende / Apaga la Alarma de Temperatura Máxima.")
End Sub
Private Sub chkBanco1_Click()
If chkBanco1.Value = cheked Then
Banco1 = 0
Else
Banco1 = 1
End If
Enviar
End Sub
Private Sub chkBanco1_GotFocus()
Help ("Enciende / Apaga el Banco1 de Iluminación.")
End Sub
Private Sub chkBanco2_Click()
If chkBanco2.Value = cheked Then
Banco2 = 0
Else
Banco2 = 1
End If
Enviar
End Sub
Private Sub chkBanco2_GotFocus()
Help ("Enciende / Apaga el Banco2 de Iluminación.")
End Sub
Private Sub chkCalefaccion_Click()
If chkCalefaccion.Value = cheked Then
Calefactor = 0
Else
Calefactor = 1
End If
Enviar
End Sub
Private Sub chkCalefaccion_GotFocus()
Help ("Enciende / Apaga el Sist. de Calefacción.")
End Sub
Private Sub chkCalefaccion_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Help ("Enciende/Apaga el Calefactor")
End Sub
Private Sub chkFaltaAgua_Click()
If chkFaltaAgua.Value = cheked Then
AFaltaH2O = 0
Else
AFaltaH2O = 1
End If
200
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Enviar
End Sub
Private Sub chkFaltaAgua_GotFocus()
Help ("Enciende / Apaga la Alarma de Falta de Agua.")
End Sub
Private Sub chkrefrigeracion_Click()
If chkrefrigeracion.Value = cheked Then
Aire = 0
Else
Aire = 1
End If
Enviar
End Sub
Private Sub chkrefrigeracion_GotFocus()
Help ("Enciende / Apaga el Sist. de Refrigeración.")
End Sub
Private Sub chkRiego_Click()
If chkRiego.Value = cheked Then
Riego = 0
Else
Riego = 1
End If
Enviar
End Sub
Private Sub chkRiego_GotFocus()
Help ("Enciende / Apaga el Sistema de Riego.")
End Sub
Private Sub cmdActivar_Click()
If cmdActivar.Caption = "&Activar" Then
chkCalefaccion.Enabled = True
chkrefrigeracion.Enabled = True
chkBanco1.Enabled = True
chkBanco2.Enabled = True
chkRiego.Enabled = True
chkAlarmTempMax.Enabled = True
chkAlamTempMin.Enabled = True
chkAlarmPiloto.Enabled = True
chkAlamRiegoDetenido.Enabled = True
chkFaltaAgua.Enabled = True
cmdActivar.Caption = "&Desactivar"
frmCMActivado.Show
Principal.MSCTxRx.PortOpen = True
Principal.MSCTxRx.Output = Chr$(10)
Principal.MSCTxRx.Output = Chr$(250)
Enviar
Else
chkCalefaccion.Enabled = False
chkrefrigeracion.Enabled = False
chkBanco1.Enabled = False
chkBanco2.Enabled = False
chkRiego.Enabled = False
chkAlarmTempMax.Enabled = False
chkAlamTempMin.Enabled = False
chkAlarmPiloto.Enabled = False
chkAlamRiegoDetenido.Enabled = False
chkFaltaAgua.Enabled = False
chkCalefaccion.Value = Unchecked
chkrefrigeracion.Value = Unchecked
chkBanco1.Value = Unchecked
201
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
chkBanco2.Value = Unchecked
chkRiego.Value = Unchecked
chkAlarmTempMax.Value = Unchecked
chkAlamTempMin.Value = Unchecked
chkAlarmPiloto.Value = Unchecked
chkAlamRiegoDetenido.Value = Unchecked
chkFaltaAgua.Value = Unchecked
cmdActivar.Caption = "&Activar"
Principal.MSCTxRx.Output = Chr$(255)
Principal.MSCTxRx.PortOpen = False
Unload frmCMActivado
End If
End Sub
Private Sub cmdActivar_GotFocus()
Help ("Comienza / Detiene el Control Manual.")
End Sub
Private Sub cmdAyuda_Click()
MsgBox "Ud. puede controlar desde esta ventana, y en forma manual, absolutamente todos los artefactos que componen
el control, aconsejamos utilizar esta ventana solamente para prueba de los artefactos. Recuerde que cuando el control
manual está activado, deja de funcionar automáticamente.", vbInformation, "Ayuda"
End Sub
Private Sub cmdAyuda_GotFocus()
Help ("Ayuda")
End Sub
Private Sub Form_Load()
frmCtrlManualOpen = True
If Login = True Then
cmdActivar.Enabled = True
End If
If CtrlManualActivado = False Then
Calefactor = 0
Aire = 0
Banco1 = 0
Banco2 = 0
Riego = 0
APilotoOFF = 0
ATMax = 0
ATMin = 0
AFaltaH2O = 0
ARiegoDet = 0
Else
chkCalefaccion.Enabled = True
chkrefrigeracion.Enabled = True
chkBanco1.Enabled = True
chkBanco2.Enabled = True
chkRiego.Enabled = True
chkAlarmTempMax.Enabled = True
chkAlamTempMin.Enabled = True
chkAlarmPiloto.Enabled = True
chkAlamRiegoDetenido.Enabled = True
chkFaltaAgua.Enabled = True
cmdActivar.Caption = "&Desactivar"
If vchkCalefaccion = True Then
Calefactor = 1
chkCalefaccion.Value = Checked
Else
Calefactor = 0
chkCalefaccion.Value = Unchecked
End If
202
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
If vchkrefrigeracion = True Then
Aire = 1
chkrefrigeracion = Checked
Else
Aire = 0
chkrefrigeracion = Unchecked
End If
If vchkBanco1 = True Then
Banco1 = 1
chkBanco1 = Checked
Else
Banco1 = 0
chkBanco1 = Unchecked
End If
If vchkBanco2 = True Then
Banco2 = 1
chkBanco2 = cheked
Else
Banco2 = 0
chkBanco2 = Unchecked
End If
If vchkRiego = True Then
Riego = 1
chkRiego = Checked
Else
Riego = 0
chkRiego = Unchecked
End If
If vchkAlarmTempMax = True Then
ATMax = 1
chkAlarmTempMax = Checked
Else
ATMax = 0
chkAlarmTempMax = Unchecked
End If
If vchkAlamTempMin = True Then
ATMin = 1
chkAlamTempMin = Checked
Else
ATMin = 0
chkAlamTempMin = Unchecked
End If
If vchkAlarmPiloto = True Then
APilotoOFF = 1
chkAlarmPiloto = Checked
Else
APilotoOFF = 0
chkAlarmPiloto = Unchecked
End If
If vchkAlamRiegoDetenido = True Then
ARiegoDet = 1
chkAlamRiegoDetenido = Checked
Else
ARiegoDet = 0
chkAlamRiegoDetenido = Unchecked
End If
If vchkFaltaAgua = True Then
AFaltaH2O = 1
chkFaltaAgua = Checked
Else
AFaltaH2O = 0
chkFaltaAgua = Unchecked
203
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
End If
End If
CtrlManualActivado = True
FrmManual.Width = 5385
FrmManual.Height = 3465
End Sub
Function Enviar()
Help ("Transmitiendo Datos al Control...")
CtrlManualActivado = False
'CMEQUIPOS
CMEquipos = 0
If Calefactor = 1 Then
CMEquipos = CMEquipos + 1
End If
If Aire = 1 Then
CMEquipos = CMEquipos + 2
End If
If Banco1 = 1 Then
CMEquipos = CMEquipos + 4
End If
If Banco2 = 1 Then
CMEquipos = CMEquipos + 8
End If
If Riego = 1 Then
CMEquipos = CMEquipos + 16
End If
Principal.MSCTxRx.Output = Chr$(CMEquipos)
'CMALARMAS
CMAlarmas = 0
If APilotoOFF = 1 Then
CMAlarmas = CMAlarmas + 1
End If
If ATMax = 1 Then
CMAlarmas = CMAlarmas + 2
End If
If ATMin = 1 Then
CMAlarmas = CMAlarmas + 4
End If
If AFaltaH2O = 1 Then
CMAlarmas = CMAlarmas + 8
End If
If ARiegoDet = 1 Then
CMAlarmas = CMAlarmas + 16
End If
Principal.MSCTxRx.Output = Chr$(CMAlarmas)
Help ("C.C.I.")
End Function
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then Exit Sub
FrmManual.Width = 5385
FrmManual.Height = 3465
End Sub
Private Sub Form_Unload(Cancel As Integer)
frmCtrlManualOpen = False
204
Desarrollo del Control Climático Teleoperado de un Invernáculo
Javier Alejandro Carletto - Ricardo Iván Parladorio
Help ("C.C.I.")
If CtrlManualActivado = False Then
If cmdActivar.Caption = "&Desactivar" Then
RespuestaaPregunta = MsgBox("El control Manual está activado. ¿Desea desactivarlo ahora?", vbYesNo +
vbQuestion + vbDefaultButton1, "Aviso de Control Manual")
If RespuestaaPregunta = vbNo Then
RespuestaaPregunta = MsgBox("Si el Control Manual está activado, el control no opera en forma automática.
¿Está seguro que desea dejarlo Activado?", vbYesNo + vbQuestion + vbDefaultButton2, "Aviso")
If RespuestaaPregunta = vbYes Then
MsgBox "El control manual quedó activado. Asegúrese de que esté controlando en forma óptima. Recuerde
que el control NO ESTÁ OPERANDO EN FORMA AUTOMÁTICA.", vbExclamation, "Control Manual Activado"
CtrlManualActivado = True
If Calefactor = 1 Then
vchkCalefaccion = True
End If
If Aire = 1 Then
vchkrefrigeracion = True
End If
If Banco1 = 1 Then
vchkBanco1 = True
End If
If Banco2 = 1 Then
vchkBanco2 = True
End If
If Riego = 1 Then
vchkRiego = True
End If
If ATMax = 1 Then
vchkAlarmTempMax = True
End If
If ATMin = 1 Then
vchkAlamTempMin = True
End If
If APilotoOFF = 1 Then
vchkAlarmPiloto = True
End If
If ARiegoDet = 1 Then
vchkAlamRiegoDetenido = True
End If
If AFaltaH2O = 1 Then
vchkFaltaAgua = True
End If
Else
Principal.MSCTxRx.Output = Chr$(255)
Principal.MSCTxRx.PortOpen = False
Unload frmCMActivado
End If
Else
Principal.MSCTxRx.Output = Chr$(255)
Principal.MSCTxRx.PortOpen = False
Unload frmCMActivado
End If
End If
End If
End Sub
205
Descargar