使用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可以从处理器接收信息,因为我确实看到了printf()
块中if (connected)
语句的输出。
我已经读过PuTTY有时只会发送回车符{\r
),这对fgets()
不起作用,但我检查了“每个CR中隐含的LF”设置:< / p>
PuTTY中是否有我失踪的设置?或者我的代码是一个问题,由于某种原因,导致与PuTTY的不当行为?
任何建议/想法都表示赞赏!
-Sean
编辑:请注意,“每个LF中的隐式CR”选项似乎也不起作用。
答案 0 :(得分:0)
按下Enter键时,PuTTY似乎不会发送换行符。它只发送一个回车。将Ctrl+J
附加到该行的末尾可以完成工作,但这不是一个很好的解决方案。感谢Eugene Sh。用于故障排除技术。
正如克利福德指出的那样,这个问题并不是一个真正的问题。我投票决定关闭它。