Bootstrap

linux系统与51单片机实现串口数据交互

// 以下是 用于 linux IO INPUT  AND OUT PUT
参考代码详细 参考一下网站  写得都很详细  其中函数代码和所遇问题测试摘自一下网站,感谢他们提供的函数资源
大家可以先去看看函数模型以及方法  个人觉得他们归纳的比较好
//http://www.cnblogs.com/meronzhang/archive/2012/11/24/2786165.html
//http://www.cnblogs.com/meronzhang/archive/2012/11/24/2786166.html
//http://www.doc88.com/p-9045754154843.html


以下是代码  其中,mian函数和51函数为自己写的测试代码 测试通过,不过仍有bug,就是数据没清空,导致数据一直在接收


#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <termios.h>
#include <errno.h>
#include <strings.h
#include <string.h>
#define TRUE 1
#define FALSE -1




int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300,


                    B38400, B19200, B9600, B4800, B2400, B1200, B300,


                  };


int name_arr[] = {38400,  19200,  9600,  4800,  2400,  1200,  300, 38400,


                  19200,  9600, 4800, 2400, 1200,  300,
                 };


struct termio


{
    unsigned short  c_iflag; /* 输入模式标志 */


    unsigned short  c_oflag;     /* 输出模式标志 */


    unsigned short  c_cflag;     /* 控制模式标志*/


    unsigned short  c_lflag;     /* local mode flags */


    unsigned char    c_line;           /* line discipline */


    unsigned char    c_cc[NCC];    /* control characters */


};






/**
*@brief  设置串口通信速率
*@param  fd     类型 int  打开串口的文件句柄
*@param  speed  类型 int  串口速度
*@return  void
*/






void set_speed(int fd, int speed)
{
    int   i;
    int   status;
    struct termios   Opt;
    tcgetattr(fd, &Opt);
    for ( i= 0;  i < sizeof(speed_arr) / sizeof(int);  i++)
    {
        if  (speed == name_arr[i])
        {
            /**
             * tcflush函数刷清(抛弃)输入缓存(终端驱动程序已接收到,但用户程序尚未读)或输出缓存(用户程序已经写,但尚未发送)。queue参数应是下列三个常数之一:
     
;