labview實(shí)現(xiàn)串口通信(三)
在調(diào)試的過(guò)程中,我們經(jīng)常會(huì)發(fā)現(xiàn)有收到的數(shù)據(jù)延遲的現(xiàn)象,現(xiàn)在提出幾點(diǎn)解決的方法:(1)在循環(huán)中加入適量的延時(shí),通過(guò)一個(gè)簡(jiǎn)單的例子看,你會(huì)發(fā)現(xiàn)在cpu的占用率在加延時(shí)和不加的時(shí)候有很大的區(qū)別,當(dāng)加的時(shí)候基本不占,而不加延時(shí)的時(shí)候達(dá)到100%。我在調(diào)試串口通信時(shí)候,發(fā)現(xiàn)while loop里加一個(gè)延時(shí)會(huì)有很好的效果(假如有一個(gè)或某幾個(gè)線程占用了 100% 的 CPU,此時(shí)系統(tǒng)對(duì)其他線程就會(huì)反應(yīng)遲鈍。例如,程序的執(zhí)行線程占用了100% 的 CPU,那么用戶對(duì)界面的操作就會(huì)遲遲得不到響應(yīng),甚至于用戶會(huì)誤認(rèn)為程序死鎖了。所以在程序中要盡量避免出現(xiàn) 100% 占用 CPU 的情況。 目前大多數(shù)的計(jì)算機(jī)還是單核單個(gè) CPU 的,因此要避免任何一個(gè)線程試圖 100% 占用 CPU 的情況).(2)visa read 的字節(jié)總數(shù)最好用一個(gè)屬性節(jié)點(diǎn)來(lái)代替因?yàn)槲覀儾恢罃?shù)據(jù)緩沖區(qū)有多少個(gè)字節(jié),這樣就不需要去設(shè)定了(3)經(jīng)??吹綍?huì)有人說(shuō)串口里面有一堆數(shù)據(jù),但是去讀的時(shí)候卻讀回來(lái)一點(diǎn)點(diǎn),每次均不相同,這種懷狀況是由于串口有一個(gè)serial configuration這個(gè)節(jié)點(diǎn)上面,有一個(gè)termination char,大家將它設(shè)為F就可以了,因?yàn)橛龅竭@個(gè)終止符,它就會(huì)停止讀數(shù),所以讀回來(lái)的就會(huì)少了!