LabVIEW Pro 專業論壇-技術討論區-在多迴圈使用event做鍵盤掃描
 
     
 
 
 
LabVIEW 討論區基礎教學每月專題分享技術問題精選online Test
技術討論區 ★LabVIEW Pro 嘉年華★ 程式分享區 教育訓練與認證區 閒話家常區 工作機會討論區 回報區 高手專訪系列 2017 LabVIEW 至尊爭霸賽
 熱門關鍵字 
    TOP 資源排行榜    量測概念充電站    3小時內學會 LabVIEW    LabVIEW Pro 嘉年華    取得 NI 協助
 您的位置:首頁 > 技術討論區 > 在多迴圈使用event做鍵盤掃描
  技術討論區   板主:meiae
 之1(5篇)
在多迴圈使用event做鍵盤掃描 
 
scott9330
暱稱:hamk
經驗值:144
等級:技工
發文:10
回文:17
版本:LabVIEW 2013
闖關狀態:
前往地圖:
 
字級設定

各位前輩好 

小弟目前在做訊號紀錄的程式訊號是連續及時的所以我用亂數模擬,而顯示到chart中使用的是下方迴圈

而最下方則是我的鍵盤掃描迴圈,但目前遇到幾個問題

1.有時鍵盤沒反應但訊號還是持續有,程式關掉重開又可以用了

2.因為按鍵按下時需要準確的訊號位置值但一直都有誤差

3.串列傳輸要如何讓波形在chart中跑的速度=1ms

以上是我遇到的困難麻煩各位前輩解答了

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
附件檔案:    
tttt1.vi
  版本:LabVIEW 2013
Front Panel
Block Diagram
 
 
已解決!轉到解決方案
  文章人氣: 554 讚:0 文章日期:2017/11/20 16:10
mingyenwei

暱稱:銘延
經驗值:1736
等級:舵主
發文:2
回文:437
版本:請選擇
闖關狀態:
飄渺嶺
前往地圖:
1樓
字級設定

我修改了程式如下方。簡單來說,Diaplay 1的方式是最即時最好的。

 

其中最重要的部分是在Event Structure那邊,直接取出Waveform Chart整個XScale.Range。Display 1應該會是最快速取得的。可想而知,這時候等到設定CLICK為True,一直到上面兩個迴圈跑了下一圈,發現CLICK的分身已經被改了,這一定有度過一些時間。

 

我初測的時候,沒有清除舊的Waveform Chart History,有觀察到這個時間差好像還蠻大的。

但是等到我每次都清除舊的Waveform Chart History,這個時間差就變得很小了。我推測這可能是因為Waveform Chart的History Length已經被填滿的狀態,他必須要進行舊資料被擠出去的工作,比較忙一點。

 

另外我增加了Display 2, 3, 4, 5,他們都一定快不過Display 1。1 > 3,5 >= 2,4

Display 3, 5在上述有清除舊的Waveform Chart History之後,Display 1跟 Display 3, 5的差距似乎就只在一次的迴圈差以內。[此敘述句經過刪改]

 

Display 2, 4一定是最慢的。他們每圈都在更新,總要等到每圈的Enqueue, Dequeue做完。他們很容易比Display 1慢,偶爾甚至更慢於Display 3, 5。我把其中一組測試結果設定成了程式預設值方便看。[此敘述句經過刪改]

 

你也可以選擇關閉Display 2, 4的顯示,看看Display 3, 5會不會更快更好一些。這個方向是考量到太多Property可能會影響效能。[此敘述句經過刪改]

 

目前儲存到的這個差距,你可以注意到誤差程度,很可能就是多繞了一圈Enqueue產生了10個Data,也多繞了一圈Dequeue,把這些Data抓了丟進去,然後秀出來以後,又被Chart的物件本身發現XScale.Range需要增加,增加後XScale.Range又被你拿出來看。[此敘述句經過刪改]

 

上面的每一句我都有小修改,不過,不影響程式碼本身要傳達的訊息。感謝有你分享的問題,我也才能對這個主題有更多的了解。

[+]放大圖片
 
[+]放大圖片
 

 

如果你有額外需要,也可以把Queue拉給Event Structure那個迴圈。呼叫Get Queue Status來分析Queue當下的Element資料。不過這又是另外一件事了。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
附件檔案:    
a-120.vi
  版本:LabVIEW 2013
Front Panel
Block Diagram
 
 
    讚:0 文章日期:2017/12/04 18:20
humt

暱稱:小賴
經驗值:3601
等級:總舵主
發文:12
回文:431
版本:請選擇
闖關狀態:
飄渺嶺
前往地圖:
2樓
字級設定

http://www.labviewpro.net/teach_content.php?fid=6&post=254&fpt=3

    讚:0 文章日期:2017/11/20 16:52
scott9330

暱稱:hamk
經驗值:144
等級:技工
發文:10
回文:17
版本:LabVIEW 2013
闖關狀態:
前往地圖:
3樓
字級設定

前辈那我的程式中使用event來收鍵盤的値去存值這樣的用法出現時間久了鍵盤會不能用的問題式不式迴圈時間不同造成的呢?

還有我的程式想要抓chart中x軸的値是不是因為property node的傳輸速度太慢造成抓到的都有延遲有沒有其他 方法抓的到chart裡準確值的方法?

    讚:0 文章日期:2017/11/23 22:17
mingyenwei

暱稱:銘延
經驗值:1736
等級:舵主
發文:2
回文:437
版本:請選擇
闖關狀態:
飄渺嶺
前往地圖:
4樓
字級設定

我初步推測是你的Enqueue迴圈速度太快

Dequeue迴圈因為需要畫圖 (Waveform Chart),所以絕對比Enqueue慢

造成最後Unlimited Queue佔用了可怕的記憶體。

 

先嘗試確認: Get Queue Statue看 # elements in Queue,看看是不是無止盡快速上升。

 

測試過程請在Enqueue迴圈加入Wait 1ms (請先測試100ms->10ms->1ms)。這個目的是確保Enqueue的速度,除了暫時擁擠的情況外,大尺度下都要比Dequeue慢才行。不然的話請設定Max Queue Size,並考慮使用Lossy Enqueue。

 

但是注意,軟體的Wait在1ms~2ms的情況,Timing的浮動程度很大。並不會非常的準確。這裡只是希望你能讓Enqueue慢下來。

 

[Note 1]

我自己試了一下,產生亂數的Enqueue因為內部有迴圈,通常反而是比較慢的。只有偶爾一瞬間,會有幾百個element出現,接著又歸零了。不過,這個關鍵還是要記得把握住...。我原先不熟悉程式的時候,疑似有鍵盤鎖住的情況,但我不確定。

增加了Get Queue Statue之後,鍵盤都沒有測出被鎖住的情況... 奇怪。

 

[Note 2]

另外,你的CLICK沒有初始化,以至於CLICK在前一次結束時如果是True,下一次執行程式的時候,Enqueue與Dequeue迴圈會在一開始就讀到Local Variable True,使得上述兩個迴圈立刻就結束。但是這應該不會導致你碰到按鍵鎖住的問題。這反而應該是亂數功能無效。還是你正好曾經交換過了Local Variable與本尊的位置?

 

[Note 3]

請把Event Structure裡面的Scan Code用Indicator拉出來看。以便確定Event Struture是不是真的已經完全沒動作了。

 

 

 

麻煩確認看看,你上傳的這個版本的程式,考慮了上面我說的一些議題之後,真的有鎖住的情況嗎?

沒能複製你碰到的問題,所以目前只能給一些基礎的建議

    讚:0 文章日期:2017/11/27 18:24
scott9330

暱稱:hamk
經驗值:144
等級:技工
發文:10
回文:17
版本:LabVIEW 2013
闖關狀態:
前往地圖:
5樓
字級設定

我目前chart時間顯示是解決了'

還有我見盤被鎖住的問題時好時壞但發生的機率較低所以我先忽略它

但還有一個問題是我想將按下按建時的chart時間點紀錄下來但出現時間不對的問題,我使用的是property node在鍵盤掃描的地方擷取,不知是否是event執行時間造成錯誤

    讚:1 文章日期:2017/11/30 15:50
 之1(5篇)
 
 
   會員中心 
帳號:
     
密碼:
     
  以後自動登入
 
註冊
   待回覆文章 
1. 如何把DAQ的量測訊號傳入SQL EX...
 
   Top 5 熱門討論 
1. 請問有關circle 檢測的範例
2. 寫一元二次式,當中的錯誤點該如何才能解...
3. Crash Reporter問題
4. 如何把DAQ的量測訊號傳入SQL EX...
5. 有關LABVIWE與PLC無法控制,因...
 
 
 
LabVIEW討論區 站長信箱 關於我們 站內聲明
國家儀器股份有限公司贊助;Sponsored by NI.
© 2010 National Instruments, Taiwan. All rights reserved. design by begonia