{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Funciones de Borrado:\n",
    "\n",
    "## borrado_continuo()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "####\n",
    "# Cuando aún no hemos realizado una nueva lectura\n",
    "\n",
    "######### RECORDAR LA NUEVA FORMA DE LEER LOS DATOS Y QUE EXISTE UNA LISTA DE SEGURIDAD LLAMADA lecturas, y otra donde se va\n",
    "# guardando las lecturas procesadas lecturas_procesadas. En el caso de borrar, solo borramos la última lectura procesada.\n",
    "\n",
    "### QUEDA PENDIENTE HACER LAS NUEVAS FUNCIONES DE LECTURA. CADA PALABRA SE AÑADE SEGÚN LA MODALIDAD DE LECTURA QUE SE \n",
    "# ESTABLECE DE FORMA CONTINUA POR BLUETOOTH (BOTON O VOZ)\n",
    "\n",
    "#### TENEMOS QUE RETROCEDER SEGUN LECTURAS_PROCESADAS Y BORRAR ULTIMA POSICION EN TXT O EXCEL CON OTRA FUNCION. SI DATO A\n",
    "# INCORPORAR ES BORRAR, ACTUAMOS.\n",
    "\n",
    "lecturas_procesadas = list()\n",
    "lecturas = [\"SIMPLE|0001\", \"SIMPLE|0002\", \"MULTICAPA-SIMPLE|0003\", \"MULTICAPA-SIMPLE|0004\", \"SIMPLE|0005\", \"HUECO\", \n",
    "            \"SIMPLE|0006\", \"SIMPLE|0007\", \"SIMPLE|0008\", \"INCIDENCIA\", \"MULTICAPA-INCIDENCIA\", \"MULTICAPA-SIMPLE|0009\",\n",
    "            \"SIMPLE|0010\"]\n",
    "\n",
    "def borrado_continuo():\n",
    "    global alturamax\n",
    "    global alturamin\n",
    "    global anterior_multicapa\n",
    "    global actual_multicapa\n",
    "    global columna\n",
    "    global altura\n",
    "    global subiendo\n",
    "    \n",
    "    # Para retroceder necesitamos saber dónde estabamos previo al borrado. Esto se hará con una función nueva llamada\n",
    "    # ultima(). Esta función tiene que devolvernos las variables globales.\n",
    "    # Pensemos que una vez leído todas las variables globales el avance por defecto en las funciones de avance habrá\n",
    "    # desaparecido.\n",
    "    \n",
    "    analisis_ultima = ultima() # []\n",
    "    \n",
    "    \n",
    "    \n",
    "    \n",
    "    #, y borrar las últimas posiciones.\n",
    "    # lecturas es una lista donde se van guardando por seguridad todas las lecturas\n",
    "    global lecturas\n",
    "    \n",
    "\n",
    "    \n",
    "\n",
    "    \"\"\"\n",
    "    archivo_mapa = open(direccion_mapa, 'w')\n",
    "    archivo_mapa.close()\n",
    "    for dato in mapa:\n",
    "        archivo_mapa = open(direccion_mapa, 'a')\n",
    "        aux = str(dato) + \"\\n\"\n",
    "        #aux = str(dato)\n",
    "        archivo_mapa.write(aux)  # el método write añade \\n automáticamente\n",
    "        archivo_mapa.close()\n",
    "    \"\"\"\n",
    "\n",
    "    ultima_lectura = mapa[-1].split(\"|\")\n",
    "    dato = str(mapa[-1])\n",
    "    # columna|altura|tipo de ubicacion|subiendo\n",
    "    columna = int(ultima_lectura[0])\n",
    "    altura = int(ultima_lectura[1])\n",
    "\n",
    "    if(ultima_lectura[3] == \"True\"):\n",
    "        subiendo = True\n",
    "    if(ultima_lectura[3] == \"False\"):\n",
    "        subiendo = False\n",
    "\n",
    "    ultima_lectura = str(ultima_lectura[2])\n",
    "    if(ultima_lectura == \"MULTICAPA-SIMPLE\" or ultima_lectura == \"MULTICAPA-INCIDENCIA\"):\n",
    "        anterior_multicapa = True\n",
    "    else:\n",
    "        anterior_multicapa = False\n",
    "\n",
    "        \n",
    "    \n",
    "    \n",
    "    \n",
    "        \n",
    "        \n",
    "    \n",
    "    \n",
    "    \n",
    "    \n",
    "        \n",
    "\n",
    "    # Avanzamos un puesto\n",
    "    analisis_dato = dato.split(\"-\")\n",
    "    if(actual_multicapa == True):\n",
    "        #dato = str(columna) + \"|\" + str(altura) + \\\n",
    "        #    \"|\" + str(dato) + \"|\" + str(subiendo)\n",
    "        anterior_multicapa = True\n",
    "    else:\n",
    "        if(anterior_multicapa == True):\n",
    "            if(subiendo == True):\n",
    "                altura = altura + 1\n",
    "                if(altura > alturamax):\n",
    "                    altura = altura - 1\n",
    "                    columna = columna + 1\n",
    "                    subiendo = False\n",
    "            else:\n",
    "                altura = altura - 1\n",
    "                if(altura < alturamin):\n",
    "                    altura = altura + 1\n",
    "                    columna = columna + 1\n",
    "                    subiendo = True\n",
    "            #dato = str(columna) + \"|\" + str(altura) + \\\n",
    "            #    \"|\" + str(dato) + \"|\" + str(subiendo)\n",
    "        #else:\n",
    "        #    dato = str(columna) + \"|\" + str(altura) + \\\n",
    "        #        \"|\" + str(dato) + \"|\" + str(subiendo)\n",
    "        if(subiendo == True):\n",
    "            altura = altura + 1\n",
    "            if(altura > alturamax):\n",
    "                altura = altura - 1\n",
    "                columna = columna + 1\n",
    "                subiendo = False\n",
    "        else:\n",
    "            altura = altura - 1\n",
    "            if(altura < alturamin):\n",
    "                altura = altura + 1\n",
    "                columna = columna + 1\n",
    "                subiendo = True\n",
    "        anterior_multicapa = False\n",
    "    \n",
    "    ultimo_dato = mapa[-1]  # [:-1]  # para eliminar /n\n",
    "    return pantalla.set(\"LAST: {0}\\n\".format(ultimo_dato))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Test de la función de borrado_continuo()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "############################################################################################################################\n",
    "# Variables designadas en la Interfaz\n",
    "############################################################################################################################\n",
    "\n",
    "alturamax = 4                                                                                                  ##\n",
    "piking = True                                                                                                  ##\n",
    "if(piking == True):                                                                                            ##\n",
    "    alturamin = 2                                                                                              ##\n",
    "else:                                                                                                          ##\n",
    "    alturamin = 1                                                                                              ##\n",
    "anterior_multicapa = False                                                                                     ##\n",
    "actual_multicapa = False                                                                                       ##\n",
    "columna = 1                                                                                                    ##\n",
    "altura = alturamin                                                                                             ##\n",
    "subiendo = True\n",
    "\n",
    "############################################################################################################################\n",
    "# Variables dadas por el sensor\n",
    "############################################################################################################################\n",
    "\n",
    "lecturas_procesadas = list()\n",
    "lecturas = [\"SIMPLE|0001\", \"SIMPLE|0002\", \"MULTICAPA-SIMPLE|0003\", \"MULTICAPA-SIMPLE|0004\", \"SIMPLE|0005\", \"HUECO\", \n",
    "            \"SIMPLE|0006\", \"SIMPLE|0007\", \"SIMPLE|0008\", \"INCIDENCIA\", \"MULTICAPA-INCIDENCIA\", \"MULTICAPA-SIMPLE|0009\",\n",
    "            \"SIMPLE|0010\"]\n",
    "\n",
    "############################################################################################################################\n",
    "# Función de avance_continuo()\n",
    "############################################################################################################################\n",
    "\n",
    "def avance_continuo():\n",
    "    global alturamax\n",
    "    global alturamin\n",
    "    global anterior_multicapa\n",
    "    global actual_multicapa\n",
    "    global columna\n",
    "    global altura\n",
    "    global subiendo\n",
    "    \n",
    "    if(actual_multicapa == True):\n",
    "        posicion = [columna, altura, subiendo]\n",
    "        anterior_multicapa = True\n",
    "    else:\n",
    "        if(anterior_multicapa == True):\n",
    "            if(subiendo == True):\n",
    "                altura = altura + 1\n",
    "                if(altura > alturamax):\n",
    "                    altura = altura - 1\n",
    "                    columna = columna + 1\n",
    "                    subiendo = False\n",
    "            else:\n",
    "                altura = altura - 1\n",
    "                if(altura < alturamin):\n",
    "                    altura = altura + 1\n",
    "                    columna = columna + 1\n",
    "                    subiendo = True            \n",
    "            posicion = [columna, altura, subiendo]\n",
    "        else:\n",
    "            posicion = [columna, altura, subiendo]\n",
    "            \n",
    "        if(subiendo == True):\n",
    "            altura = altura + 1\n",
    "            if(altura > alturamax):\n",
    "                altura = altura - 1\n",
    "                columna = columna + 1\n",
    "                subiendo = False\n",
    "        else:\n",
    "            altura = altura - 1\n",
    "            if(altura < alturamin):\n",
    "                altura = altura + 1\n",
    "                columna = columna + 1\n",
    "                subiendo = True\n",
    "        anterior_multicapa = False\n",
    "    return posicion\n",
    "\n",
    "############################################################################################################################\n",
    "# Función de borrado_continuo()\n",
    "############################################################################################################################\n",
    "\n",
    "def borrado_continuo():\n",
    "    global alturamax\n",
    "    global alturamin\n",
    "    global anterior_multicapa\n",
    "    global actual_multicapa\n",
    "    global columna\n",
    "    global altura\n",
    "    global subiendo\n",
    "    \n",
    "    # Para retroceder necesitamos saber dónde estabamos previo al borrado. Esto se hará con una función nueva llamada\n",
    "    # ultima(). Esta función tiene que devolvernos las variables globales.\n",
    "    # Pensemos que una vez leído todas las variables globales el avance por defecto en las funciones de avance habrá\n",
    "    # desaparecido.\n",
    "    \n",
    "    analisis_ultima = ultima() # []\n",
    "    \n",
    "    \n",
    "    \n",
    "    \n",
    "    #, y borrar las últimas posiciones.\n",
    "    # lecturas es una lista donde se van guardando por seguridad todas las lecturas\n",
    "    global lecturas\n",
    "    \n",
    "\n",
    "    \n",
    "\n",
    "    \"\"\"\n",
    "    archivo_mapa = open(direccion_mapa, 'w')\n",
    "    archivo_mapa.close()\n",
    "    for dato in mapa:\n",
    "        archivo_mapa = open(direccion_mapa, 'a')\n",
    "        aux = str(dato) + \"\\n\"\n",
    "        #aux = str(dato)\n",
    "        archivo_mapa.write(aux)  # el método write añade \\n automáticamente\n",
    "        archivo_mapa.close()\n",
    "    \"\"\"\n",
    "\n",
    "    ultima_lectura = mapa[-1].split(\"|\")\n",
    "    dato = str(mapa[-1])\n",
    "    # columna|altura|tipo de ubicacion|subiendo\n",
    "    columna = int(ultima_lectura[0])\n",
    "    altura = int(ultima_lectura[1])\n",
    "\n",
    "    if(ultima_lectura[3] == \"True\"):\n",
    "        subiendo = True\n",
    "    if(ultima_lectura[3] == \"False\"):\n",
    "        subiendo = False\n",
    "\n",
    "    ultima_lectura = str(ultima_lectura[2])\n",
    "    if(ultima_lectura == \"MULTICAPA-SIMPLE\" or ultima_lectura == \"MULTICAPA-INCIDENCIA\"):\n",
    "        anterior_multicapa = True\n",
    "    else:\n",
    "        anterior_multicapa = False\n",
    "\n",
    "        \n",
    "    \n",
    "    \n",
    "    \n",
    "        \n",
    "        \n",
    "    \n",
    "    \n",
    "    \n",
    "    \n",
    "        \n",
    "\n",
    "    # Avanzamos un puesto\n",
    "    analisis_dato = dato.split(\"-\")\n",
    "    if(actual_multicapa == True):\n",
    "        #dato = str(columna) + \"|\" + str(altura) + \\\n",
    "        #    \"|\" + str(dato) + \"|\" + str(subiendo)\n",
    "        anterior_multicapa = True\n",
    "    else:\n",
    "        if(anterior_multicapa == True):\n",
    "            if(subiendo == True):\n",
    "                altura = altura + 1\n",
    "                if(altura > alturamax):\n",
    "                    altura = altura - 1\n",
    "                    columna = columna + 1\n",
    "                    subiendo = False\n",
    "            else:\n",
    "                altura = altura - 1\n",
    "                if(altura < alturamin):\n",
    "                    altura = altura + 1\n",
    "                    columna = columna + 1\n",
    "                    subiendo = True\n",
    "            #dato = str(columna) + \"|\" + str(altura) + \\\n",
    "            #    \"|\" + str(dato) + \"|\" + str(subiendo)\n",
    "        #else:\n",
    "        #    dato = str(columna) + \"|\" + str(altura) + \\\n",
    "        #        \"|\" + str(dato) + \"|\" + str(subiendo)\n",
    "        if(subiendo == True):\n",
    "            altura = altura + 1\n",
    "            if(altura > alturamax):\n",
    "                altura = altura - 1\n",
    "                columna = columna + 1\n",
    "                subiendo = False\n",
    "        else:\n",
    "            altura = altura - 1\n",
    "            if(altura < alturamin):\n",
    "                altura = altura + 1\n",
    "                columna = columna + 1\n",
    "                subiendo = True\n",
    "        anterior_multicapa = False\n",
    "    \n",
    "    ultimo_dato = mapa[-1]  # [:-1]  # para eliminar /n\n",
    "    return pantalla.set(\"LAST: {0}\\n\".format(ultimo_dato))\n",
    "\n",
    "############################################################################################################################\n",
    "# Programa que usa la función de avance_continuo()\n",
    "############################################################################################################################\n",
    "\n",
    "for lectura in lecturas:\n",
    "    lectura = lectura.split(\"|\")                # [\"SIMPLE\", \"0001\"]    [\"HUECO\"]\n",
    "    tipo_lectura = lectura[0].split(\"-\")        # [\"SIMPLE\"]     [\"HUECO\"]\n",
    "    if(len(tipo_lectura) > 1):\n",
    "        actual_multicapa = True\n",
    "    else:\n",
    "        actual_multicapa = False                # actual_multicapa = False\n",
    "    \n",
    "    posicion = avance_continuo()\n",
    "\n",
    "    # En caso de la que la lectura sea un HUECO, un BULTO u otro parámetro\n",
    "\n",
    "    if(len(lectura) > 1):\n",
    "        lectura_procesada = str(posicion[0]) + \"|\" + str(posicion[1]) + \"|\" + str(lectura[1])\n",
    "    else:\n",
    "        lectura_procesada = str(posicion[0]) + \"|\" + str(posicion[1]) + \"|\" + str(lectura[0])\n",
    "    \n",
    "    # Aquí se guardaría en un EXCEL la lectura_procesada.\n",
    "    ## Si lectura[1].split(\" \") es mayor de 1 estaríamos en un código GS1. Lo procesaríamos previo crear el EXCEL\n",
    "    \n",
    "    lecturas_procesadas.append(lectura_procesada)\n",
    "\n",
    "# Finalmente visualizamos el resultado\n",
    "print(lecturas_procesadas)\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
