首页 > 其他 > 详细

嵌入式处理器通过UART实现scanf和printf

时间:2019-07-29 01:26:32      阅读:186      评论:0      收藏:0      [点我收藏+]
#include <stdint.h>
#include <stdarg.h>

extern int vsscanf (const char *, const char *, va_list);
extern int vsprintf (const char *, const char *, va_list);

int uart_scanf(const char *fmt, ...)
{
    int i = 0;
    unsigned char ch;
    char buf[80];
    va_list args;

    while(1) {
        ch = uart_getchar();
        uart_putchar(ch);
        if(ch == \n || ch == \r) {
            buf[i] = \0;
            break;
        } else {
            buf[i++] = ch;
        }
    }

    va_start(args, fmt);
    i = vsscanf(buf, fmt, args);
    va_end(args);
    uart_putchar(\r);
    uart_putchar(\n);
    return i;
}

int uart_printf(const char *fmt, ...)
{
    int i = 0;
    unsigned int n = 0;
    char buf[80];
    va_list args;

    va_start(args, fmt);
    n = vsprintf(buf, fmt, args);
    va_end(args);

    for(i = 0; i < n; ++i) {
        uart_putchar(buf[i]);
    }
    return n;
}

int main(void)
{
    char str[10];
    int a, b, c;
    int n;
    while((n = uart_scanf("%s%d%d%d", str, &a, &b, &c)) != -1) {
        uart_printf("%d Arguments. str = %s, a = %d, b = %d, c = %d\r\n", n, str, a, b, c);
    }
    return 0;
}

 

嵌入式处理器通过UART实现scanf和printf

原文:https://www.cnblogs.com/lyuyangly/p/11261619.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!