labview的深入探索----利用DDE實現(xiàn)進程間的數(shù)據(jù)交換之二
客戶端采用REQUEST方式是無法實現(xiàn)服務器發(fā)送和客戶端接收同步的,如果想要實現(xiàn),可以采用ADVISE方式,這種方式下,客戶端類似于中斷方式,服務器發(fā)送端ITEM沒有數(shù)據(jù)變化時,接收端一直處于等待狀態(tài),一旦服務器端發(fā)生數(shù)據(jù)變化,立即執(zhí)行數(shù)據(jù)接收.
服務器端程序框圖:(發(fā)送數(shù)據(jù),100MS更新一次)

客戶端接收數(shù)據(jù)未采用任何DELAY,同樣保持100MS的接收速度.
打開對話-->START ADVISE ITEM--->CHECK ADVISE--->STOP ADVISE-->關閉對話

這樣就實現(xiàn)了發(fā)送和接收的數(shù)據(jù)交換同步.
我們知道服務器和客戶端的數(shù)據(jù)交換是相互的,如何實現(xiàn)客戶端發(fā)送數(shù)據(jù),服務器接收數(shù)據(jù)那,這需要客戶端使用POKE VI, 服務器端使用CHECK ITEM VI.
服務器端程序框圖

如果設置成FALSE,則立即結(jié)束本次循環(huán),實際是查詢方式.
客戶端程序框圖:

當客戶端沒運行POKE時,服務器處于等待狀態(tài),這樣就實現(xiàn)了雙方的同步.
DDE本身還支持握手方式通訊,不過非常復雜,很少使用.
另外,客戶端還可以向服務器發(fā)送命令字符串,要求服務器執(zhí)行命令.不過LABVIEW的DDE不支持命令,就不舉例了.比如EXCEL可以作為服務器,客戶端可以發(fā)送"OPEN" "SAVE"要求EXCEL打開和存儲文件.
評論