Linux串口编程-5-space校验2

#include     <stdio.h>      /*标准输入输出定义*/
 #include     <stdlib.h>     /*标准函数库定义*/
 #include     <unistd.h>     /*Unix 标准函数定义*/
 #include     <sys/types.h>     /*系统类型定义*/
 #include     <sys/stat.h>         /*系统状态定义*/
 #include     <fcntl.h>      /*文件控制定义*/
 #include     <termios.h>    /*PPSIX 终端控制定义*/
 #include     <errno.h>      /*错误号定义*/

 int main(void)
 {


     int fd;
     struct termios option;
     int status = 0;
     char buff[512];//这样定义buff的内容是随机数
     int num = 0;

     fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY );
     if (-1 == fd)
     {
         perror("can not open serial port");

     }
     tcgetattr(fd, &option);
     option.c_cflag |= CLOCAL; //保证程序不会成为端的占有者
     option.c_cflag |= CREAD; //使端口能读取输入的数据
     cfsetispeed(&option, B2400);
     cfsetospeed(&option, B2400);

     option.c_cflag &= ~CSIZE;
     option.c_cflag |= CS8;
     option.c_cflag |= PARENB;
     //option.c_cflag &= ~PARODD;

     option.c_cflag |= PARODD; //奇校验
     option.c_cflag |= CMSPAR; //标记校验位
     option.c_cflag &= ~CSTOPB; //一位停止位
     option.c_iflag |= INPCK; /* Disnable parity checking */

     //    一下是添加测试
     ///

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

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

     option.c_iflag &= ~(ICRNL | INLCR);
     option.c_iflag &= ~(IXON | IXOFF | IXANY); //添加的
     ///

     option.c_cc[VTIME] = 0; //设置超时
     option.c_cc[VMIN] = 1; //设置最小字节数
     tcflush(fd, TCIFLUSH);
    //=================================================
     //SPACE
     option.c_cflag |= PARENB | CS8 | CMSPAR |PARODD;
     //================================================

     status = tcsetattr(fd, TCSANOW, &option);
     if (-1 == status)
     {
         perror("tcsetattr false");
     }
     while(1)
     {
     write(fd, "\x00", sizeof("\x02"));
     usleep(50000);
     }
     num = read(fd, buff, 512);
     printf("%d\n", num);
     printf("%d\n", errno);
     printf("%x", buff[0]);//注意这里,如果读取不成功,将是随机值。
 }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

袁保康

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

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

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

打赏作者

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

抵扣说明:

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

余额充值