Para segundos :tiempo Espera :tiempo * 100 Fin PonProp "segundos "GRUPOPROC "control Para esperaon :entrada Si No entrada :entrada [esperaon :entrada] Fin PonProp "esperaon "GRUPOPROC "control Para entrada :entrada Recibir Si :entrada = 1 [Si BitOr :entradas 254 = 255 [devuelve "CIERTO] [devuelve "FALSO]] Si :entrada = 2 [Si BitOr :entradas 253 = 255 [devuelve "CIERTO] [devuelve "FALSO]] Si :entrada = 3 [Si BitOr :entradas 251 = 255 [devuelve "CIERTO] [devuelve "FALSO]] Si :entrada = 4 [Si BitOr :entradas 247 = 255 [devuelve "CIERTO] [devuelve "FALSO]] Si :entrada = 5 [Si BitOr :entradas 239 = 255 [devuelve "CIERTO] [devuelve "FALSO]] Si :entrada = 6 [Si BitOr :entradas 223 = 255 [devuelve "CIERTO] [devuelve "FALSO]] Si :entrada = 7 [Si BitOr :entradas 191 = 255 [devuelve "CIERTO] [devuelve "FALSO]] Si :entrada = 8 [Si BitOr :entradas 127 = 255 [devuelve "CIERTO] [devuelve "FALSO]] Escribe [NO ES UN VALOR ADECUADO DE ENTRADA] Alto Fin PonProp "entrada "GRUPOPROC "control Para esperaoff :entrada Si entrada :entrada [esperaoff :entrada] Fin PonProp "esperaoff "GRUPOPROC "control Para enviaocteto :datosalidas Si :datosalidas > 255 [escribe [valor incorrecto de octeto] alto] Si :datosalidas < 0 [escribe [valor incorrecto de octeto] alto] Haz "salidastemporal :datosalidas Enviar :salidastemporal Fin PonProp "enviaocteto "GRUPOPROC "control Para conecta :numsalida Si :numsalida > 8 [Escribe [valor erroneo de salida] Alto] Si :numsalida < 1 [Escribe [valor erroneo de salida] Alto] Local "numsalida Haz "salidastemporal :salidas Haz "numsalida :numsalida - 1 Haz "salidastemporal BitOr :salidastemporal Potencia 2 :numsalida Enviar :salidastemporal Fin PonProp "conecta "GRUPOPROC "control Para apaga :numsalida Si :numsalida < 1 [escribe [valor erróneo de salida] alto] Si :numsalida > 8 [escribe [valor erróneo de salida] alto] Local "numsalida Haz "salidastemporal :salidas Haz "numsalida :numsalida - 1 Haz "salidastemporal BitAnd :salidastemporal 255 - Potencia 2 :numsalida Enviar :salidastemporal Fin PonProp "apaga "GRUPOPROC "control Para Segundos :tiempo segundos :tiempo Fin PonProp "Segundos "GRUPOPROC "control Para Recibir1 Local "dato Local "contador Haz "dato LeeCanal :canal EscribeCanal :canal 204 Haz "contador 0 Mientras [(CaracterPendiente? :canal)="FALSO ] [Haz "contador :contador + 1 Si ( :contador = 500 ) [Devuelve "FALSO Alto] []] Haz "dato LeeCanal :canal EscribeCanal :canal :dato Haz "contador 0 Mientras [(CaracterPendiente? :canal)="FALSO ] [Haz "contador :contador + 1 Si ( :contador = 500 ) [Devuelve "FALSO Alto] []] Si ( ( LeeCanal :canal ) = 240 ) [Haz "entradas :dato Devuelve "CIERTO Alto] [] Devuelve "FALSO Fin PonProp "Recibir1 "GRUPOPROC "control Para Recibir Si :canal = -1 [Alto] Repite 3 [Si Recibir1 = "CIERTO [Si ( :error ) = 1 [Mensaje Haz "error -1] [] Alto][]] LimpiaVentana "TEXTOS PonCursor [16 5] Escribe [NO HAY COMUNICACIÓN CON LA PLACA CONTROLADORA] Haz "error 1 Fin PonProp "Recibir "GRUPOPROC "control Para Mensaje LimpiaVentana "TEXTOS PonCursor [23 3] Escribe [CONTROLADORA EDUCATIVA < ENCONOR 1 >] PonCursor [30 4] Escribe [CONTROL POR ORDENADOR] PonCursor [20 6] Si :canal = 1 [escribe [COMUNICACIÓN ESTABLECIDA POR EL CANAL COM 1] alto] Si :canal = 2 [escribe [COMUNICACIÓN ESTABLECIDA POR EL CANAL COM 2] alto] Si :canal = 3 [escribe [COMUNICACIÓN ESTABLECIDA POR EL CANAL COM 3] alto] PonCursor [10 6] Escribe [NO SE PUEDE ESTABLECER COMUNICACIÓN CON LA PLACA CONTROLADORA] PonCursor [13 7] Escribe [REVISA EL CABLE DE CONEXIÓN Y LA PLACA Y VUELVE A INTENTARLO] Fin PonProp "Mensaje "GRUPOPROC "control Para EsperaOn :entrada esperaon :entrada Fin PonProp "EsperaOn "GRUPOPROC "control Para EsperaOff :entrada esperaoff :entrada Fin PonProp "EsperaOff "GRUPOPROC "control Para Enviar1 :dato Local "temp Local "contador Haz "temp LeeCanal :canal EscribeCanal :canal 170 Haz "contador 0 Mientras [( CaracterPendiente? :canal ) = "FALSO] [Haz "contador :contador + 1 Si ( :contador ) = 500 [Devuelve "FALSO Alto] []] Si ( LeeCanal :canal ) = 240 [ Haz "contador 0 EscribeCanal :canal :dato Haz "contador 0 Mientras [( CaracterPendiente? :canal ) = "FALSO] [Haz "contador :contador + 1 Si ( :contador ) = 500 [Devuelve "FALSO Alto] []] Comprueba ( LeeCanal :canal = :dato ) SiCierto [EscribeCanal :canal 240 Haz "salidas :dato Devuelve "CIERTO Alto] SiFalso [EscribeCanal :canal 15 Devuelve "FALSO Alto] ] [] Devuelve "FALSO Fin PonProp "Enviar1 "GRUPOPROC "control Para EnviaOcteto :datosalidas enviaocteto :datosalidas Fin PonProp "EnviaOcteto "GRUPOPROC "control Para Entrada :entrada entrada :entrada Fin PonProp "Entrada "GRUPOPROC "control Para Entorno ;**** DEFINICION DE TODAS LAS VARIABLES UTILIZADAS EN TODAS LAS RUTINAS DEL CONTROL ********************* Haz "entradas 0 ; Valor de las entradas de la placa. Haz "error 0 ; Controla el flujo de comunicación con la placa. Haz "opcion 0 ; Determina la opcion de los menús Haz "salidas 0 ; valor espejo de las salidas de la placa. Haz "salidastemporal 0 ; valor al que se van a poner de inmediato las salidas. Haz "contador 0 Haz "temp 0 ; ************************************************************************************************************************************************* Agrupa "control [Apaga Arranca Arrancar Arrancar1 Arrancar2 Arrancar? Conecta Entorno Entrada EnviaOcteto Enviar Enviar1 EsperaOff EsperaOn Mensaje Recibir Recibir1 Segundos apaga conecta entrada enviaocteto esperaoff esperaon segundos ] Tapa "control Agrupa "variables [:contador :temp :canal :entradas :error :opcion :salidas :salidastemporal ] Tapa "variables CierraVentana "GRAFICOS PonPosicionVentana "TEXTOS [0 0] PonTamañoVentana "TEXTOS [639 170] PonColorPapel 15 PonFondoTexto 15 LimpiaVentana "TEXTOS PonPosicionVentana "TRABAJO [0 150] PonTamañoVentana "TRABAJO [639 235] LimpiaVentana "TRABAJO PonCursor [15 0] Escribe [CONFIGURACIÓN DE LA RESOLUCIÓN DE PANTALLA EMPLEADA] PonCursor [20 2] Escribe [1 - Pantalla en modo 640 x 480 puntos] PonCursor [20 3] Escribe [2 - Pantalla en modo 800 x 600 puntos] PonCursor [25 5] Escribe [Selecciona opción ( 1 - 2 )] Haz "opcion LeeCar Si :opcion < 1 [Entorno] Si :opcion > 2 [Entorno] Si :opcion = 2 [PonPosicionVentana "TEXTOS [0 0] PonTamañoVentana "TEXTOS [799 190] PonPosicionVentana "TRABAJO [0 170] PonTamañoVentana "TRABAJO [799 335]] LimpiaVentana "TEXTOS LimpiaVentana "TRABAJO PonCursor [15 0] Escribe [CONFIGURACIÓN DEL PUERTO DE COMUNICACIONES CON LA PLACA] PonCursor [15 2] Escribe [1 - Detección automática de puerto de comunicaciones] PonCursor [15 3] Escribe [2 - Comunicación por COM 1] PonCursor [15 4] Escribe [3 - Comunicación por COM 2] PonCursor [20 6] Escribe [Selecciona opción ( 1 - 3 )] Haz "opcion LeeCar Si :opcion < 1 [Entorno] Si :opcion > 3 [Entorno] Repite 3 [Si ( :canal = -1 ) [Arranca] []] Mensaje Haz "salidas 0 Haz "salidastemporal 0 Haz "error -1 Recibir Enviar :salidas Recicla Fin PonProp "Entorno "GRUPOPROC "control Para Enviar :dato Si :canal = -1 [Alto] Repite 4 [Si ( ( Enviar1 :dato ) = "CIERTO ) [Haz "salidas :salidastemporal Si ( ( :error ) = 1 ) [Mensaje Haz "error -1] [] Alto][]] LimpiaVentana "TEXTOS PonCursor [16 5] Escribe [NO HAY COMUNICACIÓN CON LA PLACA CONTROLADORA] Haz "error 1 Fin PonProp "Enviar "GRUPOPROC "control Para Conecta :numsalida conecta :numsalida Fin PonProp "Conecta "GRUPOPROC "control Para Arrancar? Si ( Arrancar1 = 1 ) [Devuelve 1 Alto] Si ( Arrancar2 = 2 ) [Devuelve 2 Alto] Devuelve -1 Fin PonProp "Arrancar? "GRUPOPROC "control Para Arrancar2 Si (:canal=1) [CierraCanal 1] Si (:canal=2) [CierraCanal 2] Abrecanal 2 [9600 1 8 1 0] Haz "salidas 0 Local "contador Haz "contador 0 EscribeCanal 2 255 Haz "contador 0 Mientras [CaracterPendiente? 2 ="FALSO] [Haz "contador :contador + 1 Si :contador = 500 [Haz "canal -1 CierraCanal 2 Devuelve :canal Alto] []] Si ( ( LeeCanal 2 ) = 240 ) [Haz "canal 2 Devuelve :canal Alto] [] Haz "canal -1 CierraCanal 2 Devuelve :canal Fin PonProp "Arrancar2 "GRUPOPROC "control Para Arrancar1 Si (:canal=1) [CierraCanal 1] Si (:canal=2) [CierraCanal 2] Abrecanal 1 [9600 1 8 1 0] Haz "salidas 0 Local "contador Haz "contador 0 EscribeCanal 1 255 Es "1 Haz "contador 0 Mientras [CaracterPendiente? 1 ="FALSO] [Haz "contador :contador + 1 Si :contador = 500 [Haz "canal -1 CierraCanal 1 Devuelve :canal Alto] []] ES "2 Si ( ( LeeCanal 1 ) = 240 ) [Haz "canal 1 Devuelve :canal Alto] [] Haz "canal -1 CierraCanal 1 Devuelve :canal Fin PonProp "Arrancar1 "GRUPOPROC "control Para Arrancar Haz "salidas 0 Si :opcion = 1 [Arrancar? alto] Si :opcion = 2 [Arrancar1 alto] Si :opcion = 3 [Arrancar2 alto] Fin PonProp "Arrancar "GRUPOPROC "control Para Arranca Repite 3 [Si No Arrancar = -1 Alto] Fin PonProp "Arranca "GRUPOPROC "control Para Apaga :numsalida apaga :numsalida Fin PonProp "Apaga "GRUPOPROC "control ;PonProp "control "TAPA "CIERTO Haz "canal -1 ; Selección del puerto de comunicaciones Entorno