我正在尝试从微控制器发送和接收一些字符串数据,并在 linux 机器上使用 bash。
此时我的微控制器上的代码如下所示:
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);
}
这是linux方面:
#!/bin/bash
echo -ne '\x02help\x03' > /dev/ttyUSB0; cat /dev/ttyUSB0;
我也试过:
echo -ne '\x02help\x03' > /dev/ttyUSB0; stdbuf -i 0 -o 0 cat /dev/ttyUSB0
问题是我无法cat
从微控制器方面停下来。
我尝试-1
从微控制器发送字符,我尝试使用 0x03。
嗯,我想通了。为了获得所需的行为(命令-> uart 和 bash 之间的响应),我写了这样的东西:
微控制器端:
** 重击端 **
然而:
如果我可以使用硬件流控制,也许可以解决“快速微控制器响应”问题,但我不确定
我找不到在 bash 中以某种方式处理超时的方法(如果微控制器由于某些原因没有响应)。
最后
stty
,但我认为归档这个需要付出太多努力。我试图避免使用 C/C++ 应用程序,因为我需要在一些接受 bash 脚本的大型 Web 应用程序中替换 bash 脚本,但是“不欢迎”额外的二进制文件。