我的学习之旅(20)console.h和console.c

49 篇文章 0 订阅
49 篇文章 0 订阅
void console_write(void *tty, char *buf )
{
    unsigned int number = 0;
    unsigned char ch;
    unsigned char *up;
    
    if( !tty || !buf )
        return;
    
    /* 统计当前write_q队列中的字符数*/
    number = ((((tty_struct_t *)tty)->write_q.head-((tty_struct_t *)tty)->write_q.tail)&(TTY_BUF_SIZE-1));
    /* 读取并处理所有write_q中的字符*/
    while( number-- ) {
        ch =   get_char_from_queue( &((tty_struct_t *)tty)->write_q);   
        if( ch > 31 && ch < 127 ) { /*非控制字符*/
            if( g_x >=  DISP_MAX_X) {
                g_x  = g_x - DISP_MAX_X;//换行并进一行
                g_position = g_position - BYTES_FOR_ONE_LINE;
                add_a_line();
            }
            //刷新g_position以便后面刷新光标位置
            up = (unsigned char *)g_position;
            up[0] = ch; //字符
            up[1] = g_color; //颜色
            g_position += 2;
            g_x++;
        }
        else if(ch == 10 || ch== 11 || ch== 12 || ch == 13) { /*换行'\n' 并重新调整坐标*/
           add_a_line();
           gotoxy(0, g_y);
        }
        else if ( ch == 177 ||ch==127 ) { /*删除符号*/
            delete_char();
        }
        else {
            /*不支持*/
        }
    }
    /*刷新光标位置*/
    (void)set_cursor(1);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值