Estou tentando enviar e receber alguns dados de string de/para o microcontrolador e usar o bash na máquina linux.
Neste momento o código no meu microcontrolador se parece com isso:
void UART_help_cmd_handler()
{
printf("Available commands:\n");
printf("search - starts search and returns device addresses\n");
printf("help - prints this help\n");
// these characters can't stop cat
EUSART2_Write(0);
EUSART2_Write(0x03);
EUSART2_Write(0x04);
}
E este é o lado do Linux:
#!/bin/bash
echo -ne '\x02help\x03' > /dev/ttyUSB0; cat /dev/ttyUSB0;
Eu também tentei:
echo -ne '\x02help\x03' > /dev/ttyUSB0; stdbuf -i 0 -o 0 cat /dev/ttyUSB0
O problema é que não consigo cat
parar do lado do microcontrolador.
Eu tentei enviar -1
caracteres do microcontrolador, tentei com 0x03.
Bem, eu percebi. Para obter o comportamento desejado (comando-> resposta entre uart e bash), escrevi algo assim:
Lado do microcontrolador:
** Lado Bash **
No entanto:
talvez o problema de "resposta rápida do microcontrolador" pudesse ser resolvido se eu pudesse usar o controle de fluxo de hardware, mas não tenho certeza
Não consigo encontrar a maneira de lidar com o tempo limite de alguma forma no bash (se o microcontrolador não estiver respondendo por alguns motivos).
Finalmente
stty
, mas acho que há muito esforço para arquivar isso.Tentei evitar o aplicativo C/C++ porque preciso substituir o script bash em algum aplicativo da Web grande que aceita scripts bash, mas arquivos binários extras "não são bem-vindos".