日韩中文无码视频中文字幕,久热中文字幕在线精品首页,亚洲精品东京热无码视频,一本一本久久aa综合精品

深圳市瑞申電子有限公司

深圳市瑞申電子有限公司是一家10年專業大功率電感生產加工廠商,主要以大功率,大電流、扁平線圈電感、平面變壓器設計、生產、銷售工廠。設計、繞線、組裝、檢測、包裝、出貨等全制程的工藝流程!擁有完整、科學的質量管理體系。專業技術團隊10人,我們的誠信、實力和產品質量獲得業界的認可。歡迎各界朋友蒞臨參觀、指導和業務洽談。 ...

按兩次才能停下

時間:2020-10-20 06:02:34 點擊:
最近看到去了一篇博客,親手試驗了一遍,對其中一個不甚理解,翻來覆去想好了好久,不得其解,只好求助于各位高手,博客地址如下:http://blog.csdn.net/ap0108220/article/details/16842267,其中那個“為什么在WHILE循環中使用事件結構時,停止按鈕需要按兩次才能結束?”很難想明白,先求助于各位(自己加了一個顯示,方面跟蹤事件結構)。


wangyi31 發表于 2016-12-21 14:15
首先謝謝您的回答,還有些疑問,比如:1:我按下停止按鈕后,觸發了事件,此時labview檢測到了停止按鈕數值的變化,處理了“加1”事件,此時labview是還沒有讀取控件的值是嗎。2:我注意到,停止按鈕按下一次后,他又自動彈回了,應該是labview已經讀取控件的值了,此時值為1啊,為什么沒有停止,就是要按第二次始終不明 ...

執行過程如下:
1.第一次進入循環,按下按鈕之前程序就已經讀取了按鈕的值,為假。
2.第一次按下按鈕之后,觸發事件結構,執行完事件結構以后,本次循環就結束了,第1步時已經說了,這時候讀到的按鈕值是假,所以循環并不會停止,而是會開始第二次循環。
3.進入第二次循環:程序首先讀取按鈕的值,因為前面已經按過一次按鈕了,所以這時候讀到的按鈕值是“真”(這里有一個知識點,是關于按鈕的機械動作的,默認從while循環紅點處創建的這種按鈕是觸發型的,帶有鎖存功能,只要按過一次按鈕,labview下次讀到的值就是“真”,讀到這個“真”值以后,在下次再按下按鈕以前讀到的值都是“假”,這樣可以防止labview漏掉真值的讀取,注意并不是所有的布爾都是這樣的,只有觸發型的按鈕才有這個特性)。接上面的繼續說,讀到“真”值以后,循環不會馬上結束,因為事件結構還在等待中,這時候只要讓事件結構執行完循環就可以結束了,也就是說如果你還有另一個按鈕也做了事件的話,只要你按一下那個按鈕觸發事件,程序就會結束了,不一定非得按停止按鈕。
建議采用如下方式來停止循環,事件結構的超時最好還是加上,你可以在超時分支里做些別的事情。


你的stop按鈕應選擇如圖所示的??switch??until released,就可以實現按一下就停止程序


krize 發表于 2016-12-21 11:21
執行過程如下:
1.第一次進入循環,按下按鈕之前程序就已經讀取了按鈕的值,為假。
2.第一次按下按鈕之后,觸發事件結構,執行完事件結構以后,本次循環就結束了,第1步時已經說了,這時候讀到的按鈕值是假,所以循環并不會停止,而是會開始第二次循環。

其實是執行的先后順序的問題,循環一進入,由于事件結構處于等待,而停止按鈕已經賦值給循環端子(因為程序一運行就賦值了,你再按停止按鈕才執行事件結構),所以看似同時執行卻是先執行停止按鈕的賦值,再等你按了停止按鈕后才觸發事件結構,所以第一次按停止按鈕只是觸發事件結構而已,并非把真值賦給循環端子。第二次進入循環端子才把停止賦值,但是事件結構未響應無法退出循環,所以這時你要再次按停止按鈕(這次純粹是讓事件結構響應)。比較好的理解就是把停止按鈕放到停止事件里,這樣才是嚴格的停止與事件同時發生,循環立刻停止(這里可以觀察循環次數為0代表只循環一次)


本帖最后由 隔壁老wang 于 2016-12-21 15:34 編輯

這個值得深究


krize 發表于 2016-12-21 14:53
1.不是,此時labview已經讀取過一次控件的值了,確切的說在你還沒按按鈕的時候就已經讀取過控件值了,讀到的值是“假”。
2.自動彈回是這個按鈕的機械動作,并不代表labview已經讀取了控件值。按鈕按下去再自動彈回的時候labview會把值“真”鎖存起來了,以保證下次程序里讀取按鈕值的時候能讀到真值,但這跟你的程序有沒 ...

wangyi31 發表于 2016-12-21 14:15
首先謝謝您的回答,還有些疑問,比如:1:我按下停止按鈕后,觸發了事件,此時labview檢測到了停止按鈕數值的變化,處理了“加1”事件,此時labview是還沒有讀取控件的值是嗎。2:我注意到,停止按鈕按下一次后,他又自動彈回了,應該是labview已經讀取控件的值了,此時值為1啊,為什么沒有停止,就是要按第二次始終不明 ...

wangyi31 發表于 2016-12-21 14:15
首先謝謝您的回答,還有些疑問,比如:1:我按下停止按鈕后,觸發了事件,此時labview檢測到了停止按鈕數值的變化,處理了“加1”事件,此時labview是還沒有讀取控件的值是嗎。2:我注意到,停止按鈕按下一次后,他又自動彈回了,應該是labview已經讀取控件的值了,此時值為1啊,為什么沒有停止,就是要按第二次始終不明 ...

靜夜style 發表于 2016-12-21 16:54
其實labview有個強大的功能就是看數據流動,你把程序框圖上的小燈泡打開,運行,就可以直觀的看到數據流動以及執行的先后順序了,另,沙發說的很明白

靜夜style 發表于 2016-12-21 16:54
其實labview有個強大的功能就是看數據流動,你把程序框圖上的小燈泡打開,運行,就可以直觀的看到數據流動以及執行的先后順序了,另,沙發說的很明白

跟著樓主一起學習一下??


wangyi31 發表于 2016-12-21 17:58
謝謝您的耐心回到,我按照您的說法做了一下,我按下第一次的時候,看了一下,過程是這樣的:首先事件結構由于按鍵的值改變,觸發了事件, 顯示值加1 ,labview讀取了按鍵的值,為“T”,我的疑問既然讀取的值為“T“了,為什么循環還要進行下去,是要將本次循環進行完畢算結束嗎? ...

本帖最后由 靜夜style 于 2016-12-22 16:09 編輯

wangyi31 發表于 2016-12-21 17:58
謝謝您的耐心回到,我按照您的說法做了一下,我按下第一次的時候,看了一下,過程是這樣的:首先事件結構由于按鍵的值改變,觸發了事件, 顯示值加1 ,labview讀取了按鍵的值,為“T”,我的疑問既然讀取的值為“T“了,為什么循環還要進行下去,是要將本次循環進行完畢算結束嗎? ...

補充一點,因為按鈕沒有按下,所以第一次讀到的是F值,(”多線程“導致按鈕的值先事件結構被送到結束條件,所以第一次循環讀取按鈕值已經結束,所以你按按鈕也不能結束循環,對,就是時序問題,你只要想辦法讓讀取按鈕的值在觸發事件結構之后就不會導致這樣的現象出現,所以如2樓所言,把按鈕放到事件結構里面就好了)


有個好玩的地方在于如果你把按鈕的值初始設置成T,那么你按下按鈕之后程序不會像你所想的一樣進入第二次循環,而是會直接結束,這樣一來你應該就懂了吧


靜夜style 發表于 2016-12-22 16:13
有個好玩的地方在于如果你把按鈕的值初始設置成T,那么你按下按鈕之后程序不會像你所想的一樣進入第二次循環,而是會直接結束,這樣一來你應該就懂了吧

補充一點,因為按鈕沒有按下,所以第一次讀到的是F值,

大功率電感廠家 |大電流電感工廠

  • 一種嵌入式語音識別模塊的設計與實現
    服務機器人以服務為目的,因此人們需要一種更方便、更自然、更加人性化的方式與機器人交互,而不再滿足于復雜的鍵盤和按鈕操作?;诼犛X的人機交互是該領域的一個重要發展方向。目前主流的語音識別技術是基于統計模
  • 基于單片機AT89C2051的電子鐘設計方案
    電路見圖1.一片20引腳的單片機AT89C2051為電子鐘主體,其顯示數據從P1口分時輸出,P3.0~3.3則輸出對應的位選通信號。由于LED數碼管點亮時耗電較大,故使用了四只PNP型晶體管VT1~
  • 車載數碼相機充電適配器設計
    附圖為數碼相機充電適配器電路。電路采用一對晶體管差分放大器和一級電流放大器.分別輸出恒定的電壓和要求的電流。晶體管T1和T2構成一對差分放大器.T1基極電壓由穩壓二極管ZD1穩定在3V.T2基極電壓則
  • 大功率電感