openwrt 亲测可用串口实例

#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>

  
int main()
{
    int fd;
    int i;
    int len;
    int n = 0;      
    char read_buf[20];
    char write_buf[20];
    char testbuff[]="Hello1263\r\n";
    struct termios opt; 
    fd = open("/dev/ttyUSB2", O_RDWR | O_NOCTTY);    //默认为阻塞读方式
    write(fd,testbuff,10);
   
    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_iflag &= ~INPCK;//opt.c_cflag &= ~INPCK;the last this is fetal set
    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);    //添加的
    
    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;
    } 
  
    while(1)
    {    
        n = 0;
        len = 0;
        bzero(read_buf, sizeof(read_buf));    //类似于memset
        bzero(write_buf, sizeof(write_buf));
	
	while( (n = read(fd, read_buf, sizeof(read_buf))) > 1 )//>0
        {
	    printf("n= %d \n", n);//
            for(i = len; i < (len + n); i++)
            {
                write_buf[i] = read_buf[i - len];
            }
            len += n;    
        }
        write_buf[len] = '\0';
	write_buf[1]=write_buf[0];  
        n = write(fd, write_buf, len);
	printf("have sended\n");
        sleep(2);
    }
}

把接收到的字符串第二个字符改成第一个字符,用于验证。串口配置项很重要,需要理解其意。

https://blog.csdn.net/baweiyaoji/article/details/72885633

结构体和函数详细讲解https://wenku.baidu.com/view/33dc137a6bd97f192379e932.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值