linux - minicom - ¿Por qué los caracteres recibidos en conexión en serie solo después de presionar Intro?
serial screen linux (1)
pero veo los caracteres en la consola de la placa, solo después de presionar "enter" en teraterm
El comportamiento que describes es característico de la lectura canónica (también conocida como líneas de lectura).
El comportamiento que parece querer se llama lectura no canónica (también conocida como lectura en bruto o lectura binaria).
- ¿Por qué los caracteres se reciben en el controlador de Linux solo cuando se presiona la tecla Entrar?
No, el controlador del puerto serie de Linux está recibiendo todos los caracteres tal como aparecen en el cable.
Cada carácter está almacenado en un búfer (normalmente en la memoria capaz de DMA), y luego reenviado a un controlador de disciplina de línea , que también está almacenando en búfer los datos recibidos.
Un syscall canónico de lectura () por el programa userland está bloqueado hasta que el controlador de disciplina de línea detecte un carácter de terminación de línea.
- ¿Hay alguna manera de recibir los caracteres sin presionar la tecla Intro?
Sí, antes de emitir el comando cat
, configure el puerto serie en modo no canónico:
stty -F /dev/tty05 raw
o más probablemente sea el nodo correcto del dispositivo
stty -F /dev/ttyO5 raw
O utilice la interfaz de termios para configurar el puerto serie en modo no canónico en un programa de espacio de usuario en la placa. El código de muestra está aquí .
La documentación sobre cómo programar correctamente un puerto serie es la Guía de programación en serie para los sistemas operativos POSIX y la configuración correcta de los modos de terminal .
Tengo una conexión sencilla de PC a placa con serial (9600, sin paridad, 8 bits, sin flujo de hw) Abrí terminal simple * con teraterm) en PC e ingresé las claves en teraterm y en placa, solo lo hago
cat /dev/ttyO5
Veo los caracteres presionados en el alcance, pero veo los caracteres en la consola de la placa, solo después de presionar "enter" en teraterm (como si estuvieran almacenados en algún FIFO en el controlador de Linux que solo ingresa desencadena)
- ¿Por qué los caracteres se reciben en el controlador de Linux solo cuando se presiona la tecla Entrar?
- ¿Hay alguna forma de recibir los caracteres sin presionar la tecla Entrar? (utilizamos algún protocolo de ascii por lo que no tiene sentido enviar esto como ficticio)
Gracias por su consejo, Ran