原创 C51虚拟串口设计(三)

2007-11-23 17:24 2563 3 3 分类: 消费电子

接收处理部分:


/********************************************************************************/
/* function : vm_printf()                                                       */
/* created  : hw-chen                                                           */
/* descript : 从VM串口输出信息                                                  */
/********************************************************************************/
void vm_printf(char *string, ...)
{   unsigned char i,length;
    char buffer[0x40];
    va_list arguments;
   
    va_start(arguments,string);
    vsprintf(buffer,string,arguments);
    va_end(arguments);
   
    length="strlen"(buffer);
    for(i=0x0;i    if((xmit_vm_wr+0x1)==xmit_vm_rd)
    {   break;
    }
    xmit_vm_buffer[xmit_vm_wr]=buffer;
    xmit_vm_wr++;
    xmit_vm_wr&=VM_XMIT_MSK;
    }
    return;
}


/********************************************************************************/
/* function : recv_SBUF_mdata_process()                                         */
/* created  : hw-chen                                                           */
/* descript : VM串口接收数据处理                                                */
/********************************************************************************/
void recv_SBUF_mdata_process(void)
{   if(recv_vm_flags==0x0)
    {   return;
    }
    recv_vm_flags=0x0;
    if((recv_vm_sbuff==0x8)&&(recv_vm_wr>0x0)){ /* 处理退格 */
    recv_vm_wr--;
    vm_printf("%c",0x8);
    vm_printf("%c",' ');
    vm_printf("%c",0x8);
    return;
    }
    recv_vm_buffer[recv_vm_wr]=recv_vm_sbuff; /* 接收处理 */
    recv_vm_wr++;
    if((recv_vm_sbuff=='\r')||(recv_vm_sbuff=='\n'))
    {   recv_command_process();
    }
    if((recv_vm_wr>=VM_RECV_MSK))
    {   recv_vm_wr=0x0;
    }
    else
    {   vm_printf("%c",recv_vm_sbuff);  /* 回显 */
    }
}


/********************************************************************************/
/* function : recv_command_process()                                            */
/* created  : hw-chen                                                           */
/* descript : VM串口接收数据处理                                                */
/********************************************************************************/
void recv_command_process(void)
{   recv_vm_buffer[recv_vm_wr]=0x0;
    //* 添加自己的处理函数
    recv_vm_wr=0x0;
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条