Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [BASH] scrittura su porta seriale con Modem GSM

    Ciao a Tutti
    Sono riuscito a trovare un programmino chiamato CU che da shell mi fa comunicare con il mio modem.
    Io scrivo
    codice:
    rino@casa-linux:~$ cu -s 9600 -l /dev/ttyS0
    Connected.
    e lui risponde con Connected
    Poi se scrivo in shell i comandi AT lui risponde
    codice:
    rino@casa-linux:~$ cu -s 9600 -l /dev/ttyS0
    Connected.
    AT+CIND=SIGNAL
    OK
    ATI
    SIEMENS
    TC35i
    REVISION 02.07
    
    OK
    E' possibile fare in modo che i comandi compreso CU io li inserisco in BASH ed ad esempio le risposte in una variabile?
    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326

    Re: [BASH] scrittura su porta seriale con Modem GSM

    Originariamente inviato da rinosan_76bis
    E' possibile fare in modo che i comandi compreso CU io li inserisco in BASH ed ad esempio le risposte in una variabile?
    Cioè vuoi salvare l'output del comando in una variabile?

    codice:
    nome_variabile=`cu -s 9600 -l /dev/ttyS0`
    dove quei due "apici" sono in realtà dei backtick (altgr + ')

  3. #3
    io ho scritto questo per fare una prova:
    codice:
    #!/bin/bash
    
    PORTA=/dev/ttyS0
    BAUND=9600
    
    echo "cu -l $PORTA -s $BAUND"
    MSG=`AT+CMGL=ALL`
    echo $MSG
    
    read -p "Premere INVIO per uscire"
    Praticamente volevo mettere nella variabile il risultato di AT+CMGL=ALL (visualizza tutti i SMS), ma ho ricevuto un errore
    codice:
    cu -l /dev/ttyS0 -s 9600
    /home/rino/bin/letturaSMS_2.sh: riga 7: AT+CMGL=ALL: comando non trovato
    
    Premere INVIO per uscire
    Immagino che il sistema vada solo coi comandi BASH e non con quelli scritti dopo CU
    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

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    59
    codice:
    #!/bin/bash
    
    PORTA=/dev/ttyS0
    BAUD=9600
    TEMPFILE=/tmp/comandi_da_inviare
    
    COMANDO="cu -l $PORTA -s $BAUD"
    echo $COMANDO
    
    echo "AT+CMGL=ALL" > $TEMPFILE
    
    MSG=`$COMANDO < $TEMPFILE`
    echo $MSG
    
    rm $TEMPFILE
    
    read -p "Premere INVIO per uscire"
    c'è anche un modo per farlo senza leggere i comandi da un file ma non me lo ricordo

  5. #5
    ottengo questo risultato:
    codice:
    cu -l /dev/ttyS0 -s 9600
    cu: End of file on terminal
    Connected. Connected. Disconnected.
    Premere INVIO per uscire
    Non credo sia corretto... devo solo provare con dei SMS arrivati... ora non ne ho!
    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

  6. #6
    non funziona... uffa!
    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
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Allora in sostanza vuoi salvare in una variabile l'output del comando AT+CMGL=ALL dopo che hai avviato il programma? L'idea di usare un file è giusta. Innanzitutto avvia il programma redirigendo l'output su un file in questo modo:

    codice:
    cu -s 9600 -l /dev/ttyS0 1> file.txt
    dove al posto di file.txt puoi metterci il nome che preferisci, anche senza estensione (se il file non esiste, viene creato in automatico).

    A questo punto, tutti gli output del programma andranno scritti non su stdout (la console) ma sul file. Quindi se, una volta avviato il programma, dai quel comando AT+CMGL=ALL, l'output sarà scritto su file.txt, e a quel punto se vuoi salvarlo in una variabile ti basta dare

    variabile=`cat file.txt`

    Altre soluzioni non mi vengono in mente, ammesso che io abbia compreso il problema.
    every day above ground is a good one

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.