我在使用PuTTY和fgets()与嵌入式项目交互时遇到了一些问题。我要求用户在PuTTY终端中输入,并根据命令运行寄存器读/写。
我认为问题出在PuTTY上,因为代码可以与Tera Term一起工作(我想使用PuTTY,这样我就可以使用本地行编辑功能)。
代码的相关部分很简单:
int main(void) {
bool connected = false;
bool quit = false;
char strcom[100];
/* other variable declarations */
connected = device_good(); // read version register, if correct, return true
if (connected) {
printf("Connected to LAN8770 device...\r\n");
} else {
quit = true;
}
while (!quit) {
printf(">> ");
fgets(strcom, sizeof(strcom), stdin);
/* rest of code and input processing */
}
}在调试时,我发现代码的进度永远不会超过fgets()调用。但是,我知道PuTTY可以从处理器接收信息,因为我确实在if (connected)块中看到了printf()语句的输出。
我读到过PuTTY有时只会发送回车符(\r),这在fgets()中是行不通的,但我选中了“在每个CR中隐含LF”设置:

PuTTY中是否有我遗漏的设置?或者是我的代码有问题,因为某些原因,导致了PuTTY的错误行为?
任何建议/想法,我们都非常感谢!
-Sean
编辑:请注意,“在每个LF中隐含CR”选项似乎也不起作用。
发布于 2018-06-16 00:58:39
当按Enter时,PuTTY看起来不会发送换行符。它只发送一个回车。将Ctrl+J附加到行尾可以完成工作,但这不是一个很好的解决方案。多亏了尤金·史。故障排除技术。
正如Clifford所指出的,这个问题并不是一个真正的SO问题。我已经投票决定关闭它。
https://stackoverflow.com/questions/50878876
复制相似问题