一种程序间数据交换与同步方法与流程

文档序号:29637485发布日期:2022-04-13 17:31阅读:120来源:国知局
一种程序间数据交换与同步方法与流程

1.本发明属于自动测试测量领域,特别涉及一种程序间数据交换与同步方法。


背景技术:

2.在自动测试测量领域中,经常需要将仪器仪表中的测量结果采集并显示出来。而在开放式自动测试系统中,数据采集程序是一个独立可执行的程序,数据显示平台是一个独立的程序,那么两者之间的数据交换与同步就成了开放式自动测试系统设计重点和难点。本文中开放式自动测试系统主要用于电子元器件、射频组件、微波组件等电子产品的研发、调试与生成,确保合格的被测对象才能投入使用。开放式自动测试系统一般由自动测试设备、通用测试平台、可扩展的测试程序集和测试环境。
3.自动测试设备包括:测试测量仪器(如信号发生器、矢量信号源、频谱分析仪、矢量网络分析仪、示波器、噪声分析仪、阻抗分析仪等)、计算机、开关矩阵。
4.通用测试平台包括:数据显示程序、数据库、数据报表等。
5.可扩展的测试程序集包括:数据采集程序。
6.开放式自动测试系统具有灵活调用第三方组件,减少测试用例开发工作量;实现测试用例的标准化,降低了测试用例对个人的依赖;提供测试用例复用,用例和脚本能够被复用,以保护测试人员的资产;提供可伸缩的测试执行框架,提供自动测试支持;提供一键式测试执行,降低测试人员专业要求;提供柔性生产制造框架,可快速切换生产线,增强产线适应性;提供可扩展的测试数据管理,帮助用户统一管理测试数据,降低测试数据和测试脚本之间的耦合度等优点。
7.应用程序之间的数据交换(互相通讯)一直是困扰广大程序员的难题,尽管已经出现了各式各样的解决方案,但迄今为止没有哪一种方案是完美无缺的。在数据交换通信中我们主要面临的问题有:
8.(1)数据交换通讯问题:数据交换尽量简单方便,通讯时尽量不用修改现有程序代码结构或只需要编写极少的代码工作量即可;
9.(2)数据交换效率问题:耗时少,资源占用少;
10.(3)数据同步问题:能控制数据发送方的节奏。
11.(4)数据安全性问题:尽量以内存或加密的方式进行数据传输,防止窃取、破译等不法操作。
12.(5)数据可靠性问题:数据发送方在发送数据之前必须确认数据接收方是否已经准备好数据接收工作,准备好之后方可发送数据。
13.目前,应用程序之间数据交换方法主要有以下几种方法:
14.(1)共享:在硬盘上建立一个文件,一个应用程序往该文件里写数据(可以不关闭文件,但必须刷新缓冲区),另一个应用程序以共享方式打开这个文件并读取其中的内容,这便是最简单的一种数据交换方式。对于网络用户而言,只要两台终端上安装的都是win311for workgroup或windows 95(或nt),则只要设置一下目录共享,映射成网络驱动
器,同样可以简单地实现数据交换。共享这种方法的主要缺点表现为:只能采取轮询的方式获得最新数据(效率低下),网络映射的驱动器绝对不能变动或取消(可靠性差),所以这是一种“低级”的通讯方式。
15.(2)dde:每个windows程序员都不会对dde(动态数据交换)感到陌生,它是最早的基于windows的数据交换方法,有三种方式可供选择:冷连接、温连接和热连接。一般都是由客户端向服务器端发出连接申请,并且必须指明服务器端的名字和标题。在连接建立后,数据可以双向流动。典型的例子如抓图软件snagit,它提供了dde接口,能够让其它应用程序来控制它。dde是完全向后兼容的,从16位平台转到32位,源代码几乎不用修改。
16.dde还有网络功能。使用过win311 for workgroup的人大概都还记得,它自带一个非常吸引人的小程序“chat”,能使两台计算机通过网络实时交谈,这在当时几乎是一项创举。可是很少有人知道“chat”使用的是一种特殊的dde,即netdde。它的基本工作原理仍然是dde,但它能使一台计算机向在同一个网络中的另一台终端发消息,而不像普通dde只能局限在同一台机器上。与其它的数据交换方式相比,dde已不够先进,而且microsoft也不再积极支持dde,所以它的前景不被看好。
17.dde这种方法的主要缺点表现为:必须要先指明服务器端的名字和标题,然后才能建立连接,无法动态修改服务器端的名字和标题。
18.(3)wm_copydata:windows消息wm_copydata功能强大,知之者却甚少。它的确切定义是:一个应用程序向另一个应用程序传递数据时所发出的消息。众所周知,windows在很大程度上依赖于消息机制,这样,可以把数据放在消息中一起发送出去,我们只要调用sendmessage(),以对方窗体的句柄作为第一个参数,以含有指向实际数据的指针结构的地址作为第二个参数,就可以把整个数据块当作消息发向另一个应用程序。wm_copydata的工作核心是先创建了一个文件映射的对象,将发送方的原始数据先拷贝至映射文件,然后再在接收方对这个映射文件打开一个“视图”。
19.wm_copydata这种方法的不足之处在于:必须要有一个窗体来接收消息和数据(缺乏灵活性),数据在使用之前先得拷贝到一个映射文件(浪费资源)。
20.(4)netbios:从80年代开始,netbios就是开发client/server类程序的标准接口。而当时其它的解决方案几乎都是从unix系统上发展而来的。当然,对于今天的用户而言,netbios已不是唯一的选择,他们可以从各种方案中择优选取。在windows 95和nt平台上,可以通过api函数netbios()来调用netbios功能。
21.netbios兼容以下几种低层协议:netbeui协议(nbf)、nwlink netbios(nwnblink)、netbios over tcp/ip(netbt)。netbios的优点是速度较快,缺点是可靠性较差。
22.(5)标准的sockets和winsock:sockets是在unix系统上提出来的,一开始主要是用于本地通讯,但很快就应用在client/server体系上了。它的内核很简单:你可以将一个socket看作是一个双向的节点,一个应用程序可以通过它先与另一个程序建立连接(建立在一个双方都认可的端上,以便于区分同时运行的几个通讯线程),然后就可以彼此交换数据了。
23.微软公司在其基础上创建了winsock,专门用于windows接口,与socket完全兼容。近年来基于tcp/ip协议的网络大行其道,socket也随之获得了更加广泛的应用。
24.如今,sockets已在internet上获得了最广泛的应用,主要是因为它的可移植性好:socket应用程序无论在任何平台间都能互相进行通讯(不管是pc机还是macintosh,也不管是windows平台还是unix平台)。而最新推出的winsock2.0,已不仅仅只基于tcp/ip协议,还可基于其它几种传输协议(如ipx)。
25.socket的缺陷是它工作在通讯的低层,实现起来较为复杂,同步控制难实现。另外像dde一样,两者通讯必须指明服务器的名字和标题,然后才能建立连接,无法动态修改服务器端的名字和标题。
26.(6)mailslot和pipe:mailslot和pipe有很多相同点,即都是高层的、基于内存的通讯系统。mailslot由server端创建。然后,client端就可以像打开文件一样打开这个mailslot,再通过api函数writefile()来将数据写入到消息队列中。
27.与此相类似,pipe也是由server端创建的,接着,client端就可以通过一般的文件api读写数据。pipe分两种,即命名pipe和匿名pipe。匿名pipe是以句柄而不是以名字来进行标识的,因而也就限制了它只能在同一台机器上通讯,而不能应用于网络。命名pipe则提供了以名字来进行标识,所以能在网络上的其它任何地方打开它。需要注意的是:命名pipe只能在winnt而不是win95上创建(即server端),client端则可以是任意平台。
28.pipe既可以单向通讯也可以双向通讯,mailslot则只能单向通讯。client端可以发送消息给mailslot,但不能接收消息;如果想要接收消息,则只能创建一个新的mailslot。但mailslot有一个很大的优点:它支持数据广播。也就是说,若client端发送一条消息,则整个网络中的同名对象都能收到。这是因为mailslot的名字的作用域只是在本台机器上,所以可在不同机器上创建同名的mailslot,当client端发来消息时则每一台机上的mailslot都得到了该消息的一份拷贝,并在本机上作出相应的反应。mailslot的最大缺陷是不可靠,因为它的数据是以数据报格式来传送的,网络错误或负荷过重都会导致数据丢失。更无法解决数据同步的问题了。
29.以上几种方法就是目前程序间数据交换通信所用到主要技术,每种技术都有自身的优缺点,但是没有一种方法既能解决数据交换问题,又能完美解决程序间数据同步,可靠的问题。


技术实现要素:

30.本发明的目的在于克服现有技术的不足,提供一种只需一个简单的函数就能实现数据交互,解决了程序间数据同步的问题,实现了程序间界面同步显示的效果的程序间数据交换与同步方法。
31.本发明的目的是通过以下技术方案来实现的:一种程序间数据交换与同步方法,包括如下步骤:
32.s1、数据显示程序将数据采集程序的固定配置信息文件拷贝到数据采集程序所在的位置,并启动数据采集程序;
33.s2、数据采集程序从仪器仪表中读取测量数据并将采集到的测量数据进行编码;
34.s3、调用数据交换函数:showdatatosg()或showdatatovw(),数据交换函数showdatatosg()或showdatatovw()从数据显示程序的配置信息文件中读取到数据显示程序的标题并查找数据显示程序的窗体句柄;
35.s4、创建或打开内存映射文件并为内存映射文件命名,创建或打开内存映射文件的写操作互斥锁和读操作互斥锁;
36.s5、通过写操作互斥锁查看内存映射文件是否可以进行写数据操作,如果没有写数据操作权限,数据采集程序将一直等待数据显示程序释放写操作互斥锁信号;若在预设时间内仍未接收到数据显示程序释放的写操作互斥锁信号,则数据采集程序强制进入写数据操作;
37.s6、进入写数据操作后,首先将写操作互斥锁锁定,保护内存映射文件单元内存,并通过数据交换函数showdatatosg()或showdatatovw()向内存映射文件中写入采集到的数据,将测量数据存入内存映射文件中;
38.s7、数据采集程序数据利用数据交换函数showdatatosg()或showdatatovw()向数据显示程序发送自定义消息,释放读读操作互斥锁信号,通知数据显示程序数据从内存映射文件中读取数据;数据显示程序接收到自定义消息后,从内存映射文件中取出采集到的测量数据;
39.s8、数据显示程序释放写操作互斥锁,取消对数据采集程序的阻塞,让数据采集程序继续执行,数据采集程序将读操作互斥锁锁定;进行下一条数据的交互。
40.进一步地,所述步骤s2中数据编码包括以下几种格式:
41.第1种编码格式:标头+数据名称+"$"+数据值;
42.第2种编码格式:标头+数据名称+"$"+数据值+"$"+数据显示颜色;
43.第3种编码格式:标头+数据名称+"$"+数据值+"$"+数据上限值+"$"+数据下限值+"$"+显示颜色;
44.第4种编码格式:标头+图片名称+"$"+面板名称+"$"+曲线名称+"$"+曲线类型+"$"+x轴数据+"$"+y轴数据+"$"+显示颜色。
45.本发明的有益效果是:本发明的方法首先简化了数据交换的工作量,只需一个简单的函数就能实现数据交互;再次解决了程序间数据同步的问题,实现了程序间界面同步显示的效果;还有采用自定义消息和内存映射文件方式传输数据,数据安全得到了极大地保护。
附图说明
46.图1为本发明程序间数据交换与同步方法的流程示意图。
具体实施方式
47.本发明的程序间数据交换与同步方法首先将程序配置文件拷贝到数据采集程序(spx)所在路径-》数据显示程序cpx)启动数据采集程序(spx)-》通过在数据采集程序(spx)中调用数据交换函数-》数据采集程序(spx)执行数据交换函数-》数据采集程序(spx)通过配置文件查找数据显示程序(cpx)的窗体句柄-》获取写操作权限,并写入数据-》数据采集程序(spx)发送自定义消息,通知据接收程序(cpx)读数据操作-》数据显示程序(cpx)收到自定义消息后并读走数据-》通知读操作完成并释放写操作权限。具体流程示意图如图1所示,下面结合附图进一步说明本发明的技术方案。
48.如图1所示,本发明的程序间数据交换与同步方法,包括如下步骤:
49.s1、数据显示程序(cpx)将数据采集程序(spx)的固定配置信息文件拷贝到数据采集程序所在的位置,并启动数据采集程序;
50.s2、数据采集程序从仪器仪表中读取测量数据并将采集到的测量数据进行编码;数据编码包括以下几种格式:
51.第1种编码格式:标头(showdatatovw:)+数据名称+"$"+数据值;
52.第2种编码格式:标头(showdatatovw:)+数据名称+"$"+数据值+"$"+数据显示颜色;
53.第3种编码格式:标头(showdatatovw:)+数据名称+"$"+数据值+"$"+数据上限值+"$"+数据下限值+"$"+显示颜色;
54.第4种编码格式:标头(showdatatovw:)+图片名称+"$"+面板名称+"$"+曲线名称+"$"+曲线类型+"$"+x轴数据+"$"+y轴数据+"$"+显示颜色。
55.s3、调用数据交换函数:showdatatosg()或showdatatovw(),数据交换函数showdatatosg()或showdatatovw()从数据显示程序的配置信息文件中读取到数据显示程序的标题并查找数据显示程序的窗体句柄,方便在向数据显示程序发送消息时能够快速找到数据显示程序;
56.s4、创建或打开内存映射文件并为内存映射文件命名,创建或打开内存映射文件的写操作互斥锁和读操作互斥锁;
57.s5、通过写操作互斥锁查看内存映射文件是否可以进行写数据操作,如果没有写数据操作权限,数据采集程序将一直等待数据显示程序释放写操作互斥锁信号;若在预设时间内仍未接收到数据显示程序释放的写操作互斥锁信号,则数据采集程序强制进入写数据操作;
58.s6、进入写数据操作后,首先将写操作互斥锁锁定,保护内存映射文件单元内存,并通过数据交换函数showdatatosg()或showdatatovw()向内存映射文件中写入采集到的数据,将测量数据存入内存映射文件中;
59.s7、数据采集程序数据利用数据交换函数showdatatosg()或showdatatovw()向数据显示程序发送自定义消息,释放读读操作互斥锁信号,通知数据显示程序数据从内存映射文件中读取数据;数据显示程序接收到自定义消息后,从内存映射文件中取出采集到的测量数据;
60.s8、数据显示程序释放写操作互斥锁,取消对数据采集程序的阻塞,让数据采集程序继续执行,数据采集程序将读操作互斥锁锁定;进行下一条数据的交互。
61.本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1