您的位置:首页 > 其它

关于写my_uboot for smdk6410时关于删除键和方向键到问题

2013-12-08 18:13 417 查看
自己在学习之后,写uboot时遇到到方向键,删除键问题,现已经解决,直接上代码,希望帮助在学习嵌入式到同学。

(删除键可以使用,但是禁用了方向键。根据ASCII码值backpace的键值是8,而方向键时组合键由 esc 和‘[’ 和 A(up)/B(down)/C(right)/D(left)着三个键值组成到,所以按下一次读取三次键值,127是delete的ASCII码表。下面时uart再读取一个字符时,对读取到每个字符进行判断。

char* uart_gets(char *str)
{
int i = 0;
char c;
do
{
c = uart_getchar();
if(c == 8)
{
i--;
if(i < 0)
{
i == 0;
continue;
}
uart_putchar(c);//向前退一格
uart_putchar(' ');//以空格掩盖,此时光标又下移一格
uart_putchar(c);//让光标回到空格掩盖到地方

rev_buf[i] = 0;
continue;
}
if(c == 27)//'esc' key
{
c = uart_getchar();//‘[’ key
c = uart_getchar();// A/B/C/D
continue;
}
if(c == 126)//delete key
continue;
uart_putchar(c);
rev_buf[i] = c;
if(c == '\r')
{
uart_putchar('\n');
}
i++;
}while(c != '\r');
rev_buf[i - 1] = '\0';
return rev_buf;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐