Yo no soy un programador experimentado, tengo un problema con mi código, creo que es un error lógico de la mía, pero no pude encontrar una respuesta en http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/whilestatements.html .
Lo que quiero es comprobar si el número de serie del dispositivo está bloqueado, y la diferencia entre las condiciones que «está cerrada» y «no está cerrado», es que hay 4 comas ,,,, en la línea que contiene GPGGA letras. Así que quiero que mi código para empezar si no hay ,,,, pero creo que mi circuito está mal. Cualquier sugerencia será bienvenida. Gracias de antemano.

import serial
import time
import subprocess


file = open("/home/pi/allofthedatacollected.csv", "w") #"w" will be "a" later
file.write('\n')
while True:
    ser = serial.Serial("/dev/ttyUSB0", 4800, timeout =1)
    checking = ser.readline();
    if checking.find(",,,,"):
        print "not locked yet"
        True
    else:
        False    
        print "locked and loaded"

.
.
.

¿Qué se puede esperar de la True y False a hacer aquí? Ellos son sólo referencias a los valores booleanos en una línea, que son descartados de otra forma aquí.
Espero que, si ‘False’ , se cierra el bucle while y la secuencia de comandos siguen mi otro lazo que yo no incluyen
Los valores booleanos en una línea de no hacer eso. Usted desea utilizar break para salir del bucle.
Entonces, ¿cómo puedo romper si la condición es «Falso» que significa que no hay ‘,,,,’ en la línea de lo que fue leído

OriginalEl autor Tolga Varol | 2014-08-25

2 Comentarios

  1. 7

    Uso break para salir de un bucle:

    while True:
        ser = serial.Serial("/dev/ttyUSB0", 4800, timeout =1)
        checking = ser.readline();
        if checking.find(",,,,"):
            print "not locked yet"
        else:
            print "locked and loaded"
            break

    La True y False línea de no hacer nada en el código; simplemente se hace referencia a la incorporada en valores booleanos sin asignar a ninguna parte.

    OriginalEl autor Martijn Pieters

  2. 2

    Puede utilizar una variable como condición para su while bucle en lugar de sólo while True. De esa manera usted puede cambiar la condición.

    Así, en lugar de este código:

    while True:
        ...
        if ...:
            True
        else:
            False    

    … prueba esto:

    keepGoing = True
    while keepGoing:
        ser = serial.Serial("/dev/ttyUSB0", 4800, timeout =1)
        checking = ser.readline();
        if checking.find(",,,,"):
            print "not locked yet"
            keepGoing = True
        else:
            keepGoing = False    
            print "locked and loaded"

    EDICIÓN:

    O como otro usuario sugiere, usted puede break fuera del bucle 🙂

    Gracias por tu respuesta, yo no podía pensar en asignar a una variable 🙂
    El uso de break es mucho menos propenso a errores y sencillo, sin embargo.
    Usted podría estar en lo correcto y la solución es más sencilla y gracias de nuevo por que, pero me hizo la pregunta como Verdadero o Falso, así que si alguien mira este post y si su problema es acerca de la única Verdadera Falsa condiciones de su respuesta sería mejor para ellos.
    No estoy de acuerdo con eso; la manera correcta de resolver el problema que se intenta resolver es el uso de break. Traté de tanto responder por qué el código no funciona y cómo hacerlo correctamente; ambos son importantes.

    OriginalEl autor Morten Jensen

Dejar respuesta

Please enter your comment!
Please enter your name here