博客整理后写出来的,有点乱,大家见谅!
想让串口输出万年历效果.每次秒刷新一次
结果是串口软件一直输出,看起来很难受
先讲一讲C代码的\r和\n的区别
\r 就是return 回到 本行 行首 这就会把这一行以前的输出 覆盖掉
\n 是回车+换行 把光标 先移到 行首 然后换到下一行 也就是 下一行的行首拉
[root@mylinux c]# vi huiche.c
1 main()
2 {
3 printf("aa\rb");
4 printf("cc\nd");
5 }
[root@mylinux c]# gcc huiche.c
[root@mylinux c]# ./a.out
bcc
d[root@mylinux c]#
2 {
3 printf("aa\rb");
4 printf("cc\nd");
5 }
[root@mylinux c]# gcc huiche.c
[root@mylinux c]# ./a.out
bcc
d[root@mylinux c]#
\r 就是return 回到 本行 行首 这就会把这一行以前的输出 覆盖掉
\n 是回车+换行 把光标 先移到 行首 然后换到下一行 也就是 下一行的行首拉
\n 是回车+换行 把光标 先移到 行首 然后换到下一行 也就是 下一行的行首拉
输入字符,回显所输入字符,但不回显ESC,按回车键换行
main()
{
char c;
while(c!='\r')
{ c=getchar();
if (c==0X1B)
continue;
printf("%c",c);
}
}
:输入字符,回显所输入字符,但不回显ESC,按回车结束
main()
{
char c;
while(c!='\n')
{ c=getchar();
if (c==0X1B)
continue;
printf("%c",c);
}
}
main()
{
char c;
while(c!='\r')
{ c=getchar();
if (c==0X1B)
continue;
printf("%c",c);
}
}
:输入字符,回显所输入字符,但不回显ESC,按回车结束
main()
{
char c;
while(c!='\n')
{ c=getchar();
if (c==0X1B)
continue;
printf("%c",c);
}
}
还是不行啊......直接C++测试转移字符
(代码没问题,看来是软件的问题)
马上换了一个软件,最后想到的是超级终端
(完美解决)
注意:网上的一些串口上位机都不能识别这个转义字符
串口输出直接是一行一行的输出
(这个没有我们系统的控制台输出那么智能)
后期我将写一个更加完美的串口调试助手上位机程序,到时候共享给大家.
The end!.
软件交流群:160441098
嵌入式交流群:227262400