串口设置问题

本文介绍了作者在Linux系统下重写串口通讯函数的经历,强调了心态在解决问题中的重要性。通过分享SetUart()函数,展示了如何设置串口参数,包括波特率、数据位、停止位等,以实现有效的串口通信。
摘要由CSDN通过智能技术生成
   上一周已经确定供应商给提供的程序不是在Linux下台下的,所以底层的通讯函数都不能用,需要全部重写。
花了好长时间研究了串口的相关设置,由于今天刚始没有摆正心态认真对待该问题,所以在最初写串口程序的时候走了一些弯路,导致效率低下和时间的浪费。在重复尝试多次失败生决定全部重写串口通讯函数,结果没有用半天的时间就把机器调通了。
由此产生一点感悟:做一件事情能不能做好,可能不是由自己的能力决定的,而是由心态决定的,只有端正了心态,全心全意的去做,最终都会收到一个满意的结果。以后做事要么不做,要么就踏踏实实的把事情做好,这样才会效率最高。
下面附上这次任务中串口设置的函数:
int SetUart( void )
{
         int ret;
         struct termios opt,oldopt;
 
 
       fcntl(ttyfd,F_SETFL,0);   /*恢复串口为阻塞状态*/
 
 
         if(isatty(STDIN_FILENO)==0)
                   printf("fcntl failed!\n");
         else
                   printf("isatty success!\n");
 
 
        tcgetattr(ttyfd,&oldopt);
         bzero(&opt,sizeof(opt));
         opt.c_cflag |= CLOCAL |CREAD;
         opt.c_cflag &= ~CSIZE;
         opt.c_cflag |= CS8;
         opt.c_cflag &= ~PARENB;
        opt.c_cflag &= ~CSTOPB; /* stop bits = 1 */
        
         cfsetispeed(&opt,B115200);
        cfsetospeed(&opt,B115200);
        tcsetattr(ttyfd,TCSANOW,&opt);
        opt.c_iflag &= ~INPCK;
        opt.c_cc[VTIME]= 10;
        opt.c_cc[VMIN] = 0 ;
 
        tcflush(ttyfd,TCIFLUSH);
        if(tcsetattr(ttyfd,TCSANOW,&opt) != 0)
        {
                 perror("SetupSerial2");
                 return -1;
        }
        
         return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值