ARM设计的高速数据采集远程监控系统技术
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
监控系统 技术 远程 数据采集 设计 高速 ARM 相关文章:
- 基于Winodws CE的嵌入式网络监控系统的设计与实现(03-05)
- 基于MPEG-4的嵌入式多媒体监控系统中压缩/解压卡的设计与实现(10-15)
- 基于嵌入式Linux的远程监控系统的设计(11-25)
- 采用DSP的铁路道口图像监控系统设计(02-01)
- 基于DSP芯片TMS320DM642的嵌入式无线视频监控系统设计(01-11)
- 双DSP的多路视频监控系统设计(02-14)