串口通信与网络通信的应用研究

时间:2022-08-15 10:52:46

串口通信与网络通信的应用研究

一、串口通信

1.1 Linux下串口通信基本原理

Linux系统将设备和文件的操作都作为对文件的处理,所以对设备的操作,内核会返回一个文件描述符,需要将其作为参数传给相对应的函数。Linux中所有的设备文件都放在“/dev”目录下,通过“ttyS+编号”命名相应的串口资源,所以对应路径是“/devttyS*”。因而可以相对文件读写那样访问一个串口设备。

1.2 Linux下的串口设置

首先要对串口进行设置,在termios.h完成对波特率等的设置。

struct termios

{tcflag t c iflag;

tcflag t c oflag;

tcflag t c cflag;

tcflag t c lflag;

cc t c cc [NCCS];

};

open( )函数:int fd = open ("/dev/ttyS *", O RDWR|O NOCTTY|O NDELA Y);

然后调用read( )和write( )函数读写端口,返回实际读写的字节数,如果有错误发生则返回-1。

读取串口结束后,首先恢复串口原始属性,然后才可以关闭串口并退出程序。

1.3 串口控制应用程序

下面给出通过串口控制摄像头函数的一部分结构:

void sendMsg(int pan,int tilt)

{struct timeval timeout;

static char *driver = "/dev/ttyS1";

timeout.tv_sec = 0;

timeout.tv_usec = 0;

formCmd(buf,pan,tilt);

fd = uart_open(driver,B9600);

write(fd,buf,16);

close(fd);

}

二、网络通信

2.1 Socket基本原理介绍

Socket是一种通信机制,客户/服务器系统既可以在本地单机上运行,也可以在网络中运行。

首先需要了解socket中的一些重要函数:(1)创建Socket:int socket( intdomain, inttype, intprotocol);(2)配置Socket:bind函数指定本地信息int bind( intsocket, const structsockaddr* address, size_taddress_len);(3)使用listen( )和accept( )函数获取远端信息:Int listen(int socket, int backlog);Int accept(int socket, struct sockaddr* address, size_t* address_len);(4)通信处理:send( ),write( ),recv( ),read( )。(5) 通信结束:使用closesocket( )。

2.2 Windows和Linux下socket应用程序

客户端程序:创建一个未命名的套接字,然后把它连接到服务器套接字server_socket上,向服务器写一个字符,再读回经服务器处理后的一个字符。

服务器端程序:首先创建一个服务器套接字,绑定到一个名字,然后创建一个监听队列,接收来自客户程序的连接。下面我们分别在Windows和Linux下进行socket编程,实现二者之间的通信,具体函数实现的主要部分如下:

Windows下作为client端:

{

SocketClient=socket(AF_INET,SOCK_STREAM,0);

addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.1.10");

while(1)

send(SocketClient,sendBuffer,16,0);

closesocket(SocketClient);

WSACleanup();

}

Linux下作为server端:

{

server_sockfd = socket(AF_INET, SOCK_STREAM, 0);

server_address.sin_addr.s_addr = inet_addr("192.168.1.10");

bind(server_sockfd, (struct sockaddr *)&server_address, server_len);

listen(server_sockfd, 5);

client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_address, &client_len);

while(1)

read(client_sockfd, str,16);

close(client_sockfd);

}

三、结束语

本文设计了基于嵌入式平台上可移动摄像头远程控制,对串口通信和网络通信的原理和机制加以阐述,对串口驱动和网络驱动的编写提出了具体的方法,并且在实际的操作应用中给出了具体函数的编写。本文所提供的处理方法已在实际的项目中的得到应用,对于其他的通过串口通信和网络通信控制的设备,具有参考意义,今后我们还将展开进一步的相关研究。

上一篇:浅析无线通信抗干扰技术的新发展 下一篇:浅谈通信工程管理特点及策略