Esempio n. 1
0
                    print("destra")
                    destra(movimento)

                elif distanceMax==Serial.read1 or distanceMax2==Serial.read1:
                    direzione="avanti"
                    giro=giro+1.5708

                    if distanceMax2==Serial.read1:
                        movimento=((distanceMax2*0.5)/12)
                        spostamentoX=spostamentoX-(int(distanceMax2/2))
                    else:
                        spostamentoX=spostamentoX-(int(distanceMax/2))

                    print("sinistra")
                    sinistra(movimento)



                print("spostamento x:",spostamentoX)
                print("spostamento y:",spostamentoY)





    if 'creazione_mappa' in request.POST :
        nome= NomeForm(request.POST)
        if nome.is_valid():
            messages.success(request, 'Griglia Creata Con Successo.')  #messaggio di successo
            # ampiezzaInt=int(request.POST.get("ampiezza"))  #richiesta del numero intero inserito prima all'interno dell'html
Esempio n. 2
0
def grafici(request):
    listaMappe = Nome.objects.all()
    mappa = Mappa.objects.all()
    direzione = ""
    page = request.GET.get('page')

    paginator = Paginator(listaMappe, 1)  # Show 1 contacts per page
    try:
        listaMappe = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        listaMappe = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        listaMappe = paginator.page(paginator.num_pages)

    idMappa = listaMappe.object_list.values_list('id', flat=True)
    mappaSingola = Mappa.objects.filter(nome_mappa=idMappa)

    if 'cancellaMappa' in request.POST:
        eliminaMappa = Nome.objects.get(id=idMappa)
        eliminaMappa.delete()

    ampiezza = AmpiezzaForm(request.POST)  #lettura html dell'ampiezza
    nome = NomeForm(request.POST)  #lettura html del nome mappa
    #idMappa= request.POST['mappaId']
    # print(idMappa)
    if 'resetta_mappatura' in request.POST:
        postamentoX = 0
        spostamentoY = 0
        mappaCancella = Mappa.objects.all()
        mappaCancella.delete()

    if 'inizza_mappatura' in request.POST:
        #MovimentoLib = importlib.reload(avanti, indietro, destra, sinistra)

        denditàInt = int(5)
        print("denzità:", denditàInt)
        rivelazioni = 360 / denditàInt

        nome = Nome.objects.get(
            id=idMappa
        )  #estrapolazione dell'id dal nome... Attenzione: se ci sono 2 o piu nomi uguali bugga tutto
        spostamentoX = 0
        spostamentoY = 0
        r = 0
        while r < 10:
            r = r + 1

            print("(", r, ")")

            if 'stop' in request.POST:
                break

            Reload = importlib.reload(Serial)

            Rad180 = math.pi
            a = 0
            angle = 0
            nome = Nome.objects.get(
                id=idMappa
            )  #estrapolazione dell'id dal nome... Attenzione: se ci sono 2 o piu nomi uguali bugga tutto

            while a < rivelazioni:
                if 'stop' in request.POST:
                    break
                a = str(a)
                distance = "read" + a
                distance = "Serial." + distance
                distance = eval(distance)  #lettura distanza
                distance = int(distance)
                a = int(a)
                angleRad = angle * (
                    math.pi) / 180  #calcolo angoli motore in radianti
                if a % 2 == 0:
                    x = int(
                        (math.cos(angleRad) * distance) + spostamentoX
                    )  #creazione x e y per mezzo di seno e coseno, da lettura a cerchio a piano cartesiano
                    y = int((math.sin(angleRad) * distance) + spostamentoY)
                else:
                    x = int(
                        (math.cos(angleRad + Rad180) * distance) + spostamentoX
                    )  #creazione x e y per mezzo di seno e coseno, da lettura a cerchio a piano cartesiano
                    y = int((math.sin(angleRad + Rad180) * distance) +
                            spostamentoY)
                    angle = angle + denditàInt
                if distance < 100:
                    Mappa.objects.create(x=x,
                                         y=y,
                                         nome_mappa=nome,
                                         aggettivo=3)  #salvataggio dati
                a = a + 1

            Grad90 = int(360 / denditàInt / 2)
            Grad90 = str(Grad90)

            novanta = "Serial.read" + Grad90
            novanta = eval(novanta)
            Grad90piuuno = str(int(Grad90) + 1)
            centoottanta = "Serial.read" + Grad90piuuno
            centoottanta = eval(centoottanta)

            distanzaMaxList = [
                Serial.read0, Serial.read1, novanta, centoottanta
            ]
            Mappa.objects.create(x=spostamentoX,
                                 y=spostamentoY,
                                 nome_mappa=nome,
                                 aggettivo=10)
            distanceMax = max(distanzaMaxList)

            movimento = ((distanceMax * 0.5) / 12)

            distanzaMaxList.remove(distanceMax)
            distanceMax2 = max(distanzaMaxList)

            if distanceMax == Serial.read0 and direzione != "indietro":
                spostamentoX = spostamentoX + (int(distanceMax / 2))
                direzione = "avanti"
                print("avanti")
                avanti(movimento)

            elif distanceMax == Serial.read1 and direzione != "avanti":
                direzione = "indietro"
                spostamentoX = spostamentoX - (int(distanceMax / 2))
                print("indietro")
                indietro(movimento)

            elif distanceMax == novanta or distanceMax2 == novanta:
                direzione = "avanti"

                if distanceMax2 == novanta:
                    movimento = ((distanceMax2 * 0.5) / 12)
                    spostamentoY = spostamentoY + (int(distanceMax2 / 2))
                else:
                    spostamentoY = spostamentoY + (int(distanceMax / 2))

                print("destra")
                destra(movimento)

            elif distanceMax == centoottanta or distanceMax2 == centoottanta:
                direzione = "avanti"

                if distanceMax2 == novanta:
                    movimento = ((distanceMax2 * 0.5) / 12)
                    spostamentoY = spostamentoY + (int(distanceMax2 / 2))
                else:
                    spostamentoY = spostamentoY - (int(distanceMax / 2))

                print("sinistra")
                sinistra(movimento)

            print("spostamento x:", spostamentoX)
            print("spostamento y:", spostamentoY)

    if 'creazione_mappa' in request.POST:
        nome = NomeForm(request.POST)
        if nome.is_valid():
            messages.success(
                request,
                'Griglia Creata Con Successo.')  #messaggio di successo
            # ampiezzaInt=int(request.POST.get("ampiezza"))  #richiesta del numero intero inserito prima all'interno dell'html
            nome.nome_mappa = nome  #selezione e salvataggio nella tabella Nome del capom nome
            nome.save()

        else:
            nome = NomeForm()

    x = (list(
        Mappa.objects.filter(nome_mappa=idMappa,
                             aggettivo=3).values_list('x', flat=True)))
    y = (list(
        Mappa.objects.filter(nome_mappa=idMappa,
                             aggettivo=3).values_list('y', flat=True)))
    posizioneX = (list(
        Mappa.objects.filter(nome_mappa=idMappa,
                             aggettivo=10).values_list('x', flat=True)))
    posizioneY = (list(
        Mappa.objects.filter(nome_mappa=idMappa,
                             aggettivo=10).values_list('y', flat=True)))

    nRilevazioni = (Mappa.objects.filter(nome_mappa=idMappa, aggettivo=3))

    if x != []:
        maxYX = [(max(x)), (max(y)), -(min(x)), -(min(y))]
        maxYX = (max(maxYX))
    else:
        maxYX = 100

    a = 0
    xyhtml = ""
    for x in x:
        xy = int(x)
        xy = str(xy)
        yx = int(y[a])
        yx = yx
        yx = str(y[a])
        xyhtml = str(xyhtml) + str("{x:" + (xy) + ",y:" + (yx) + ", r: 4},")
        a = a + 1

    a = 0
    posizionehtml = ""
    print(posizioneY)
    for posizioneX in posizioneX:
        posixioneXY = int(posizioneX)
        posixioneXY = str(posixioneXY)
        posizioneYX = int(posizioneY[a])
        posizioneYX = str(posizioneY[a])
        posizionehtml = str(posizionehtml) + str("{x:" +
                                                 (posixioneXY) + ",y:" +
                                                 (posizioneYX) + ", r: 7},")
        a = a + 1

    return render(
        request, 'grafici.html', {
            'maxYX': maxYX,
            'nRilevazioni': nRilevazioni,
            'ampiezza': ampiezza,
            'listaMappe': listaMappe,
            'nome': nome,
            'xyhtml': xyhtml,
            'posizionehtml': posizionehtml
        })
Esempio n. 3
0
from movimento import avanti, indietro, destra, sinistra

sinistra(3)
Esempio n. 4
0
def grafici (request):
    listaMappe= Nome.objects.all()
    mappa=  Mappa.objects.all()
    direzione= ""
    page = request.GET.get('page')

    paginator = Paginator(listaMappe, 1) # Show 1 contacts per page
    try:
        listaMappe = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        listaMappe = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        listaMappe = paginator.page(paginator.num_pages)


    idMappa=listaMappe.object_list.values_list('id', flat=True)
    mappaSingola = Mappa.objects.filter(nome_mappa=idMappa)

    if 'cancellaMappa'in request.POST :
        eliminaMappa=Nome.objects.get(id= idMappa)
        eliminaMappa.delete()

    ampiezza= AmpiezzaForm(request.POST)#lettura html dell'ampiezza
    nome= NomeForm(request.POST)#lettura html del nome mappa
    #idMappa= request.POST['mappaId']
    # print(idMappa)
    if 'resetta_mappatura' in request.POST :
        postamentoX=0
        spostamentoY=0
        mappaCancella=Mappa.objects.all()
        mappaCancella.delete()

    if 'stop' in request.POST :
        stop=Nome.objects.get(id= idMappa)
        stop.stop=True
        stop.save()
        print(stop.stop)

    if 'inizza_mappatura' in request.POST :
            stop=Nome.objects.get(id= idMappa)
            stop.stop=False
            stop.save()
            #MovimentoLib = importlib.reload(avanti, indietro, destra, sinistra)

            denditàInt=int(5)
            print("denzità:",denditàInt)
            rivelazioni=360/denditàInt

            nome= Nome.objects.get(id=idMappa)#estrapolazione dell'id dal nome... Attenzione: se ci sono 2 o piu nomi uguali bugga tutto
            spostamentoX=0
            spostamentoY=0
            giro=0
            r=0
            while r<4:
                r=r+1

                stop=Nome.objects.get(id= idMappa)
                if stop.stop:
                    break
                    stop.stop=False
                    stop.save()
 

                print ("(",r,")")



                Reload = importlib.reload(Serial)

                Rad180=math.pi
                a=0
                angle = 0
                nome= Nome.objects.get(id=idMappa)#estrapolazione dell'id dal nome... Attenzione: se ci sono 2 o piu nomi uguali bugga tutto


                while a<rivelazioni:

                    a=str(a)
                    distance="read"+a
                    distance="Serial."+distance
                    distance=eval(distance)#lettura distanza
                    distance=int(distance)
                    a=int(a)
                    angleRad= angle*(math.pi)/180#calcolo angoli motore in radianti
                    if a%2 == 0:
                        x = int((math.cos(angleRad+giro)*distance)+spostamentoX)#creazione x e y per mezzo di seno e coseno, da lettura a cerchio a piano cartesiano
                        y = int((math.sin(angleRad+giro)*distance)+spostamentoY)
                    else:
                        x = int((math.cos(angleRad+Rad180+giro)*distance)+spostamentoX)#creazione x e y per mezzo di seno e coseno, da lettura a cerchio a piano cartesiano
                        y = int((math.sin(angleRad+Rad180+giro)*distance)+spostamentoY)
                        angle=angle+denditàInt
                    if distance<100:
                        Mappa.objects.create(x=x, y=y, nome_mappa=nome, aggettivo=3)#salvataggio dati
                    a= a+1

                Grad90 =int(360/denditàInt/2)
                Grad90= str(Grad90)

                novanta="Serial.read"+Grad90
                novanta=eval(novanta)
                Grad90piuuno=str(int(Grad90)+1)
                centoottanta="Serial.read"+Grad90piuuno
                centoottanta=eval(centoottanta)

                distanzaMaxList=[Serial.read0,Serial.read1, novanta, centoottanta]
                Mappa.objects.create(x=spostamentoX, y=spostamentoY, nome_mappa=nome, aggettivo=10)
                distanceMax=max(distanzaMaxList)


                distanzaMaxList.remove(distanceMax)
                distanceMax2=max(distanzaMaxList)

                stop=Nome.objects.get(id= idMappa)
                if stop.stop:
                    break
                    stop.stop=False
                    stop.save()

 
                
                def testDistance(listaMovimentoAvanti):
                    n=3
                    nr=0
                    ok=1
                    for n in range(3,10):
                        movimentoTest=math.sqrt(25*(1+(math.tan(math.pi*(18-n)/36))**2))
                        print(movimentoTest)
                        if movimentoTest>listaMovimento[nr]:
                            ok=0

                        n=n+1
                        nr=nr+1

                    n=9
                    nr2=7
                    for n in range(3,10):
                        movimentoTest=math.sqrt(25*(1+(math.tan(math.pi*(18-n)/36))**2))
                        print(movimentoTest)
                        if movimentoTest>listaMovimento[nr]:
                            ok=0

                        n=n-1
                        nr2=nr2+1

                    return ok

                okAvanti=0
                okIndiero=0
                okDestra=0
                okSinistra=0
                

                if distanceMax==novanta:
                    listaMovimento=[Serial.read30,Serial.read28,Serial.read26,Serial.read24,Serial.read22,Serial.read20,Serial.read18,Serial.read54,Serial.read52,Serial.read50,Serial.read48,Serial.read46,Serial.read44,Serial.read42]
                    if testDistance(listaMovimento) == 1:
                        okAvanti=1


                elif distanceMax==centoottanta:
                    listaMovimento=[Serial.read31,Serial.read29,Serial.read27,Serial.read25,Serial.read23,Serial.read21,Serial.read19,Serial.read55,Serial.read53,Serial.read51,Serial.read49,Serial.read47,Serial.read45,Serial.read43]
 
                    if testDistance(listaMovimento) == 1:
                        okIndietro=1

                elif distanceMax==Serial.read0 or distanceMax2==Serial.read0:
                    listaMovimento=[Serial.read6,Serial.read8,Serial.read10,Serial.read12,Serial.read14,Serial.read16,Serial.read18,Serial.read55,Serial.read57,Serial.read59,Serial.read61,Serial.read63,Serial.read65,Serial.read67]
                    if testDistance(listaMovimento) == 1:
                        okDestra=1


                elif distanceMax==Serial.read1 or distanceMax2==Serial.read1:
                    listaMovimento=[Serial.read7,Serial.read9,Serial.read11,Serial.read13,Serial.read15,Serial.read17,Serial.read19,Serial.read54,Serial.read56,Serial.read58,Serial.read60,Serial.read62,Serial.read64,Serial.read66]
                    if testDistance(listaMovimento) == 1:
                        okSinistra=1





                movimento=((distanceMax*0.5)/12)

                if distanceMax==novanta and direzione != "indietro" and okAvanti==1:
                    spostamentoY=spostamentoY+(int(distanceMax/2))
                    direzione="avanti"
                    print("avanti")
                    avanti(movimento)

                elif distanceMax==centoottanta and direzione != "avanti" and okIndietro==1:
                    direzione="indietro"
                    spostamentoY=spostamentoY-(int(distanceMax/2))
                    print("indietro")
                    indietro(movimento)

                elif distanceMax==Serial.read0 or distanceMax2==Serial.read0 and okDestra==1:
                    direzione="avanti"
                    giro=giro-1.5708

                    if distanceMax2==Serial.read0:
                        movimento=((distanceMax2*0.5)/12)
                        spostamentoX=spostamentoX+(int(distanceMax2/2))
                    else:
                        spostamentoX=spostamentoX+(int(distanceMax/2))

                    print("destra")
                    destra(movimento)

                elif distanceMax==Serial.read1 or distanceMax2==Serial.read1 and okSinistra==1:
                    direzione="avanti"
                    giro=giro+1.5708

                    if distanceMax2==Serial.read1:
                        movimento=((distanceMax2*0.5)/12)
                        spostamentoX=spostamentoX-(int(distanceMax2/2))
                    else:
                        spostamentoX=spostamentoX-(int(distanceMax/2))

                    print("sinistra")
                    sinistra(movimento)



                print("spostamento x:",spostamentoX)
                print("spostamento y:",spostamentoY)





    if 'creazione_mappa' in request.POST :
        nome= NomeForm(request.POST)
        if nome.is_valid():
            messages.success(request, 'Griglia Creata Con Successo.')  #messaggio di successo
            # ampiezzaInt=int(request.POST.get("ampiezza"))  #richiesta del numero intero inserito prima all'interno dell'html
            nome.nome_mappa=nome   #selezione e salvataggio nella tabella Nome del capom nome
            nome.save()

        else:
            nome= NomeForm()




    x= (list(Mappa.objects.filter(nome_mappa=idMappa, aggettivo=3 ).values_list('x', flat=True)))
    y= (list(Mappa.objects.filter(nome_mappa=idMappa, aggettivo=3).values_list('y', flat=True)))
    posizioneX=(list(Mappa.objects.filter(nome_mappa=idMappa, aggettivo=10).values_list('x', flat=True)))
    posizioneY= (list(Mappa.objects.filter(nome_mappa=idMappa, aggettivo=10).values_list('y', flat=True)))

    nRilevazioni=(Mappa.objects.filter(nome_mappa=idMappa, aggettivo=3))


    if x != []:
        maxYX=[(max(x)),(max(y)),-(min(x)),-(min(y))]
        maxYX=(max(maxYX))
    else:
        maxYX=100

    a=0
    xyhtml=""
    for x in x:
        xy=int(x)
        xy=str(xy)
        yx=int(y[a])
        yx=yx
        yx=str(y[a])
        xyhtml=str(xyhtml)+str("{x:"+(xy)+",y:"+ (yx)+", r: 4},")
        a=a+1

    a=0
    posizionehtml=""
    print(posizioneY)
    for posizioneX in posizioneX:
        posixioneXY=int(posizioneX)
        posixioneXY=str(posixioneXY)
        posizioneYX=int(posizioneY[a])
        posizioneYX=str(posizioneY[a])
        posizionehtml=str(posizionehtml)+str("{x:"+(posixioneXY)+",y:"+ (posizioneYX)+", r: 7},")
        a=a+1



    return render(request, 'grafici.html', {'maxYX':maxYX, 'nRilevazioni':nRilevazioni, 'ampiezza':ampiezza, 'listaMappe': listaMappe, 'nome': nome, 'xyhtml':xyhtml, 'posizionehtml':posizionehtml})