微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM设计的高速数据采集远程监控系统技术

ARM设计的高速数据采集远程监控系统技术

时间:12-13 来源:互联网 点击:

Socket()函数:用于创建一个套接字描述符。

#includesys/types.h>

#includesys/soc ket.h>

Socket

— ID=socket(AF_INET,SOCK_STREAM,0);

ff PF—INET OR AF—INET Intemet IP Protocal SOCK—STREAM选择流式套接字

② Connect()函数:用于与远端服务器建立一个TCP连接请求。

Status=connect(Socket—ID,(struc sockaddr})Server—Addr,sizeof(struct sockaddr));

∥ 一定要指定服务器的IP地址和端口号,可带参数运行程序时指定,也有默认的lP和端口号

if(status!= 一1)∥ 一1:连接过程出错

{. ..}

③ Write()函数:从套接字缓冲区写数据。

int Net— Send— SysConfig(int Conn—ID,char Cmdname)

∥向服务器反馈工作状态即执行服务器下达的命令情况

∥Conn—ID为已经建立的套接字描述符

{

status=write(Conn—ID,sendbuff,len);

∥向服务器发送信息

}

④ Read()函数:从套接字缓冲区读取数据

int Receive_ Command(int Conn—ID)

{

return len=read(Conn—ID,NetBuf,REC—BUFF_SIZE);

∥成功返回实际收到的字节总数,出错返回一1

}

⑤ Close()函数:用于关闭一个套接字描述符。

close(Socket—ID); //关闭连接下位机的开发都是在Linux环境下用交叉编译器ARM.Linux—gcc编译通过。

4 上位机的通信实现

服务器监控软件是用Visual Basic 6.0来编写的。在Visual Basic(以下简称VB)中,进行网络通信开发是非常方便的。VB除了提供丰富的控件外,还提供了各种API来进行更为高级的运用程序的开发。本装置通过Winsock控件进行网络开发。Winsock控件对用户是不可见的,它提供了访问TCP和UDP网络服务的方便途径。在编写客户或服务器运用程序时,不必了解TCP的细节或低级的Win—sock API。通过设置控件的属性并调用其方法就可连接到一个远程客户/服务器端,并且双向交换数据。

在本系统中作为服务器的运用软件,在Winsock控件的属性设置上要注意:

① Protocol属性。返回或设置Winsock控件所使用的协议(TCP或UDP)。

UDPFrmMain.Winsock— Server.Protocol:sckTCPProtocol

∥选择TCP协议,提高数据传输的可靠性

② LocalPort属性。返回或设置所用到的本地端口。对客户来说,该属性指定发送数据的本地端口;对于服务器来说,是指定侦听的本地端口。

FrmMain.W insock— Server.LocalPort=LocalPort— ID∥服务器端口号,最好大于1 000

③ State属性。返回控件的状态,设计时只读。用在判断监控网络状态,根据状态改变各个按键指示

灯的状态,提高操作安全性。其设置如下:

Connected— State=FrmMain.W insock— Server.State

Select Case Connected— State

Case 0 StatusBar1.Panels(3).Text= “关闭”

Case 1 StalusBar1.Panels(3).Text=“打开”

Case 2 StatusBar1.Panels(3).Text=“侦听”

4.1 Winsock控件方法

Winsock控件方法主要有以下几种:

① Listen方法。在运用程序初始化时创建套接

字并将其设置为侦听状态,等待客户机的连接请求。

Private Sub Form_ Load()

FrmMain.Winsock— Server.Listen

End Sub

② Accept方法。当有新连接时就会出现ConnectionRequest

事件,处理该事件时,运用程序应该用Accept方法接收连接。

∥当远程客户机(AT91RM9200)发出请求连接时发生

Private Sub Winsock

Server

— Connecti0nRequest( ByVal

requestID As Long)

If W insock

— Server.State > sckClosed Then W insock—

Server.Close保证Winsock控件不是处于Close状态

W insock— —

Server.Accept requestlD

∥服务器接收客户机(A'I-91 RM9200)的请求

End Sub

③ SendData方法。服务器给客户机发送控制命

令,如开始执行、停止、数据的转存等,实现对客户机的

远程控制。

本函数按TCP模式按二进制方式发送数据包给

客户机,函数成功返回true,出错返回false。

Public Function Send— Data—

To— kehu(Winsock—Server As

Winsock,Data—

Buff()As Byte)As Boolean

On Error GoTo Er

_

Part

Send— Data— To—

kehu : False

If Connect Then //Connect是一个定义的全局变量,

保证在Winsock控件在连接状态

W insock— . Server.Se ndData Data_ Buf

End If

Send— Data— To— kehu=True

Exit Function

Err_ Pa~:

Send— Data— To— keh

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top