- #include <time.h>
- #include <fcntl.h>
- #include <stdio.h>
- #include <ctype.h>
- #include <errno.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <signal.h>
- #include <termio.h>
- #include <syslog.h>
- #include <pthread.h>
- #include <sys/ipc.h>
- #include <sys/msg.h>
- #include <sys/wait.h>
- #include <sys/stat.h>
- #include <sys/time.h>
- #include <semaphore.h>
- #include <arpa/inet.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <bits/signum.h>
- #include <sys/resource.h>
- int uart_init(int arg, int baud)
- {
- int fd;
- char port[20];
- struct termios Opt;
- int uartbiit[50]= {B115200,B9600,B19200,B4800,B2400,B1200};
- sprintf(port,"/dev/s3c2410_serial%d",arg);
- printf("Use port: %s \\n", port);
- fd = open(port, O_RDWR); //打开串口
- if (fd<0)
- {
- return -1; //没有打开返回
- }
- tcgetattr(fd,&Opt); //初始化
- tcflush(fd,TCIFLUSH);
- cfsetispeed(&Opt,uartbiit[baud]); //设置波特率
- cfsetospeed(&Opt,uartbiit[baud]);
- Opt.c_cflag |= CS8; //设置数据位
- Opt.c_cflag &= ~PARENB;
- Opt.c_oflag &= ~(OPOST);
- Opt.c_cflag &= ~CSTOPB;
- Opt.c_lflag &= ~(ICANON|ISIG|ECHO|IEXTEN);
- Opt.c_iflag &= ~(INPCK|BRKINT|ICRNL|ISTRIP|IXON);
- Opt.c_cc[VMIN] = 64; //最大长度
- Opt.c_cc[VTIME] = 1; //超时时间
- if (tcsetattr(fd,TCSANOW,&Opt) != 0) //装载初始化参数
- {
- perror("SetupSerial!\\n");
- close(fd);
- return -1;
- }
- return(fd);
- }
- int main()
- {
- int fd, len = 0, i=0;
- char buf[300];
- if((fd = uart_init(1, 0)) <0) //打开串口,波特率为115200;
- {
- printf("Open uart err \\n");
- return -1;
- }
- sprintf(buf, "Hello world !\\n"); //输出内容
- while(1)
- {
- memset(buf, 0 ,sizeof(buf));
- #if 0
- while((len = read(fd,buf,64))>0)
- {
- printf("%s\\n",buf);
- }
- #endif
- #if 1
- int nread;
- while((nread = read(fd, buf, 300))>0)
- {
- // printf("read len %d\\t",nread);
- // buf[nread] = '\\0';
- printf("%s\\n",buf);
- write(fd,buf,sizeof(buf));
- }
- #endif
- }
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/250920136134.html
来源: http://www.codesnippet.cn/detail/250920136134.html