LINUX下C语言的串口编程数据的发送跟接收
5.1发送端源代码#include<termios.h>#include<stdio.h>#include<unistd.h>#include<fcntl.h>#incl...
5.1发送端源代码
#include <termios.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(int argc,char* argv[])
{
struct termios opt;
char buf[1024];
int fd=open( "/dev/ttyS0",O_RDWR|O_NOCTTY|O_NDELAY);//打开串口
opt.c_cflag|=CLOCAL|CREAD; //激活选项有CLOCAL和CREAD
cfsetispeed(&opt, B115200);//设置波特率,使用函数cfsetispeed、 cfsetospee
cfsetospeed(&opt, B115200);
opt.c_cflag&=~CSIZE; //设置数据位,需使用掩码设置。
opt.c_cflag|=CS8;
opt.c_cflag&=~ PARENB;//不使用奇偶校验
opt.c_cflag &=~CSTOPB;//设置停止位
opt.c_cc[VTIME]=0;//设置最少字符和等待时间
opt.c_cc[VMIN]=0;
tcflush(fd,TCIOFLUSH);//处理要写入的引用对象
tcsetattr(fd,TCSANOW,&opt);//激活配置。
fcntl(fd, F_SETFL, 0);//恢复串口的状态为阻塞状态,用于等待串口? isatty(STDIN_FILENO);//测试打开的文件描述府是否引用一个终端设备,以进一步确认串
memset(buf,0,1024);
printf("请输入要发送的内容\n");
scanf("%s",buf);
for(;;)
{
int len=write(fd,buf,1024);
if(len==0)
return 2;
sleep(1);}
}
5.2接收端源代码
#include <termios.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(int argc,char* argv[])
{
struct termios opt;
char buf[1024];
int fd=open( "/dev/ttyS0",O_RDWR|O_NOCTTY|O_NDELAY);//打开串口
opt.c_cflag|=CLOCAL|CREAD; //激活选项有CLOCAL和CREAD
cfsetispeed(&opt, B115200);//设置波特率,使用函数cfsetispeed、 cfsetospee
cfsetospeed(&opt, B115200);
opt.c_cflag&=~CSIZE; //设置数据位,需使用掩码设置。
opt.c_cflag|=CS8;
opt.c_cflag&=~ PARENB;//不使用奇偶校验
opt.c_cflag &=~CSTOPB;//设置停止位
opt.c_cc[VTIME]=0;//设置最少字符和等待时间
opt.c_cc[VMIN]=0;
tcflush(fd,TCIOFLUSH);//处理要写入的引用对象
tcsetattr(fd,TCSANOW,&opt);//激活配置。
fcntl(fd, F_SETFL, 0);//恢复串口的状态为阻塞状态,用于等待串口? isatty(STDIN_FILENO);//测试打开的文件描述府是否引用一个终端设备,以进一步确认串
memset(buf,0,1024);
printf("请输入要发送的内容\n");
scanf("%s",buf);
for(;;)
{
memset(bulf,0,1024);
int len=read(fd,bulf,1024)
if(len !=0)
printf(bulf);
sleep(1);}
}
为什么无法发送。或者可能无法接收 展开
#include <termios.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(int argc,char* argv[])
{
struct termios opt;
char buf[1024];
int fd=open( "/dev/ttyS0",O_RDWR|O_NOCTTY|O_NDELAY);//打开串口
opt.c_cflag|=CLOCAL|CREAD; //激活选项有CLOCAL和CREAD
cfsetispeed(&opt, B115200);//设置波特率,使用函数cfsetispeed、 cfsetospee
cfsetospeed(&opt, B115200);
opt.c_cflag&=~CSIZE; //设置数据位,需使用掩码设置。
opt.c_cflag|=CS8;
opt.c_cflag&=~ PARENB;//不使用奇偶校验
opt.c_cflag &=~CSTOPB;//设置停止位
opt.c_cc[VTIME]=0;//设置最少字符和等待时间
opt.c_cc[VMIN]=0;
tcflush(fd,TCIOFLUSH);//处理要写入的引用对象
tcsetattr(fd,TCSANOW,&opt);//激活配置。
fcntl(fd, F_SETFL, 0);//恢复串口的状态为阻塞状态,用于等待串口? isatty(STDIN_FILENO);//测试打开的文件描述府是否引用一个终端设备,以进一步确认串
memset(buf,0,1024);
printf("请输入要发送的内容\n");
scanf("%s",buf);
for(;;)
{
int len=write(fd,buf,1024);
if(len==0)
return 2;
sleep(1);}
}
5.2接收端源代码
#include <termios.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
int main(int argc,char* argv[])
{
struct termios opt;
char buf[1024];
int fd=open( "/dev/ttyS0",O_RDWR|O_NOCTTY|O_NDELAY);//打开串口
opt.c_cflag|=CLOCAL|CREAD; //激活选项有CLOCAL和CREAD
cfsetispeed(&opt, B115200);//设置波特率,使用函数cfsetispeed、 cfsetospee
cfsetospeed(&opt, B115200);
opt.c_cflag&=~CSIZE; //设置数据位,需使用掩码设置。
opt.c_cflag|=CS8;
opt.c_cflag&=~ PARENB;//不使用奇偶校验
opt.c_cflag &=~CSTOPB;//设置停止位
opt.c_cc[VTIME]=0;//设置最少字符和等待时间
opt.c_cc[VMIN]=0;
tcflush(fd,TCIOFLUSH);//处理要写入的引用对象
tcsetattr(fd,TCSANOW,&opt);//激活配置。
fcntl(fd, F_SETFL, 0);//恢复串口的状态为阻塞状态,用于等待串口? isatty(STDIN_FILENO);//测试打开的文件描述府是否引用一个终端设备,以进一步确认串
memset(buf,0,1024);
printf("请输入要发送的内容\n");
scanf("%s",buf);
for(;;)
{
memset(bulf,0,1024);
int len=read(fd,bulf,1024)
if(len !=0)
printf(bulf);
sleep(1);}
}
为什么无法发送。或者可能无法接收 展开
若以下回答无法解决问题,邀请你更新回答
3个回答
展开全部
用libserial库吧
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
静待
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询