LabVIEW Team Indonesia

cancel
Showing results for 
Search instead for 
Did you mean: 

Dynamic Event Structure

Hallo,

saya butuh bantuan untuk mengerti lebih tentang dynamic event structure. Saya sudah lihat bbrp tutorial dan nugget, tapi somehow kok rasanya masih nggak "klik" yah   Mungkin kalo ada yang bisa bantu jelasin dalam bahasa Indonesia , saya mungkin bisa jadi lebih ngerti

Dari contoh ini, http://zone.ni.com/reference/en-XX/help/371361K-01/lvhowto/dynamic_register_event/

saya mencoba membuat contoh itu menjadi subVI, dan akan di call dari main VI, sesuai kebutuhan (jadi gak selamanya dia aktif di main VI). Apakah itu bisa?

Di VI yang di attachment, saya bisa run subVI. Tapi harapan saya, subVI ini juga bisa memberi dampak yg sama ke main VI, tapi saya gak yakin gimana caranya. Apakah saya harus punya while loop sendiri yg terpisah untuk subVI ?

mohon bantuannya  

Download All
0 Kudos
Message 1 of 13
(6,813 Views)

Halo, Mr. Hery

Jika mau dijelaskan, mudahnya seperti ini.

Event structure dibagi dua, statik dan dinamik.

Yang statik adalah konfigurasi event structure yang normalnya kita gunakan, untuk mendeteksi event berdasarkan interaksi user (klik mouse, atau klik keyboard, dll), selain itu yang statik sangat mudah untuk kita konfigurasi.

Namun, bagaimana jika kita ingin mendeteksi event yang berada pada subVI? Yang statik jelas tidak dapat melakukannya. Begitu pula jika kita ingin mengubah (menambah atau menghapus) event-event yang kita handle pada saat run-time , konfigurasi statik tidak dapat melakukannya.

Untuk melakukan hal tersebut diatas, kita harus mau tidak mau beralih ke dinamik karena kita dapat meregistrasi event kita . Objek2 yang dapat kita register contohnya adalah reference ke suatu kontrol.

SR

0 Kudos
Message 2 of 13
(5,170 Views)

Hmm, saya ada feeling, kalo saya mau mencapai tujuan saya diatas, artinya saya perlu running parallel subVI (di background) dan mainVI saya pada saat subVI diaktifkan, tanpa menghentikan main VI saya, begitu kira2 ya?

0 Kudos
Message 3 of 13
(5,170 Views)

Saya nimbrung ya. Menarik pertanyaannya. Topik Dynamic Event itu lumayan advanced. Dibahas di LabVIEW Core 3 kalau ikut training resmi dari NI.

Kalau saya sangat suka dengan Dynamic Event ini. Bisa dibayangkan situasi dimana kita mau update sesuatu (indicator) di dalam program utama, dari sub program yang lokasinya sangat jauh (nested) dari program utama. Nah ini baru Dynamic Event menjadi sangat penting.

Dibawah ini saya lampirkan, cara update program utama, misalnya ada Emergency Stop dan update Message dari subVI. Saya downconvert ke 2011, buka Main App dan Sub Main App, run Main App dulu lalu Sub Main App. Semoga berguna.

Certified LabVIEW Developer (CLD)
Certified TestStand Developer (CTD)
Using LabVIEW 8.5.1 (2008) to LabVIEW 2024
0 Kudos
Message 4 of 13
(5,170 Views)

Trima kasih mas krisna buat effort nya,

tapi kebetulan saat ini saya punya LV2010. Bisa tolong di convert (lagi) ke 2010 mas?

0 Kudos
Message 5 of 13
(5,170 Views)

ini dia.

Certified LabVIEW Developer (CLD)
Certified TestStand Developer (CTD)
Using LabVIEW 8.5.1 (2008) to LabVIEW 2024
Message 6 of 13
(5,170 Views)

Sekali lagi trima kasih mas krisna untuk contohnya ,

dari sini yang saya bisa mengerti adalah, bahwa (salah satu) tujuan nya dynamic-event ini yaitu mengirim update-signal dari (nested) subVI ke mainVI. Tapi kalo seandainya menggunakan property node + reference (bisa dgn global variable sbg reference)  untuk itu, bisa juga bukan?

hal lain yg saya mengerti dan menurut saya sangat penting adalah (CMIIW); kita bisa buat satu event dalam event structure yang di trigger oleh customized subVI, yg registered sbg user event. Artinya, di subVI kita bisa buat cluster yg berisi apapun (string, num, bool), dan cluster ini digunakan sbg trigger utk event struktur di mainVI.

Yg masih mengganjal adalah, bisakah kita buat misalnya seperti ini:

saya punya string indicator di mainVI, selain itu saya punya static event juga di mainVI.

Dan pada saat tertentu (saat saya aktifkan), saat mouse ada di dalam/luar indicator, event akan di-trigger (seperti di VI yg saya upload di post pertama: sub_register_event.vi), dan indicator di mainVI akan menampilkan IN/OUT, krn event nya exist dan aktif.

Dan pada saat lain (saat saya non-aktifkan), pergeseran mouse di sekitar indicator di mainVI tidak akan men-trigger event apa2.

Apakah itu bisa? dalam bayangan saya, artinya saya harus punya event struktur di subVI, tapi rasanya, kalo ada event struktur di mainVI dan subVI, akan sedikit membingungkan.

0 Kudos
Message 7 of 13
(5,170 Views)

dari sini yang saya bisa mengerti adalah, bahwa (salah satu) tujuan nya dynamic-event ini yaitu mengirim update-signal dari (nested) subVI ke mainVI. Tapi kalo seandainya menggunakan property node + reference (bisa dgn global variable sbg reference)  untuk itu, bisa juga bukan?

Hmmm.. Jelas berbeda kalau dibandingkan dengan Property Node + Reference. Property Node + Reference tidak bisa disamakan dengan Dynamic Event Generation karena secara konsep berbeda. Property Node + Reference (VI Server) adalah cara programmatically mengakses Obyek seperti VI dengan melihat atau mengganti atributnya atau melakukan sebuah operasi (Invoke). Sementara itu untuk Dynamic Event Generation adalah sebuah metode dimana kita bisa membuat komunikasi data secara Asynchronous (event-based).

Kalau global variable, lain cerita lagi. Mohon catatan bahwa global variable ini:

- breaks dataflow

- introduce race-condition

Ini masalah yang sering terjadi di LabVIEW, overuse variable (local, global ataupun shared). Selain itu, menggunakan variable ini menjadi tantangan apabila kita mau mengontrol sequencing pembacaan dan penulisan data secara paralel. Susah untuk dibuat Mutex (Mutual Exclusive).

Yg masih mengganjal adalah, bisakah kita buat misalnya seperti ini:

saya punya string indicator di mainVI, selain itu saya punya static event juga di mainVI.

Dan pada saat tertentu (saat saya aktifkan), saat mouse ada di dalam/luar indicator, event akan di-trigger (seperti di VI yg saya upload di post pertama: sub_register_event.vi), dan indicator di mainVI akan menampilkan IN/OUT, krn event nya exist dan aktif.

Dan pada saat lain (saat saya non-aktifkan), pergeseran mouse di sekitar indicator di mainVI tidak akan men-trigger event apa2.

Apakah itu bisa? dalam bayangan saya, artinya saya harus punya event struktur di subVI, tapi rasanya, kalo ada event struktur di mainVI dan subVI, akan sedikit membingungkan.

untuk pertanyaan dan maksud sampeyan bisa diulangi lagi? saya kurang mengerti apa yang mau dicapai. Kalau example sampeyan saya buka, ada satu masalah yang saya lihat dan yang saya mengerti. Ada Generate User Events, yang terus diinisasi tapi tanpa sebelumnya eventnya diregisterkan ke sebuah Event Structure. Nah seharusnya, sebelum digenerate User Events, diregister dulu ke Event Structure.

Certified LabVIEW Developer (CLD)
Certified TestStand Developer (CTD)
Using LabVIEW 8.5.1 (2008) to LabVIEW 2024
0 Kudos
Message 8 of 13
(5,170 Views)

Hahaha, bro Hery. Keep it simple saja.

Jika sekedar hanya mau register dan de-register event mouse in atau out, olah saja dari top VI kecuali seluruh actionnya mau disentralisasi kedalam subVI maka tembak refnya ke subVI dan olah eventnya dari subVI.

0 Kudos
Message 9 of 13
(5,170 Views)

@Krisna: aha, bener deh, kata kunci nya asynchronous comm pake event based. Mantap nih penjelasannya, simple. Tentu global var bukanlah pilihan, kayaknya kmrn saya bilang gitu krn lagi liatin software buatan orang lain yang ada pake global variable reference

@Suryo: mantap nih uraian simple nya. Bener, tujuan saya basically saya mau register dan de-register event mouse di subVI, sementara saya punya event (static) lain di mainVI, apakah itu bisa? (punya 2 atau lebih event structure di VI yg berbeda dalam satu proyek) Itu yg dari awal saya mau tanyain.  

0 Kudos
Message 10 of 13
(5,170 Views)