C语言实现两台电脑通过串口通信
2016-08-11 11:03
471 查看
用C语言实现在发送端控制台输入字符串并在接收端接收显示的功能。
/*********************server.c****************/
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<termios.h>
#define BAUDRATE B38400
#define MODEMDEVICE "/dev/ttyS0"
#define STOP '@'
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("writing...\n");
while(1)
{
while((ch=getchar())!='@')
{
s1[0]=ch;
res=write(fd,s1,1);
}
s1[0]=ch;
s1[1]='\n';
res=write(fd,s1,2);
break;
}
printf("close...\n");
close(fd);
tcsetattr(fd,TCSANOW,&oldtio);
return 0;
}
/**************client.c***************/
#include<stdio.h>
#include<sys/types.h>
#include<fcntl.h>
#include<termios.h>
#define BAUDRATE B38400
#define MODEMDEVICE "/dev/ttyS0"
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");
while(1)
{
res=read(fd,buf,255);
buf[res]=0;
printf("res=%d vuf=%s\n",res,buf);
if(buf[0]=='a') break;
}
printf("close...\n");
close(fd);
tcsetattr(fd,TCSANOW,&oldtio);
return 0;
}
发送端截图:
接受端截图:
(-----------that's all-----------)
/*********************server.c****************/
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<termios.h>
#define BAUDRATE B38400
#define MODEMDEVICE "/dev/ttyS0"
#define STOP '@'
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("writing...\n");
while(1)
{
while((ch=getchar())!='@')
{
s1[0]=ch;
res=write(fd,s1,1);
}
s1[0]=ch;
s1[1]='\n';
res=write(fd,s1,2);
break;
}
printf("close...\n");
close(fd);
tcsetattr(fd,TCSANOW,&oldtio);
return 0;
}
/**************client.c***************/
#include<stdio.h>
#include<sys/types.h>
#include<fcntl.h>
#include<termios.h>
#define BAUDRATE B38400
#define MODEMDEVICE "/dev/ttyS0"
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");
while(1)
{
res=read(fd,buf,255);
buf[res]=0;
printf("res=%d vuf=%s\n",res,buf);
if(buf[0]=='a') break;
}
printf("close...\n");
close(fd);
tcsetattr(fd,TCSANOW,&oldtio);
return 0;
}
发送端截图:
接受端截图:
(-----------that's all-----------)
相关文章推荐
- C语言实现两台电脑通过串口通信
- C语言通过串口实现两台电脑通信
- 两台电脑间通过网线建立局域网实现文件的共享
- 路由器怎么连接两台电脑/实现共享上网
- C语言-计算器实现(Dev c++编译通过)
- 蚁群算法实现(c语言,tc2.0下编译通过)
- 魔方简单实现(c语言,tc2.0编译通过)不含解魔方的算法
- 如何实现局域网内两台电脑资源共享?
- 剖析两台电脑间通过互连网是如何具体通信的
- C语言实现快速排序(完整版)DVE-C++编译通过
- C语言通过二叉树实现单词出现频率的统计
- 如何连接两台电脑,实现两台电脑的共享
- 如何让两台笔记本电脑通过无线网卡连接起来
- 实现两台笔记本电脑无线连接的技巧
- Windows 7 通过无线网卡,模拟Wifi,实现手机,电脑等无线设备共享上网
- c语言中通过函数指针实现函数重载
- 通过蓝牙让电脑实现“无线上网”
- 【网路】ADSL和交换机,实现两台电脑同时上网。
- 如何实现两台电脑共享
- 通过NFS来实现两台web服务器的连接