while迴圈在執行時該如何從外部終止

目前是利用LabVIEW來控制一平台,利用廠商已寫好的subvi來透過RS-232溝通,當平台移動時會回傳一個"."的字串,情形是當平台移動停止時會傳一個L的字串,當接收到此字串我才能繼續執行下一步,所以我必須使用while來連續擷取回傳值,直到"L"的字串出現。

但是若是有緊急狀況發生時,我希望能利用程式端下指令使平台停止,平台的停止指令是字串"b",試過了幾種發法,最後發現是被while偵測訊號部分咬住了,我必須等到while的部分結束後才能發送訊號。

不知有沒有方法可以解決此問題,第一次發文如有不清楚的部分請包函一下,感謝。

您在可以第三個frame的while裡面,用event struture包起來,

原本while loop裡面的東西丟到timeout event, 時間給50,

再新增一個event value change(ex : A button),為平台的停止指令:"b"

當按下A button會觸發event value change送出"b",

沒下按鍵時, 則一直執行timeout event,(連續擷取回傳值,直到"L"的字串出現)...

![](upload://4d0IpYvcJ13MjsM1zu9foBRK7tq.jpeg)

![](upload://kcQgiYG4RiiQaAdwvVCHEjJTn1E.jpeg)

garyO40184.6143402778

你迴圈的停止條件現在只有一個,所以,你可以用邏輯OR來增加另一個停止條件。
類似底下這種接法:



<span =bold>garyO您真的太厲害了,目前已經可正常執行了,感謝。不過我到現在還沒把法把Event迴圈摸熟,不知有沒有這方面的教學。不過再次謝謝<span =bold>garyO幫我解決了這次的問題,謝謝!

哈哈 

我也只會這一點皮毛在這個產業混口飯吃而已 

關於event, 您可搜尋此討論區 可得到很多資訊