《基于网络通信的数据采集上位机软件设计.doc》由会员分享,可在线阅读,更多相关《基于网络通信的数据采集上位机软件设计.doc(31页珍藏版)》请在三一办公上搜索。
1、题目:基于网络通信的数据采集上位机软件设计 基于网络通信的数据采集上位机软件设计 摘要随着网络技术的快速发展,基于网络通信的数据采集系统得到了大量应用,本文在查阅文献的基础上提出了基于网络通信的单片机数据采集系统,通过网卡终端以及TCP/IP协议实现了单片机与PC机之间的网络通信,本文研究具有较强的工程背景和实际价值,本文在主要工作如下:(1)进行了基于网络通信的数据采集系统理论研究,主要包括数据采集的基本原理和基本方法,并提出了两种单片机连接网络的实现方法。(2)研究了网络通信的数据采集实现过程,对单片机数据采集到网络传输进行了模式设计,并设计了单片机发送程序以及网卡芯片配置,以实现单片机网
2、络连接;(3)设计了网络通信数据采集系统上位机软件。基于TCP/IP协议以及Windows Socket方法,在Visual Studio平台上开发出了单片机网络通信数据采集系统上位机软件,实现了数据采集和显示;(4)对数据采集系统进行了实验和调试,并提出了期间遇到的各种问题,最后对全文的内容进行了总结和工作展望。关键词:数据采集系统;网络通信;TCP/IP协议;上位机Data Acquisition Host Computer System Software Design Based on Network CommunicationABSTRACTWith the rapid develop
3、ment of network technology, data acquisition system based on network communication is to get a large number of applications, is proposed in this article refer to the literature on the basis of the single-chip microcomputer data acquisition system based on network communication, through the network c
4、ard in the end, and the TCP/IP protocol realized the network communication between MCU and PC, this paper has strong engineering background and the actual value, based on the main work is as follows:(1) the data acquisition system based on network communication theory research, mainly including the
5、basic principle of data acquisition and basic methods, and puts forward the method to realize the two single-chip computer to connect to the Internet.(2) studies the data acquisition network communication realization process, single-chip microcomputer data acquisition to network transmission for the
6、 pattern design, and design the single-chip computer router chip configuration and the network card, in order to realize the single chip microcomputer network connection;(3) designed the network traffic data collection system of upper machine software. Method based on TCP/IP protocol and Windows soc
7、kets, in Visual Studio platform developed by single chip microcomputer PC software, network communication data acquisition system has realized the data acquisition and display;(4) the data acquisition system for the experiment and debugging, and put forward the problems encountered during the period
8、 of, finally, the full text is summarized and the content of the work.Key words: data acquisition system; network communication; TCP/IP protocol; the upper machine目录1 引 言1 1.1 课题研究背景和研究意义1 1.2 数据采集系统发展现状1 1.3 论文主要研究内容22 基于网络通信数据采集系统基本原理和方法4 2.1 基于网络通信数据采集系统基本原理4 2.2 基于网络通信数据采集系统基本方法43 基于网络通信的数据采集实现6
9、 3.1 数据采集工作模式6 3.2 单片机发送端程序设计6 3.3 网卡芯片模块7 3.4 网卡芯片软件配置104 上位机软件设计11 4.1 TCP/IP协议11 4.2 数据传输程序设计11 4.3 上位机PC界面175 实验与调试18 5.1 网络通信测试18 5.2 系统调试18 5.3 遇到的问题讨论196 总结与展望21 6.1 全文总结21 6.2 工作展望21参考文献22致 谢23附 录241引 言1.1 课题研究背景和研究意义数据采集是通过查看数据库中存储的大量数据来发现有意义的数据以及新的数据关系、模式以及趋势等,使用模式识别技术,实现精确的统计过程。数据采集系统是结合基
10、于计算机测量软硬件产品来实现灵活的、用户自定义的测量系统。随着网络Internet技术的快速发展,网络通信传输在数据采集方面也起到了重要作用。目前Internet技术主要用于信息交流,比如说E-mail、购物、聊天、Web浏览等,以及进一步发展的电子商务等等,这些技术方式仅仅只是停留在了企业与企业或者企业与个人或个人之间的信息交换上,而我们对于网络的理解也因此不够充分,实际上,网络技术已经在很大程度上应用到了公园控制等领域,时刻影响着我们的生活和环境。【12】生活中很多数据经过现场采集后一定的方式传输到远程端,比如通过接收卫星云图数据我们可以预测未来几天的天气情况,而卫星数据经过获取后是通过了
11、一定的方式和协议传输到了地球上,然后经过处理才得以显示出来,这也可以说是一种网络传输。在工厂车间,很多情况下,数据采集都能通过各种传感器检测得到,然后经过单片机处理得到实际数据,若是将单片机系统连接上网络Internet,则可以在远程位置获得信息数据。而如何让这些电子设备和Internet连接起来,以便于人们能够远程获得这些电子设备的信息并控制它们运行,已成为了目前国内外共同关注的焦点。【1】随着电子和信息技术的高速发展,通过软件方式或者硬件方式将TCP(UDP)/IP协议嵌入到单片机系统已经成为可能,网络化的智能单片机以及智能化的传感器等研究,是国内外竞相抢占制高点的前沿技术之一。本文针对基
12、于网络通信的数据采集技术进行研究,包括工作原理、工作方法以及具体的发送接收方式实现,对于电子设备网络化,实现远程监测和控制设备仪器的运行等方面具有重要意义。1.2 数据采集系统发展现状数据采集系统始于20世纪50年代,美国为了实现在军事测试中不依靠相关的测试文件,由非熟悉人员进行操作,并且测试任务由测试设备高速自动完成,而研发了用于军事上的数据采集系统。大约在60年代后期,国外用于专用系统的成套数据采集设备进入市场。70年代中后期,诞生了以采集器同计算机融为一体为代表的数据采集系统,该系统超过了传统的自动检测仪器和专用数据釆集系统。20世纪80年代随着计算机的普及和发展,数据采集系统空前发展,
13、工业计算机、单片机和大规模集成电路的组合,使系统的成本、体积减小,功能成倍增加,数据处理能力逐步加强。【15】该时期己开始出现通用的数据釆集与自动检测系统。一般来说,数据采集系统分为两类:一类是由通用接口总线和计算机、仪器仪表和采集器等构成,如国际标准ICE625 (GPIB)接口总线系统;另一类由标准总线和计算机、数据采集卡构成,如ETD总线系统。20世纪90年代以来,国际上一些技术先进的国家,数据采集系统已在井下作业、石油开采、现场实时监控和航空技术等领域被广泛应用,出现了高性能、高可靠性的单片机数据采集系统,如有的DAS产品精度可以达到24位,甚至有的DAS产品速度可以达到每秒几亿次以上
14、。【14】现阶段的数据采集系统采用更先进的模块化结构,根据不同的应用需求,运用简单的增加和更改模块的方法,与系统编程相结合就可扩展或修改系统,最终迅速组建成一个新的系统。由于屏蔽性、高密度、针孔式的连接器和卡式模块的应用,使其稳定性及可靠性得到充分保障,但其昂贵的价格阻碍了它在自动化领域的普及。目前,以Internet为代表的计算机网络通信的发展和应用取得了空前的突破,网络化采集和控制技术也随着网络技术的发展而迅速成长。基于网络通信的数据采集系统应运而生,且在计算机网络技术发展背景下,表现出了空前的发展势头,具有采集效率高、采集实时性高、便于收集和整理数据等特点,对于各行工业领域的数据采集都具
15、有非常重要的意义。随着IT技术和互联网技术的飞速发展,为保障用户的投资,适应未来技术发展的趋势,施耐德电气公司第一个推出了应用于工业控制领域的、开放的TCP/IP以太网、Modbus TCP/IP协议,该技术采用了 IT行业广泛应用的TCP/IP协议,底层协议釆用开放的Modbus,第一次真正地的实现了 IT网络和工业数据采集与控制网络的融为一体,使用户彻底摆脱了各种行业的工业数据采集与控制网络的限制和束缚,从而进入了工业控制领域的一种新境界。【3】电子信息技术的高速发展,通过软件或硬件方式可以将TCP (UDP) /IP协议嵌入到单片机。目前网络智能化单片机在国内外占据前沿地位,而近几年交换
16、式以太网技术的出现更大程度的提高了以太网的确定性,利用交换技术,将一个较大的网络分隔成为各个相对独立的冲突域,使冲突只能在一个相对较小的区域内发生,这样就大大地减小了冲突发生的概率,从而提高了网络的实时性和确定性。【2】以太网所显示的优势,使其能够满足数据采集及控制对实时性、抗干扰性、可靠性的严格要求,它己经被证明是未来数据采集与控制网络的最佳解决方案,其应用于现场设备监控也是控制网络发展的趋势。 1.3 论文主要研究内容本文通过查阅文献资料,在现有条件的基础上,开发设计出了单片机的网络通信数据采集系统,并实现了上位机界面设计,本文研究具有较强的工程背景和应用价值,具体研究内容包括:(1)基于
17、网络通信的单片机数据采集系统基本原理和基本方法研究。随着网络技术的发展,单片机的网络智能化得到大量的应用,本文单片机连接网络Internet的基本原理进行了研究,并提出了具体的连接方法;(2)基于网络通信的单片机数据采集系统实现。主要包括单片机数据采集的工作模式、单片机发送程序设计、中间传输媒介网卡芯片模块的配置与设计等;(3)基于网络通信的数据采集系统上位机软件设计。单片机与上位机之间通过TCP/IP协议实现了网络通信,本部分对TCP/IP协议进行了研究,并在此基础上通过windows socket套接字实现了网络通信,设计了上位机数据采集软件;(4)对数据采集系统进行了试验调试,并分析了过
18、程中遇到的各种问题以及解决方法,对全文工作内容进行了总结和展望。2 基于网络通信数据采集系统基本原理和方法基于网络通信的数据采集系统分为硬件部分和软件部分,硬件部分实现模拟量数据采集,包括数据采集终端、网络传输通道、上位机等构成。本文对于具体的硬件采集电路不做具体研究,以单片机作为媒介,实现单片机与计算机之间的网络通信。本章将具体分析数据采集系统的基本原理和基本方法,为第三章数据采集系统工作模式做好铺垫。2.1 基于网络通信数据采集系统基本原理实现单片机系统接入网络Internet这种方式并不复杂,现有的互联网设施已为我们提供了现成的中间传输媒介,我们只需要将单片机与这些中间的传输媒介连接上就
19、可以使系统介入Internet了。【11】但是,要将单片机系统接入到Internet中必须从以下两方面进行工作:一是在硬件上,给数据采集系统的主控制器即单片机加上一个网络接口;二是在软件上提供单片机与远程计算机通信的通信协议。当给一个系统配上一个以太网网卡芯片,并提供相应的TCP/IP协议和IEEE802.3协议时,这个系统就可以通过以太网连接上Internet;当给一个系统配上一个DTE/DCE接口设备,并提供相应的TCP/IP协议和PPP协议,那么这个系统就可以通过Modem连接Internet;当给一个系统配上具有无线收发功能的网络接口RF,并提供相应的TCP/IP协议和IEEE802.
20、11协议,那么这个系统就可以通过无线方式连接Internet。由此可知,如果要想让单片机系统连接上Internet,其关键是实现网络通信接口并提供相应的网络协议。【9】2.2 基于网络通信数据采集系统基本方法目前来说,有两种方法可以实现单片机系统连接网络,具体分别叙述如下:(1)利用网络控制器/网卡(NIC)实现网络接口,然后由单片机来提供相应的通信协议。比如,将单片机与网卡ZNE-100模块组合在一起,ZNE-100模块内部集成了TCP/IP协议栈,这样就可以轻松实现嵌入式设备的网络通信和传输功能。采用这种方法的成本非常低廉,但是其软件设计比较复杂。然而,对于ZNE-100网卡模块接口,并不
21、需要像计算机那样提供全套的网络通信协议,只需要根据特定的应用要求,提供一个TCP/IP协议族的子协议集即可。【7】(2)利用具有协议栈结构的芯片和PHY(phyceiver物理层的接收器)来实现网络接口,主控器只负责向协议栈结构芯片的某个寄存器里存放适当的数据。在这种方法中,网络协议是根据协议栈结构的芯片硬件实现的。目前这种芯片有美国Seiko Instruments公司生产的ichip S7600A芯片,韩国WIZnet公司生产的i2chip W3100A芯片等。在这里,我们以i2chip W3100为例来说明这类芯片的硬件结构是如何实现网络协议的。图2-1 W3100芯片硬件结构W3100
22、芯片结构示意图如图2-1所示,其中分为四个部分:与单片机接口部分(MCU interface)、协议引擎(protocol engine)、存储器(DPRAM)和MII接口部分。其中MII接口部分接PHY。实现网络协议的部分主要是靠其协议引擎,在其内部结构中具有以下一些与网络协议相关的寄存器:命令寄存器C-CR,它的各位分别表示系统初始化、通道socket初始化、建立连接、侦听、接收、发送、关闭等命令。具体地,将某一位置1就可以发出相应的命令。C-DIR为目的IP地址寄存器,C-DPR为目的端口地址寄存器,C-TOSR为服务类型寄存器,对应于IP报头的TOS字段,C-IPR为IP协议寄存器,对
23、应于IP报头的协议字段,CSPR为源端口寄存器,C-SSR socket为状态寄存器,GAR为网关地址寄存器,SMR为子网屏蔽寄存器,SHAR为源硬件地址寄存器,SIPR为源IP地址寄存器等。在这些硬件寄存器上,程序开发人员只需要将相应的数据存入这些寄存器中,并按照一定的顺序开启相应的命令,那么就可以按照标准协议连接上网络了。而且芯片开发商还提供了芯片的软件开发包,设计者只需要调用其中的函数即可实现网络通信。由此可见,这种方法设计简单,使用方便,但是其价格一般都比较昂贵。【4】本文将根据第一种方法,将单片机与网卡芯片ZNE-100模块进行组合,然后建立相应的通信协议,实现单片机网络智能化,与P
24、C机远程通信。3 基于网络通信的数据采集实现3.1 数据采集工作模式数据采集系统主要分为两个部分:一是单片机终端数据发送部分,完成数据的发送功能;二是PC机端数据的接收部分,实现通过网络连接接收单片机终端发送的数据,并在PC机上显示数据、处理数据,以监测和控制相应的执行机构。【5】数据采集系统工作模式如图3-1所示:单片机终端网卡芯片PC机接收数据并显示Internet网络图3-1 数据采集系统工作模式由图可知,单片机发送数据后,经过网卡芯片以及相应的网络协议,通过网络方式被PC机端结构,然后显示在PC机上,经过数据处理后作为参考,以监测和控制远程部分。3.2 单片机发送端程序设计(1)MCS
25、-51单片机串行通信工作方式MCS-51单片机共有四种串行通信工作方式,分别成为方式0、1、2、3。其中方式0是把串行口作为同步移位寄存器使用,这时以RXD(P3.0)端作为数据移入的入口和出口,而由TXD(P3.1)作为提供移位脉冲的端口。【13】方式1是10位为一帧的异位串行通信方式,方式2是11位为一帧的串行通信方式,方式3通信方式也是11位为一帧的串行通信,其过程与方式2相同,但不同的是其波特率。(2)单片机发送端程序发送主程序:ORG 0023HAJMP ACINTORG 8030HMOV TMOD,#20HMOV TL1,#0F3HMOV TH1,#0F3HSETB EACLR E
26、SMOV PCON,#00HSETB TR1MOV SCON,#40H ;置串行口工作与方式2,允许接收MOV SBUF,#40HSOUT1: JNB T1,$ CLR T1 ;T1清零 MOV SBUF,#00HSOUT2: JNB T1,$ CLR T1 ;T1清零 MOV SBUF,#40HSOUT3: JNB T1,$ CLR T1 ;T1清零 MOV SBUF,#1FH ;启动发送 MOV DPTR,#4000H MOV R7,#20H SETB ES ;启动ESAHALT:AJMP $中断服务程序: ORG 8100HACINT: MOVX A,DPTR CLR T1 ;T1清零
27、MOV SBUF,A ;启动发送 DJNZ R7,AEND CLR ES ;禁止串行中断 CLR TR1 ;启动T1AEND: INC DPTR RET13.3 网卡芯片模块(1)ZNE-100网卡芯片介绍ZNE-100是广州致远电子有限公司开发的一款工业级嵌入式网络模块,它内部集成了TCP/IP协议栈,用户利用它可以轻松实现嵌入式设备的网络功能,不需要了解复杂的网络知识以及TCP/IP协议,节省人力物力和开发时间,使产品更快的投入市场,增强竞争力。该产品用于串口与以太网之间的数据传输,可方便的为串口设备增加以太网接口。可用于串口设备与PC机之间,或者多个串口设备之间的远程通信。具有以下产品特
28、性:Serial (TTL)接口转10M Ethernet接口,Serial最大波特率为115200 bps;可利用Web browser和Windows utility 轻松进行设定;TCP Server、UDP Server作业模式;支持动态(DHCP)或静态获取IP地址;尺寸小(4431.5mm)。具有32位ARM7 CPU,16KB RAM,128KB FLASH,10M以太网接口(使用排针方式引出),1.5KV电磁隔离,串口TTL电平方式,波特率300115200 bps,串口任意校验,串口数据位5、6、7、8可设定,串口停止位1、2位可设定, 支持TCP/IP协议包括:ETHERN
29、ET、ARP、IP、ICMP、UDP、TCP、HTTP、DHCP,工作方式可选择为TCP Server或 UDP Server,工作端口可设定,可使用配置工具ZnetCom Utility for Windows98/me/NT/2000/XP进行配置,输入电压 5V DC,功耗低,最大工作电流 90 mA等。(2)ZNE-100模块硬件电路如图3-2所示为ZNE-100的模块硬件电路,可知其具有两排外引管脚,左边一排是12针,右边是11针,分别编号123。此外,ZNE-100模块上具有三个孔,用于恢复出厂设置和升级固件。图3-2 ZNE-100模块电路图表3-1 ZNE-100模块管脚定义引
30、脚意义引脚意义1Ethernet TX+2Ethernet TX-23保留3Ethernet RX+22保留4Ethernet RX+21保留5连接显示LED20保留6TXD19EHTER_TXD_LED7RXD18保留8485_TXD_EN17保留9保留16保留10nRST模块复位15EHTER_RXD_LED11GND14VCC(+5V DC)12GND13VCC(+5V DC)表3-1所示为ZNE-100网卡芯片模块的具体引脚定义,其中Ethernet TX+、Ethernet TX-、Ethernet RX+、Ethernet RX-管脚是以太网信号端口,TXD、RXD是串口信号端口,
31、管脚5、16、19为LED信号口,方向为输出,485_TXD_EN是RS485发送控制端,方向为输出,保证RS485半双工传输,发送数据时为高电平,接收数据时为低电平,nRST为模块复位脚,低电平有效,在该引脚输入一个大于20us的负脉冲即可实现模块复位(其中模块内部有上电复位电路,该管脚可以悬空)。(3)ZNE-100模块评估板ZNE-100模块评估板如图3-3所示,其中指示了各个按钮的功能和作用,模块评估板可以直接用作网卡芯片,连接到单片机上实现网络通信。图3-3 ZNE-100模块评估板3.4 网卡芯片软件配置在对ZNE-100进行模块软件配置之前,需要保证用户的PC机内具有以太网卡,而
32、且PC机与ZNE-100模块需要在同一个网段内。ZNE-100模块在生产厂家出厂时设定了一个默认的IP地址(192.168.0.178)和网络掩码(255.255.255.0),用户需要计算判断PC机是否与模块在同一网段,判断公式为:用户PC机IP地址比上PC机网络掩码,看其是否等于ZNE-100模块的IP地址比上模块的网络掩码。如果不想等,则需要修改PC机IP地址,方法是:首先进入操作系统,然后使用鼠标点击任务栏的开始设置控制面板(或在我的电脑里面直接打开控制面板),双击网络和拨号连接(或网络连接)图标,然后单击选择连接ZNE-100模块的网卡对应的本地连接,单击右键选择属性,在弹出的常规页
33、面选择internet协议(TCP/IP),查看其属性。选择使用下面的IP地址,并填入IP地址192.168.0.55,子网掩码255.255.255.0,默认网关192.168.0.1(DNS部分可以不填)。点击该页面的确定及本地连接属性页面的确定,等待系统配置完毕。【16】此后,配置了PC网关,即可对其进行模块软件配置。首先安装厂家给的配置软件,然后根据安装好的配置软件进行配置,具体过程可以查阅ZNE-100使用手册,此处不予详述。4 上位机软件设计4.1 TCP/IP协议TCP/IP协议是Transmission Control Protocol/Internet Protocol的简写
34、,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。TCP/IP协议有底层和上层之分,底层协议规定了计算机硬件的接口规范,上层协议规定了软件程式必须共同遵守的一些规则以及程序员在
35、写程式时使用的统一标准。TCP/IP共有100多个协议,其中用得最多的包括SMTP(电子邮件协议)、FTP(文件传输协议)、TELNET(远程登陆协议)等。TCP/IP网络层协议的核心是IP协议,IP协议具有两个重要特点,一是提供五连接的数据报传输机制,虽然不能保证传输的可靠性却简单有效,二是提供在同一物理网络中的对点通信,决定一条从信源机到信宿机的传输路径。IP协议的主要功能是IP数据报传送以及IP路由选择,交换的数据被封装在若干个IP包中,在每一个IP包的报文件中都包含有源机器IP地址、目的机器IP地址、校验和以及其他的一些信息。校验和是根据IP报文中的数据计算出来的,IP包的接收方可以根
36、据它来判断报文在传输过程中是否由于传输线路噪音等原因而受到破坏。【8】TCP是一种面向连接的传输层协议,它可以提供可靠性高的服务。通过使用序列号和确认信息,TCP协议能够向发送方提供到达接收方数据包的传送信息。当传送过程中出现数据包丢失的情况时,TCP协议可以重新发送丢失的数据包直到数据成功到达接收方。当出现网络超时时,TCP协议还可以识别重复信息,丢弃不需要的多余信息,使网络环境得到优化。如果发送方传送数据的速度大大超过了接收方接收数据的速度,那么TCP协议又可以采用数据流控制机制来减慢数据的传送速度,协调发送和接收方的数据响应。而与其并列的UDP协议(User Datagram Proto
37、col用户数据报协议)是五连接的,但它传输速度快,传输效率高,特别适合一次传输少量报文,UDP直接建立在IP协议之上,相对于TCP协议来说简单得多。【10】总之,IP的工作就是把原始数据从一地传送到另一地,TCP的工作就是管理这种流动并确保其数据是正确的。4.2 数据传输程序设计本文利用VC+程序的MFC框架建立数据传输协议,采用客户端/服务器模式建立通信,其中服务器端和客户端程序基本相同,不同的是选择的通信套接字。【6】PC机的程序流程 开始图如图4-1所示。初始化PC机后,创建网络连接,查看网络是否正常,当网络处于正常工作状态时,PC机向网络数据釆集终端单片机发送 $指令,当单片机接收到该
38、指令后,读取A/D转换的结果,通过网络传输给PC机,PC机接收该数据后,读取并显示接收到得数据,查看数据是否接收完,若接收完,再次等待接收网络传输来的数据,如此循环的接收并显示数据。 初始化 创建网络连接 网络是否正常? N Y发送”$”指令PC机接收数据读取并显示接收到的数据数据是否接收完? NNNnNN Y图4-1 PC机程序设计流程下面讲述客户端的具体建立过程:(1)基于Visual Studio平台,建立基于对话框和WINDOWS SOCKETS的通信工程。Socket函数采用客户/服务器的通信机制来实现网络之间的连接和数据交换,在TCP/UDP测试环境下进行客户端通信程序设计。Soc
39、ket函数建立指定的地址格式、数据类型和协议下的套接口,地址格式为AF_INFT (唯一支持的格式),数据类型SOCKET_STREAM表示建立流式套接口。Socket的通信流程图如图4-2所示所示。 开始创建Socket连接接受、分析命令是否开始采集 启动数据采集发送数据 开始发送控制命令 创建Socket连接 处理数据 接收数据YNNY (a)服务器端/网络采集终端 (b)客户机端/PC机图4-2 Socket套接字通信流程(2)在生成的对话框中选择一些适当的空间如按钮、文本框、IP工具等,做好数据接收界面;(3)利用Class Wizard为对话框中各个控件添加好相应的控件变量;(4)打
40、开Class Wizard对话框,确定Class Name为CTalkDlg,OBJECT IDS是IDC_COMBO_TYPEM,选择MESSAGE为CBN_SELCHANGE;(5)为了应用程序能够获得并响应Socket事件,应该创建用户从Casyncsocket类继承的派生类。选择Insert/New Class,创建新类CMySocket,选择基类为Casyncsocket;(6)向派生类中添加成员变量,用作指向父对话框的指针,类型为CTalkDlg*,变量名为m_pDlg。并添加成员函数SetParent(CTalkDlg *pDlg)。(7)对套接字添加处理函数,在其成员函数Set
41、Parent中添加代码如下:Void SetParent(CTalkDlg *pDlg)m_pDlg=pDlg;(8)在CMySocket类中添加OnConnect,OnClose,OnReceive函数,添加如下代码:m_pDlg-OnConnect(),m_pDlg- OnClose(),m_pDlg-OnReceive();(9)将程序头文件添加到套接字类中,代码为:#include “TalkDlg.h”;(10)向CTalkDlg中添加套接字的变量对象,对话框需要一个用于连接套接字,向CTalkDlg类中添加变量m_sConnectSocket,类型为CMySocket,对对话框进行
42、初始化,即在OninitDialog中加入以下代码:m_cmbType.SetCurSel(1);/初始为192.168.1.25m_strServName=” 192.168.1.25”;/初始化端口为4000m_nServPort=4000;UpdateData(False);m_ sConnectSocket.SetParent(this);(11)开始建立发送端和接收端的连接,双击对话框的“连接”,对于单机连接按钮事件添加如下代码:UpdateData(True);m_sConnectSocket.Create();/连接服务器m_ sConnectSocket.Connect(m_s
43、trServName,m_nServPort);(12)为了完成连接,需要添加套接字事件处理函数,如下为具体代码:Void CTalkDlg:OnConnect()GetDlgItem(IDC_EDIT_MSG)-EnableWindow(True);GetDlgItem(IDOK)-EnableWindow(True);GetDlgItem(IDC_STATIC_MSG)-EnableWindow(True);GetDlgItem(IDC_BTN_CLOSE)-EnableWindow(True);(13)现在已经连接好了,但不能实现通讯,把相应的消息添加到相应的列表框中,双击“发送”按钮,
44、添加如下代码:Int nLen;Int nSent;UpdateData(True);If(!m_strMsg.IsEmpty()nLen=m_strMsg.GetLength();nSent=m_sConnectSocket.Send(LPCTSTR)m_strMsg,nLen);if(nSent!=SOCKET_ERROR)M_listSent.AddString(m_strMsg);UpdateData(False);ElseAfxMessageBox(“消息发送错误”,MB_OK | MB_ICONSTOP);m_strMsg.Empty();UpdateData(False);(14
45、)当套接字的OnReceive事件被触发,表明一个消息已经能够收到。在OnReceive函数中添加如下代码:Char *pBuf=new char1025;Int nBufSize=1024;Int nReceived;CString strReceived;nReceived=m_sConnectSocket.Receive(pBuf,nBufSize);if(nReceived != SOCKET_ERROR)pBufnReceived=NULL;strReceived=pBuf;m_listReceived.AddString(strReceived);UpdateData(False);ElseAfxMess