ver serie serial puertos puerto probar minicom listar habilitar dispositivos com1 bash serial-port eof cat

bash - serial - terminal serie linux



Script Bash: guarde la secuencia del puerto serie(/ dev/ttyUSB0) en el archivo hasta que aparezca una entrada especĂ­fica(por ejemplo, eof) (1)

Necesito una secuencia de comandos bash para leer la secuencia de datos desde un puerto serie (RS232 a adaptador USB - Puerto: / dev / ttyUSB0). Los datos deben almacenarse línea por línea en un archivo hasta que aparezca una entrada específica (por ejemplo, "eof"). Puedo dar cualquier entrada externa al puerto serie. Hasta ahora uso cat para leer los datos, lo que funciona bien.

cat /dev/ttyUSB0 -> file.txt

El problema es que necesito terminar el comando yo mismo al ingresar cntr + C, pero no sé exactamente cuándo termina la secuencia de datos y el archivo ttyUSB0 no genera un EOF. Traté de implementarlo yo mismo, pero no encontré una solución conveniente. El siguiente comando funciona, pero no sé cómo usarlo para mi problema ("world" creará un error de "comando no encontrado"):

#!/bin/bash cat > file.txt << EOF hello EOF world

El siguiente código funciona para mi problema, pero lleva demasiado tiempo (la secuencia de datos consta de ~ 2 millones de líneas):

#!/bin/bash while read line; do if [ "$line" != "EOF" ]; then echo "$line" >> file.txt else break fi done < /dev/ttyUSB0

¿Alguien tiene una posibilidad conveniente para mi problema?


Pruebe awk(1) :

awk ` /EOF/ {exit;} {print;}` < /dev/ttyUSB0 > file.txt

Esto se detiene cuando ve la línea EOF e imprime todo lo demás en file.txt