Linux串口编程-2-mark校验

#include     <stdio.h>
#include     <stdlib.h>
#include     <unistd.h>
#include     <sys/types.h>
#include     <sys/stat.h>
#include     <fcntl.h>
#include     <termios.h>
#include     <errno.h>
#include     <string.h>

main()
{
    int fd;
    int i;
    int len;
    int n = 0;
    char b[1]={0x00};
    char read_buf[256];
    char write_buf[256];
    struct termios opt;


    fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY);    //默认为阻塞读方式
    if(fd == -1)
    {
        perror("open serial 0\n");
        exit(0);
    }


    tcgetattr(fd, &opt);
    cfsetispeed(&opt, B9600);
    cfsetospeed(&opt, B9600);


    if(tcsetattr(fd, TCSANOW, &opt) != 0 )
    {
       perror("tcsetattr error");
       return -1;
    }
    opt.c_cflag &= ~CSIZE;
    opt.c_cflag |= CS8;
    opt.c_cflag &= ~CSTOPB;
    opt.c_cflag &= ~PARENB;
    opt.c_cflag &= ~INPCK;
    opt.c_cflag |= (CLOCAL | CREAD);


    opt.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);


    opt.c_oflag &= ~OPOST;
    opt.c_oflag &= ~(ONLCR | OCRNL);    //添加的


    opt.c_iflag &= ~(ICRNL | INLCR);
    opt.c_iflag &= ~(IXON | IXOFF | IXANY);    //添加的
//    //=====================================
//    //space
//    opt.c_cflag |=  PARENB | CS8 | CMSPAR ;
//    //=====================================
    //=====================================
    //mark
    opt.c_cflag |= PARENB | CS8 | CMSPAR ;
    opt.c_cflag &= ~PARODD;
    //=====================================


    opt.c_cc[VTIME] = 0;
    opt.c_cc[VMIN] = 0;


    tcflush(fd, TCIOFLUSH);


    printf("configure complete\n");


    if(tcsetattr(fd, TCSANOW, &opt) != 0)
    {
        perror("serial error");
        return -1;
    }
    printf("start send and receive data\n");


    while(1)
    {


        n = 0;
        len = 0;
        printf("hw\n");
        bzero(read_buf, sizeof(read_buf));    //类似于memset
        bzero(write_buf, sizeof(write_buf));
        write(fd,b,sizeof b);
        usleep(50000);
    }
}
实验过程,下位机将SM2=1,char b[1]={0x00};或char b[1]={0x01};都能够进入中断!

参考:

Linux统》  http://wenku.baidu.com/view/35e48a97dd88d0d233d46a16.html

《Linux串口编程》 http://www.cppblog.com/amazon/archive/2010/01/28/106644.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁保康

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值