關於Config File VIs的使用

各位先進好,我剛初學labview不久,現在遇到一個問題想問各位大大

這是我寫的要修改密碼的程式

user-edit.vi

user-edit1.vi

這2個程式只差在第一個程式少一個Close,第一個可以修改成功,第二個卻不行

另外大大們是否可以對於這程式給予一些建議@@"...

我會虛心受教的

這是我的第一po請多指教= ="

另附上一個檔user.txt請放於C槽..

 

兩個都正常....

不曉得是哪裡的問題

可以貼上 Block Diagram 的圖嗎?
我手邊只有 LabVIEW 7.1 不能開啟。

user-edit-7.1.vi

user-edit1-7.1.vi

已將檔案轉成7.1

第一次轉檔,好像有warning不知道有沒有關係

我想應該是在 multi-thread 時,時序上引發的問題:

![](upload://7giNl3F5T0hMpW4NdxYFHC5LZLq.jpeg)

請看一下 紅框1 及 紅框2。

其中  紅框1,是在兩個程式唯一的差別,一個有,另一個沒有。

兩個  紅框1 及 紅框2。在執行上,它們是處在 multi-thread 的狀態,
你不能保証誰會被先執行。

所以在你發現不能去做寫入之時,可能是發生了底下的情況 :

  1.  紅框2 : Open Config. File
  2.  紅框1 : Close Config. File
  3.  紅框2 : Write Config. File
  4.  紅框2 : Close Config. File

在  紅框2 想要去處理 Config. File 而有所動作時,可能檔案
(Config. File Refnum) 已經被 紅框1 給關閉了!!!

 

 

在這邊,有兩個觀念是要注意的:

  1. 一般我們不管是在處理任何資料時,不管是 File 或是 VISA 或是
    其它等等的需要做 Open 、Close 等,如果有重覆性工作時,我們會把
    該資源的 Open 及 Close 等動作放在 Loop 最外層。

    最主要是為了增加效率!
    (當你去賣場買東西時,不會想要去個兩、三趟,
    將原本可以一次買完的東西,分成兩、三次買完吧?)

  2. 另一方面,當你同時間有兩、三個地方在對同一個檔案做不同的事情時,
    (就如同 紅框1 及 紅框2 所發生的事)
    就可能會發生在時序上競爭的現象。

    儘量讓 Config. File 的 refnum 單一條 data flow 流傳下去,
    不要分流 (即使之成 multi-thread) (除非你有這個需求)
    這樣可必免上述的問題發生。
Airbolt38831.3913078704

雖然不能完全看懂,不過我大概了解意思了

難怪用燈炮去執行可以正常,剛開始接觸labview,沒有想到時序的問題

labview裡有很多元件像file這樣有open和close一系列的元件

我大概懂得它使用的意義了

謝謝喔^^

orange110838830.5796296296

抱歉,文章有些零亂,我重新排版過了,看看有不懂的地方再提問。

LabVIEW 是一以「Data Flow」為重的 程式語言,
同時亦具有 multi-thread 功能。

方式很簡單,"一條 Data Flow 分成獨立的兩條 Data Flow ",
它們便會以 multi-thread 的方式去執行。

當然啦,你不能預期誰會被先執行。