zoukankan      html  css  js  c++  java
  • [国嵌攻略][057][串口控制台建立]

    控制台分类

    1.菜单型控制台,通过选择菜单来执行命令

    2.解析型控制台,通过输入命令来执行命令

    printf()、scanf()函数移植

    1.函数采用变参

    2.打印信息到串口

    3.关键在于把变参转换成字符串,相关函数需要从Linux内核或标准C库中移植

    va_list args;

    va_start(args, fmt);

    vsprintf(buf, fmt, args);

    va_end(args);

    /********************************************************************
    *名称:puts
    *参数:
    	str   输出字符串
    *返回:
    	i     输出字符数
    *功能:输出字符串
    *********************************************************************/
    int puts(const char *str){
    	int i;   //输出字符数
    	
    	for(i = 0; str[i] != ''; i++){   //如果输出字符为结束符,那么结束输出字符串
    		putc(str[i]);
    	}
    	
    	return i;
    }
    
    /********************************************************************
    *名称:gets
    *参数:
    	str   输入字符串
    *返回:
    	i     输入字符数
    *功能:输入字符串
    *********************************************************************/
    int gets(char *str){   //标准C中返回为char *类型的输入字符串指针
    	char ch;   //输入字符
    	int i;     //输入字符数
    	
    	ch = getc_echo();
    	for(i = 0; ch != '
    '; i++){   //如果输入字符为回车,那么结束输入字符串
    		str[i] = ch;
    		ch = getc_echo();
    	}
    	str[i++] = '
    ';   //添加回车
    	str[i++] = '
    ';   //添加换行
    	str[i] = '';     //添加结束符
    	
    	return i;
    }
    
    /********************************************************************
    *名称:printf
    *参数:
    	format   格式化字符串
    *返回:
    	num      输出字符数
    *功能:格式化输出字符串
    *********************************************************************/
    int printf(const char *format, ...){
    	char buffer[BUFSIZE];   //字符串缓存
    	va_list args;           //参数列表
    	int num;                //输出字符数
    	
    	//转换参数为字符串
    	va_start(args, format);           //读取参数
    	vsprintf(buffer, format, args);   //转换参数为字符串
    	va_end(args);                     //结束转换
    	
    	//输出字符串到串口
    	num = puts(buffer);
    	
    	return num;
    }
    
    /********************************************************************
    *名称:scanf
    *参数:
    	format   格式化输入字符串
    *返回:
    	num      输入字符数
    *功能:格式化输入字符串
    *********************************************************************/
    int scanf(const char *format, ...){   //标准C中返回为int类型的是否成功标志
    	int num;                //输入字符数
    	char buffer[BUFSIZE];   //字符串缓存
    	va_list args;           //参数列表
    	
    	//输入字符串到串口
    	num = gets(buffer);
    	
    	//转换字符串为参数
    	va_start(args, format);          //读取参数
    	vsscanf(buffer, format, args);   //转换字符串为参数
    	va_end(args);                    //结束转换
    	
    	return num;
    }
    
  • 相关阅读:
    动态投影
    我的比较差的初级的研究成果
    我最近的研究成果(IGeometry.Project and IGeometry.SpatialReference)
    mysql中的数据类型以及常见约束
    面向对象——多态
    java基础
    java中的异常(3)
    mysql中的数据类型
    面向对象——继承
    java中的异常(2)
  • 原文地址:https://www.cnblogs.com/d442130165/p/4970064.html
Copyright © 2011-2022 走看看