Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1

    [PYTHON] e comunicazione seriale

    Salve a tutti... sono nuovo di python, ma conosco un po il resto della programmazione.
    Ho un problema che mi assilla ormai da un pezzo... devo inviare dei comandi AT al mio bel modem GSM.
    Tramite termiale riesco senza problemi, ma non sono riuscito a creare una bash che mi faccia questo... quindi provo con python.
    Ho visto che esiste una libreria che si occupa della seriale... quindi ne approfitto
    Leggendo leggendo trovo anche uno script che sembra fatto per me:

    codice:
    import serial
    
    ser = serial.Serial(0)  #Seleziona la porta seriale COM4
    ser.baudrate = 9600 #Imposta il baudrate a 9600bps
    
    ser.open() #apre la porta com
    
    #verifica se la porta e' aperta
    if ser.isOpen():
       com_num = ser.portstr
       print ("Porta " + com_num + " aperta")
       #invia il comando alla seriale
       buffer = "AT "
       ser.write(buffer)     
       #Loop d'attesa caratteri
       num = 0
       while num == 0:
           num = ser.inWaiting()
       #scarica il buffer della seriale
       buffer = ser.read(num)
       print ("Dati ricevuti dalla seriale:")
       print buffer
       ser.close()             #chiude la porta
    else:
      print ("Porta seriale gia' in uso o inesistente") 
    s = raw_input("digita INVIA per uscire")
    Il comando manda un AT alla seriale. Vedo a video questo comando, ma normalmente il comando ritorna un OK che a video non viene mostrato. Ma buffer = ser.read(num) non dovrebbe fare questo? leggere il ritorno dalla seriale?
    Grazie
    Rino
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  2. #2
    nessuno sa come funzionano ste cose in python?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  3. #3
    Hai provato a mettere qualche print di debug? Dentro il while, sotto num, metti

    codice:
    print num
    Cosa ti stampa print buffer?

  4. #4
    Il codice così com'è da questa risposta:
    codice:
    >>> 
    Porta /dev/ttyS0 aperta
    Dati ricevuti dalla seriale:
    AT 
    digita INVIA per uscire
    Poi ho aggiunto il print num:
    codice:
    import serial
    
    ser = serial.Serial(0)  #Seleziona la porta seriale COM4
    ser.baudrate = 9600 #Imposta il baudrate a 9600bps
    
    ser.open() #apre la porta com
    
    #verifica se la porta e' aperta
    if ser.isOpen():
       com_num = ser.portstr
       print ("Porta " + com_num + " aperta")
       #invia il comando alla seriale
       buffer = "AT "
       ser.write(buffer)     
       #Loop d'attesa caratteri
       num = 0
       while num == 0:
           print num
           num = ser.inWaiting()
       #scarica il buffer della seriale
       buffer = ser.read(num)
       print ("Dati ricevuti dalla seriale:")
       print buffer
       ser.close()             #chiude la porta
    else:
      print ("Porta seriale gia' in uso o inesistente") 
    s = raw_input("digita INVIA per uscire")
    e mi risponde così:
    codice:
    Porta /dev/ttyS0 aperta
    0
    0
    Dati ricevuti dalla seriale:
    AT 
    digita INVIA per uscire
    Grazie
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  5. #5
    Il print num mettilo dopo num, non prima.

  6. #6
    Ho spostato il print alla riga successiva... ecco il risultato:
    codice:
    Porta /dev/ttyS0 aperta
    0
    0
    0
    2
    Dati ricevuti dalla seriale:
    AT
    digita INVIA per uscire
    In effetti scrive 2 e la seriale dovrebbe rispondere OK (2 caratteri)
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  7. #7
    Vedi se va cosi:

    codice:
    import serial
    
    ser = serial.Serial(0)  #Seleziona la porta seriale COM4
    ser.baudrate = 9600 #Imposta il baudrate a 9600bps
    
    #verifica se la porta e' aperta
    if ser.isOpen():
       com_num = ser.portstr
       print ("Porta " + com_num + " aperta")
       #invia il comando alla seriale
       buffer = "AT "
       ser.write(buffer)
       print ("Dati ricevuti dalla seriale: ")     
       #scarica il buffer della seriale
       for line in ser.readline():
           print line
    
       ser.close()             #chiude la porta
    else:
      print ("Porta seriale gia' in uso o inesistente") 
    s = raw_input("digita INVIA per uscire")
    Hai guardato almeno se la porta a cui ti colleghi è quella corretta?

  8. #8
    non funziona... e si pianta l'interprete
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  9. #9
    Hai controllato almeno che la porta 0 sia corretta?

  10. #10
    si... ma almeno col mi codice non da errori, mentre il tuo mi blocca tutto... quindi non credo sia la porta...
    Cmq la porta è /dev/ttyS0
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.