關於程式架構的問題?

大大們好

小弟又來發問了@@

 

小弟學習使用LabVIEW也有四個年頭了

當初也是自己看著書照著老師想要的要求胡搞瞎搞的把專題搞了出來

老師們是對這樣的結果還算滿意

自己也覺得沒什麼太大的問題,在當時

 

而現在在公司中,公司目前好像有打算做個系統轉移囧

將原本前人寫的系統轉成我使用的LabVIEW,但我發現問題了@@

一是發現自己的邏輯觀念似乎沒有很正確,會發現做了很多無用的白功@@

二是寫的程式發現不夠穩定,常常會出現問題(因為現在的程式都是在做指令解析,所以我設計時就先針對"長度"然後在針對長度內某個特定的"碼"來做顯示的動作)

三是架構,感覺自己寫的程式架構很有問題囧

 

附上程式,還請大大們給予建議,感恩!!

Demo All 0301.vi

1.如果你沒有上過NI的課程,建議你老闆讓你去上NI的課程,會有一定程度的提昇

2.LabVIEW裡有蠻多關於架構的範例,像queue,state machine, producer/consumer.....,建議你多看這搜尋這些範例程式來看

3.目前我用的架構,會有人機介面的event,通常會使用while loop加event structure這樣一個獨立迴圈,然後另外一個獨立迴圈用來擷取或處理資料,儘量把要做的事情,拆成多個不同迴圈,以上提供給你參考

LabVIEW是很方便也容易上手的程式設計語言,也因此吸引多數非資訊科系的工程師所採用。不過很多入門者忽略流程圖的規劃,系統分析與設計更不用說…導致程式邏輯產生隱性問題,不知為何當機,除錯非常困難。一個好的程式設計師應該是在流程圖畫完的時候,最困難的部份就完成了。
試著分析問題,先別急著寫程式,參考範例的解法,依照流程圖,一步步建構sub VI,再整個合體測試。
別急著寫程式…不然真會寫不完 :slight_smile:



Benjamin補充:

[QUOTE=ancle]

1.如果你沒有上過NI的課程,建議你老闆讓你去上NI的課程,會有一定程度的提昇

 

目前小弟還在考慮要不要以LabVIEW為重心的去學習使用,因為公司寫軟體的老大哥覺得學LabVIEW不如花時間學C#或是C來的有用@@a

而現在也因為自己的實力不足導致有些東西小弟弄不出來而增加了老大哥的工作量囧a

 

 

2.LabVIEW裡有蠻多關於架構的範例,像queue,state machine, producer/consumer.....,建議你多看這搜尋這些範例程式來看

 

好的,小弟我會花時間去看看的!

 

3.目前我用的架構,會有人機介面的event,通常會使用while loop加event structure這樣一個獨立迴圈,然後另外一個獨立迴圈用來擷取或處理資料,儘量把要做的事情,拆成多個不同迴圈,以上提供給你參考

 

在一開始做的時候也是有這樣子的用法,但發現會卡在某一while loop迴圈內@@

之前也有想過要不要把現在這個程式在整個重新寫過,但沒時間給我在這樣慢慢寫囧a

不過經大大這樣一說對小弟幫助很大

感恩!!

 

[/QUOTE]tjames11141341.7486805556

[QUOTE=IanTsai]LabVIEW是很方便也容易上手的程式設計語言,也因此吸引多數非資訊科系的工程師所採用。不過很多入門者忽略流程圖的規劃,系統分析與設計更不用說...導致程式邏輯產生隱性問題,不知為何當機,除錯非常困難。一個好的程式設計師應該是在流程圖畫完的時候,最困難的部份就完成了。
試著分析問題,先別急著寫程式,參考範例的解法,依照流程圖,一步步建構sub VI,再整個合體測試。
別急著寫程式...不然真會寫不完 :)
[/QUOTE]

確實,小弟在初學時卻時常常找不出錯誤來導致整個重寫囧a

現在寫是還好,遇到問題大多都還知道問題在哪,只是慢慢的有發現到,好像縱使我知道了問題點在哪裡,但做出來的解決方法感覺其實是又走錯路一樣@@

 

只是LabVIEW有辦法跟C語言做相容性之類的嗎@@?

還是說C與LabVIEW其實是不同領域的東西@@?

感恩!!

[QUOTE=tjames111]

還是說C與LabVIEW其實是不同領域的東西@@?

感恩!!

[/QUOTE]

看到NI RD有一句話,we wrote c, you don't have to ....

[QUOTE=tjames111]確實,小弟在初學時卻時常常找不出錯誤來導致整個重寫囧a

現在寫是還好,遇到問題大多都還知道問題在哪,只是慢慢的有發現到,好像縱使我知道了問題點在哪裡,但做出來的解決方法感覺其實是又走錯路一樣@@

只是LabVIEW有辦法跟C語言做相容性之類的嗎@@?

還是說C與LabVIEW其實是不同領域的東西@@?

感恩!!

[/QUOTE]
首先一個重要的觀念程式語言是一項我們叫電腦如何工作的工具。
C語言是泛用型的語言,早期的LabVIEW是儀控的專用程式。
但是歷經時間的演進,LabVIEW也提供了多樣的函式庫,資料庫,影像處理,網路,事實上一般程式語言可以做到的LabVIEW幾乎都可以做到。
除了在指標陣列這個部分,還是有些需要改進的地方。資料流思考方式也是需要習慣...
基本功練好,程式語言其實是可以訓練的。

[QUOTE=ancle]

1.如果你沒有上過NI的課程,建議你老闆讓你去上NI的課程,會有一定程度的提昇

這個課程是一定要有買LabVIEW的才能去上嗎@@??

3.目前我用的架構,會有人機介面的event,通常會使用while loop加event structure這樣一個獨立迴圈,然後另外一個獨立迴圈用來擷取或處理資料,儘量把要做的事情,拆成多個不同迴圈,以上提供給你參考

不知道是否能請大大放個程式讓我觀摩學習參考參考一下呢??小弟是用8.0的

感恩!!

 

[/QUOTE]tjames11141353.4194907407

[QUOTE=tjames111][QUOTE=ancle]

1.如果你沒有上過NI的課程,建議你老闆讓你去上NI的課程,會有一定程度的提昇

這個課程是一定要有買LabVIEW的才能去上嗎@@??

不用買Labview,但是要錢,重點是...不便宜,我記得課程分Core 1, Core 2 ....

3.目前我用的架構,會有人機介面的event,通常會使用while loop加event structure這樣一個獨立迴圈,然後另外一個獨立迴圈用來擷取或處理資料,儘量把要做的事情,拆成多個不同迴圈,以上提供給你參考

不知道是否能請大大放個程式讓我觀摩學習參考參考一下呢??小弟是用8.0的

感恩!!

 

[/QUOTE][/QUOTE]

[QUOTE=tjames111][QUOTE=ancle]

1.如果你沒有上過NI的課程,建議你老闆讓你去上NI的課程,會有一定程度的提昇

這個課程是一定要有買LabVIEW的才能去上嗎@@??

已經有人回答了

3.目前我用的架構,會有人機介面的event,通常會使用while loop加event structure這樣一個獨立迴圈,然後另外一個獨立迴圈用來擷取或處理資料,儘量把要做的事情,拆成多個不同迴圈,以上提供給你參考

不知道是否能請大大放個程式讓我觀摩學習參考參考一下呢??小弟是用8.0的

其實只要上ni.com的網頁多多搜尋你要的關鍵字就會有蠻多範例的可參考,相信你已經學了四年也有一定的基礎,我也只是經驗比你多一點而已,寫程式部份我覺得人外有人,多看別人的範例程式一定是會有幫助的,共勉之!

感恩!!

 

[/QUOTE][/QUOTE]

1.別把所有程式碼放在一個迴圈裡.應該分幾個While Loop,各個Loop賦予不同功能.
2.利用Queue, Notification,Data Value Reference(DVR),Functional global variable(FGV)...等,進行Loop之間資料傳遞.減少使用global/ local variable.
3.選擇適當的Design Pattern.


Benjamin補充:

![](upload://mgfbZhF7EZZtGH8PhFRIhC9HN90.png)

我剛考過clad的考試,也正在上clad的課程,你可以準備clad的考試就可以知道自己觀念到底錯在哪?

學校教授都會說 labview不算語言,可能是使用上沒有其他程式語言來得嚴謹‧真的是太好上手了!

在上clad課程中,在準備cld中 我整理出來一些重點

第一步 :架構一定要擬訂出來,我是以agody大大推薦的queue作為基底,真的很彈性

第二步 擴充性,其實架構建的好,擴充性就好

第三部 充分利用sub vi,建立良好習慣

我也來補充一下隱藏版的電子報內容

http://it360.tw/epaper/00007/