Como executar o comando “cat” no plano de fundo dentro do script

0

Eu tenho um modem USB LTE conectado ao meu Raspberry e preciso ler respostas enviadas via linha serial, geradas por solicitações enviadas usando o comando "echo". Código:

cat /dev/ttyUSB0 > ttyUSB0_logs &
echo "AT+csq" > /dev/ttyUSB0
echo "AT+cgreg=2" > /dev/ttyUSB0
echo "AT+cgreg?" > /dev/ttyUSB0

O problema é que, embora o comando "cat" deva ser executado em segundo plano e toda a saída seja direcionada ao arquivo, o script ainda congela nesse ponto. Se eu usar o primeiro comando fora do script, ele funcionará como eu esperava - ele armazena todas as saídas para o arquivo ttyUSB0_logs no segundo plano e eu posso usar os dados recebidos para outras operações. A questão é: como integrar o primeiro comando ao script para que ele funcione dessa maneira? Muito obrigado.

    
por 573v0 10.03.2016 / 15:10

2 respostas

0

lembre-se: no shell: se você executar todos os comandos um após o outro, o primeiro comando 'cat ....' ainda estará em execução mesmo depois de você ter executado o último comando. em um shell script: o comando 'cat ...' será morto logo após a execução do último comando e, portanto, não poderá mais ler e escrever. Para o primeiro passo: tente colocar um "sleep 1" entre as linhas de comando e um sleep mais longo "sleep 10" após o último comando.

    
por 10.03.2016 / 20:59
0

Nos modems, a parte AT da cadeia de comando era para detectar taxa de transmissão, paridade, etc. O dispositivo cronometrou os dados seriais para medir as larguras de bits

Para fazer isso, foi necessário um tempo limite para estabelecer o início do "A"

Seu script pode estar explodindo muito rápido

Tente colocar um sono na frente de cada linha de comando

O era um registrador S que mantinha o tempo limite. Já faz um tempo, então esqueço qual. 2 segundos eu acho que era típico

    
por 10.03.2016 / 21:08