这里我们设置开发板为发送端,虚拟机或者电脑为接收端。(如果相反只要改一下设备名称和一些传输的方式就行了)
除此之外就是如何编写Makefile的一些问题,其余有什么问题可以咨询QQ:2821072611,随时解答。
首先是开发板即发送端:
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <termios.h>
#include <stdlib.h>
#include <string.h>
#include<unistd.h>
#define BAUDRATE B9600
#define MODEMDEVICE "/dev/ttySAC0"//这里根据开发板的串口的接口设置
#define STOP '@'
#define MAX 128
int main(){
//定义一些 终端结构体,线路状态属性的设置
int fd,c=0,res;
struct termios oldtio,newtio;
char ch,s1[20];
printf("start..\n");
fd = open(MODEMDEVICE,O_RDWR|O_NOCTTY);
if(fd<0)
{
perror(MODEMDEVICE);
exit(1);
}
printf("open...\n");
tcgetattr(fd,&oldtio);
bzero(&newtio,sizeof(newtio));
newtio.c_cflag = BAUDRATE|CS8|CLOCAL|CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
newtio.c_lflag = ICANON;
tcflush(fd,TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
printf("write...\n");
int fi,fo;
//打开这两个文件,如果没有,那么就创建文件,fo是用来测试的文件可以不用看
fi = open("uartData.txt",O_RDWR|O_CREAT);
fo = open("out.txt",O_RDWR|O_CREAT);
char a[100];
int i=0,size;
size = read(fi,a,100);
printf("%s",a);
write(fd,a,size);//写进串口
write(fo,a,size);//可以不用看,我是看能否把缓冲区的数据写入文件中的
printf("close..\n");
close(fd);
tcsetattr(fd,TCSANOW,&oldtio);
return 0;
}
然后是虚拟机或者主机,我们设置为接收端:
#include<stdio.h>
#include<sys/types.h>
#include<fcntl.h>
#include<termios.h>
#include<stdlib.h>
#include<string.h>
#include<sys/stat.h>
#include<errno.h>
#define BAUDRATE B9600 //设置波特率
#define MODEMDEVICE "/dev/ttyS1"//这里要看电脑上虚拟机的串口对应的计算机所连接的物理串口
int main()
{
//定义一些串口文件,中断结构体,线路规程的设置,还有一些状态属性
int fd,c=0,res;
struct termios oldtio,newtio;
char buf[256];
printf("start ...\n");
fd=open(MODEMDEVICE,O_RDWR | O_NOCTTY);
if(fd<0)
{
perror(MODEMDEVICE);
exit(1);
}
printf("open...\n");
tcgetattr(fd,&oldtio);
bzero(&newtio,sizeof(newtio));
newtio.c_cflag=BAUDRATE | CS8 | CLOCAL | CREAD;
newtio.c_iflag=IGNPAR;
newtio.c_oflag=0;
newtio.c_lflag=ICANON;
tcflush(fd,TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
printf("reading...\n");
int fo;
fo = open("/uartData.txt",O_CREAT|O_RDWR);//打开或者创建文件
if(fo<0){perror("error!");}
char a[100];
while(1){
read(fd,a,1);//将串口中的数据写入文件中来
printf("%s",a);
write(fo,a,1);}
printf("close...\n");
close(fd);
tcsetattr(fd,TCSANOW,&oldtio);
return 0;
}