浅谈远程诊断技术在电控发动机方面的应用
(2)wsock32.lib: winsock api连接库文件。在使用中,一定要把它作为项目的非缺省的连接库包含到项目文件中去。打开选择菜单project->
和客户端才算正式完成通信程序的连接动作。为了知道什么时候客户端提出连接要求,从而服务器端的socket在恰当的时候调用accept()函数完成连接的建立,我们就要使用wsaasyncse-lect()函数,让系统主动来通知我们有客户端提出连接请求了。该函数调用成功返回0,否则返回socket_error。
int pascal far wsaasyncse-lect( socket s, hwnd hwnd,unsigned int wmsg, long levent );
参数: s:socket 对象;
hwnd :接收消息的窗口句柄;
wmsg:传给窗口的消息;
levent:被注册的网络事件,也即是应用程序向窗口发送消息的网路事件,该值为下列值fd_read、fd_write、fd_oob、fd_accept、fd_connect、fd_close的组合,各个值的具体含意为fd_read:希望在套接字s收到数据时收到消息;fd_write:希望在套接字s上可以发送数据时收到消息;fd_accept:希望在套接字s上收到连接请求时收到消息;fd_connect:希望在套接字s上连接成功时收到消息;fd_close:希望在套接字s上连接关闭时收到消息;fd_oob:希望在套接字s上收到带外数据时收到消息。
具体应用时,wmsg应是在应用程序中定义的消息名称,而消息结构中的lparam则为以上各种网络事件名称。所以,可以在窗口处理自定义消息函数中使用以下结构来响应socket的不同事件:
switch(lparam)
{
case fd_read:
…
break;
case fd_write、
…
break;
…
}
电控单元(ECU)的通信协议主要就封装在该消息响应函数当中。
(5)服务器端接受客户端的连接请求
当client提出连接请求时,server 端hwnd视窗会收到winsock stack送来我们自定义的一个消息,这时,我们可以分析lparam,然后调用相关的函数来处理此事件。为了使服务器端接受客户端的连接请求,就要使用accept() 函数,该函数新建一socket与客户端的socket相通,原先监听之socket继续进入监听状态,等待他人的连接要求。该函数调用成功返回一个新产生的socket对象,否则返回invalid_socket。
socket pascal far accept( scoket s, struct sockaddr far *addr,int far *addrlen );
参数:s:socket的识别码;
addr:存放来连接的客户端的地址;
addrlen:addr的长度
(6)结束 socket 连接
结束服务器和客户端的通信连接是很简单的,这一过程可以由服务器或客户机的任一端启动,只要调用closesocket()就可以了,而要关闭server端监听状态的socket,同样也是利用此函数。另外,与程序启动时调用wsastartup()憨数相对应,程式结束前,需要调用 wsacleanup() 来通知winsock stack释放socket所占用的资源。这两个函数都是调用成功返回0,否则返回socket_error。
int pascal far closesocket( socket s );
参 数:s:socket 的识别码;
int pascal far wsacleanup( void );
参 数: 无
3.系统实现与应用
远程故障诊断系统要完成数据的传输需要建立一套完整的数据传输系统。系统中包括:DTU,电控单元(ECU)、移动网络、后台中心。
3.1网络拓扑图:
图2 网络结构
3.2系统实现方式
(1)终端设备,GPRS模块(DTU)
首先通过AT命令对GPRS模块进行设置,设置要连接的中心IP和端口及其它必要性的设置,设置好之后电控单元(ECU)通过RS232接口和GPRS模块相连,GPRS模块上电之后根据事先设置好的中心IP和端口进行连接,成功连接到服务中心后即可双向传输数据。即可实现在线远程监控电控单元(ECU)状态与下载电控单元(ECU)程序。
(2) 公司总部与异地连接
总部条件:首先必须是能有能通过固定IP地址让外网到的计算机,如总部的PC机在局域网里面,那要在局域网路由器做端口映射到本机PC,等这些条件具备之后在本机开放一个端口,运行故障诊断软件等待GPRS模块的连接。 GPRS模块连接中心后,就可按要求进行传输数据。通道建立成功后,GPRS模块串口实时监控采集器的数据,只要集线器串口有数据过来,GPRS模块将全透明进行实时传输。如此,公司总部便可在家里使用电控单元(ECU)监控、标定软件与发动机厂以及其它终端用户的电控单元(ECU)相连接,开展远程监控电控单元(ECU)数据以及更新电控单元(ECU)数据的动作。
图3 公司总部与异地
通过上图3所示,总部的技术人员可以通过INTERNET\\GPRS网络连接到服务中心以外地区的故障车,实现软件监控、标定工作,为用户及时的排除电控发动机的软故障。
(3)异地与异地连接
图4异地 与 异地
如图4所示,由于终端用户的车辆流动性较大,且故障发生时间不具备规律性。公司服务中心很难跟对汽车用户作24小时的技术支持。许多终端
程诊断发动机无线网 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)