我在"利用DDE实现进程间的数据交换之一"中,谈到了服务器端发送数据和客户端接收数据的方法.

客户端采用REQUEST方式是无法实现服务器发送和客户端接收同步的,如果想要实现,可以采用ADVISE方式,这种方式下,客户端类似于中断方式,服务器发送端ITEM没有数据变化时,接收端一直处于等待状态,一旦服务器端发生数据变化,立即执行数据接收.

服务器端程序框图:(发送数据,100MS更新一次)

Picture
客户端接收数据未采用任何DELAY,同样保持100MS的接收速度.
打开对话-->START ADVISE ITEM--->CHECK ADVISE--->STOP ADVISE-->关闭对话
Picture
这样就实现了发送和接收的数据交换同步.

我们知道服务器和客户端的数据交换是相互的,如何实现客户端发送数据,服务器接收数据那,这需要客户端使用POKE VI, 服务器端使用CHECK ITEM VI.

服务器端程序框图
Picture
如果设置成FALSE,则立即结束本次循环,实际是查询方式.

客户端程序框图:
Picture
当客户端没运行POKE时,服务器处于等待状态,这样就实现了双方的同步.

DDE本身还支持握手方式通讯,不过非常复杂,很少使用.

另外,客户端还可以向服务器发送命令字符串,要求服务器执行命令.不过LABVIEW的DDE不支持命令,就不举例了.比如EXCEL可以作为服务器,客户端可以发送"OPEN" "SAVE"要求EXCEL打开和存储文件.
Picture
阳光与水
5/22/2009 11:18:42 am

阳光与水 2008-11-25 00:10:36
多谢您提供的内容,对我们做实验之前的准备工作很有帮助...我们明天要做DDE实验,书上却没介绍~~实在很感激~~希望能多贴一点此类的内容

Reply



Leave a Reply.