何为串口:
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。
何为socket:
Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
综上所诉,socket即用来连接网络的接口,只有当socket有正确的配置后,才可以和网络有数据的交换。
实现思路:其实非常简单,将串口接收到的数据读到buffer中,再将buffer中的数据写到socket中。
本文主要根据代码加注释来说明实现过程。
打开串口及配置(主要就是写了两个函数):
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<termios.h>
#include<errno.h>
#include<fcntl.h>
#include<stdio.h>
#include<string.h>
int opentty(void)
{
int ttyfd;
if((ttyfd=open("/dev/ttyS1",O_RDWR))<0)
{
printf("open failure:%s\n",strerror(errno));
close(ttyfd);
}
return ttyfd;
}//由于linux中所有设备都是文件,所以可以用open打开串口这个块设备,并设置为O_RDWR(注意不要设置为非阻塞模式)
int setttyinfo(int fd)
{
int i,k;
struct termios opt;//termios结构体定义在termios.h这个头文件里,主要用于存储串口的基本属性(波特率,数据位,停止位,奇偶校验等参数)
tcgetattr(fd,&opt);//该函数用于取得当前串口配置
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。
何为socket:
Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
综上所诉,socket即用来连接网络的接口,只有当socket有正确的配置后,才可以和网络有数据的交换。
实现思路:其实非常简单,将串口接收到的数据读到buffer中,再将buffer中的数据写到socket中。
本文主要根据代码加注释来说明实现过程。
打开串口及配置(主要就是写了两个函数):
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<termios.h>
#include<errno.h>
#include<fcntl.h>
#include<stdio.h>
#include<string.h>
int opentty(void)
{
int ttyfd;
if((ttyfd=open("/dev/ttyS1",O_RDWR))<0)
{
printf("open failure:%s\n",strerror(errno));
close(ttyfd);
}
return ttyfd;
}//由于linux中所有设备都是文件,所以可以用open打开串口这个块设备,并设置为O_RDWR(注意不要设置为非阻塞模式)
int setttyinfo(int fd)
{
int i,k;
struct termios opt;//termios结构体定义在termios.h这个头文件里,主要用于存储串口的基本属性(波特率,数据位,停止位,奇偶校验等参数)
tcgetattr(fd,&opt);//该函数用于取得当前串口配置