本發(fā)明涉及頻譜分析儀領(lǐng)域,尤其涉及一種基于頻譜分析儀刷新數(shù)據(jù)表的方法。
背景技術(shù):
1、在頻譜分析儀的脈沖信號分析、瞬態(tài)信號分析等測量中經(jīng)常使用軟件自帶的顯示控件來刷新展示數(shù)據(jù)結(jié)果,如圖1所示,現(xiàn)有更新數(shù)據(jù)結(jié)果的技術(shù)方案是頻譜分析儀底層掃描的數(shù)據(jù)處理后返回到上層界面,每刷新一次結(jié)果會在內(nèi)存開辟一段空間來處理該數(shù)據(jù),下一次數(shù)據(jù)更新再開辟一段內(nèi)存,依次類推內(nèi)存會不斷增加,增加到一定程度,軟件自帶的垃圾回收器(以下簡稱gc)會回收掉廢棄內(nèi)存,但該方案存在以下風(fēng)險:1、在任務(wù)管理器中查看軟件運(yùn)行狀態(tài),該程序存在內(nèi)存每秒上漲幾十兆(程序內(nèi)存占用在2g以上),會出現(xiàn)除該任務(wù)以外的其他軟件運(yùn)行卡頓和系統(tǒng)變慢的情況。2、界面更新數(shù)據(jù)結(jié)果占用的內(nèi)存越多,分析儀底層采數(shù)后再申請內(nèi)存空間用于計算會影響采數(shù)后的計算速度,嚴(yán)重影響分析儀整機(jī)信號采集分析速度,特別針對毫秒級的脈沖信號存在信號丟失的情況。3、由于該方案依賴gc回收廢棄內(nèi)存,在系統(tǒng)和軟件長時間運(yùn)行后,gc無法保存每次都能按時回收廢棄內(nèi)存,出現(xiàn)gc未及時回收時,會導(dǎo)致程序內(nèi)存不斷上漲,此時會出現(xiàn)申請內(nèi)存空間失敗的情況,導(dǎo)致軟件崩潰,嚴(yán)重會導(dǎo)致windows系統(tǒng)卡死和藍(lán)屏等故障。4、以上缺陷僅僅針對更新單條數(shù)據(jù)的情況,如果是更新整個數(shù)據(jù)表格(如100行,10列以上的數(shù)據(jù)量),該方案缺陷尤為明顯,數(shù)據(jù)表更新一次的內(nèi)存增長隨行數(shù)越大越明顯,如3列、10行數(shù)據(jù)的更新在每秒增長上百兆內(nèi)存,軟件界面會直接卡死無法操作。5、分析儀在采集短時間數(shù)據(jù)(如微秒級別)后,即每秒更新幀數(shù)大于60幀以上,數(shù)據(jù)更新到界面也會導(dǎo)致更新卡死或軟件崩潰的問題。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺點,提供了一種基于頻譜分析儀刷新數(shù)據(jù)表的方法,解決了現(xiàn)有技術(shù)存在的不足。
2、本發(fā)明的目的通過以下技術(shù)方案來實現(xiàn):一種基于頻譜分析儀刷新數(shù)據(jù)表的方法,所述方法包括:
3、步驟一、通過多種繪圖接口對數(shù)據(jù)進(jìn)行預(yù)處理后執(zhí)行繪制操作,如果需要進(jìn)行數(shù)據(jù)抽取,則根據(jù)抽取模式進(jìn)行相應(yīng)抽取后再繪制;
4、步驟二、初始化表格繪制對象,根據(jù)傳入的數(shù)據(jù)行列數(shù)計算出總的繪制區(qū)域長寬,再繪制單行單列的網(wǎng)格線;
5、步驟三、根據(jù)行列標(biāo)題集合繪制標(biāo)題,再根據(jù)設(shè)定的字體大小及畫筆顏色,繪制對應(yīng)字符串?dāng)?shù)據(jù);
6、步驟四、將繪圖對象強(qiáng)制執(zhí)行所有掛起的圖像操作并通知畫布更新,將畫布對象釋放后臺緩沖區(qū),將繪圖對象中的圖形緩存顯示到界面上,完成一次表格繪制;
7、步驟五、在繪制完成后,在數(shù)據(jù)表控件界面點擊列標(biāo)題進(jìn)行排序,在排序完成后根據(jù)頻譜分析儀執(zhí)行狀態(tài)進(jìn)行相應(yīng)繪制處理。
8、所述步驟一具體包括以下內(nèi)容:
9、a1、通過封裝的數(shù)據(jù)表對外提供的原始繪制源數(shù)據(jù)接口、更新速率接口、數(shù)據(jù)幀抽取模式接口和列排序接口對數(shù)據(jù)進(jìn)行預(yù)先處理,處理完再執(zhí)行繪制操作;
10、a2、當(dāng)繪制數(shù)據(jù)表需要進(jìn)行抽取時,根據(jù)數(shù)據(jù)幀抽取模式接口進(jìn)行相應(yīng)抽取后再繪制,抽取完成后根據(jù)列排序接口設(shè)定的倒序和升序再將數(shù)據(jù)進(jìn)行排序處理。
11、所述初始化表格繪制對象包括:
12、創(chuàng)建一個畫布對象及繪圖對象,畫布初始長等于預(yù)先設(shè)定列寬乘以列數(shù),畫布初始寬等于預(yù)先設(shè)定行高乘以列數(shù);
13、如果每一幀數(shù)據(jù)量的大小固定,則申請分配的內(nèi)存空間不變,如果某一幀數(shù)據(jù)量大于上一幀的數(shù)據(jù)量,則將畫布的長寬擴(kuò)大并多申請分配內(nèi)存空間,如果下一幀數(shù)據(jù)量小于歷史最高單幀數(shù)據(jù)量,則以最大畫布長寬為準(zhǔn),固定分配內(nèi)存。
14、所述步驟三包括:
15、循環(huán)列集合,根據(jù)每列的第一行數(shù)據(jù)繪制行標(biāo)題,再循環(huán)行集合,根據(jù)每行的第一列數(shù)據(jù)繪制列標(biāo)題;
16、獲取單行數(shù)據(jù)的y坐標(biāo),循環(huán)列集合,獲取列的x坐標(biāo),將(x,y)坐標(biāo)傳入單個表格數(shù)據(jù)的繪制方法中,并填充相應(yīng)的畫筆顏色,依次繪制每個表格內(nèi)容。
17、所述a1的步驟包括:
18、在原始數(shù)據(jù)傳入數(shù)據(jù)表對象后對數(shù)據(jù)有效性進(jìn)行驗證,確保行列數(shù)集合中的每個數(shù)據(jù)都存在,如果數(shù)據(jù)有誤則直接返回不繪制;
19、設(shè)置更新速率為a,當(dāng)a>60幀時,則a等于數(shù)據(jù)的傳入速率,當(dāng)a<60幀時,如果a>n,則a=b,b為數(shù)據(jù)的傳入速率,如果a<b,則a=a,且a<b時進(jìn)行數(shù)據(jù)抽取操作。
20、所述步驟五包括:
21、當(dāng)頻譜分析儀在繼續(xù)狀態(tài)時,點擊列標(biāo)題切換倒序/升序模式,進(jìn)入a1步驟,將倒序/升序模式傳入接口,在下一幀數(shù)據(jù)繪制時進(jìn)行排序即可;
22、當(dāng)頻譜分析儀在暫停狀態(tài)時,此時沒有新數(shù)據(jù)幀需要更新,直接進(jìn)入a2步驟,僅對數(shù)據(jù)進(jìn)行排序處理后再繪制一次并更新界面顯示。
23、本發(fā)明具有以下優(yōu)點:
24、1、節(jié)省內(nèi)存資源:以單行數(shù)據(jù)更新為例,內(nèi)存不再循環(huán)申請,軟件使用內(nèi)存相對穩(wěn)定,不會存在頻繁調(diào)用gc回收內(nèi)存的情況。
25、2、可滿足每秒60幀更新速度,最大數(shù)據(jù)繪制量達(dá)1000行*10列數(shù)據(jù)的更新繪制,完全滿足脈沖信號解析后每幀含有得上千個脈沖繪制需求。
26、3、外部數(shù)據(jù)源傳入該數(shù)據(jù)表的速率可通過內(nèi)部控制,并針對數(shù)據(jù)可根據(jù)抽取類型對幀數(shù)據(jù)進(jìn)行抽幀處理,避免外部數(shù)據(jù)源不可控的情況導(dǎo)致數(shù)據(jù)更新速度過大影響分析儀整體性能。
1.一種基于頻譜分析儀刷新數(shù)據(jù)表的方法,其特征在于:所述方法包括:
2.根據(jù)權(quán)利要求1所述的一種基于頻譜分析儀刷新數(shù)據(jù)表的方法,其特征在于:所述步驟一具體包括以下內(nèi)容:
3.根據(jù)權(quán)利要求1所述的一種基于頻譜分析儀刷新數(shù)據(jù)表的方法,其特征在于:所述初始化表格繪制對象包括:
4.根據(jù)權(quán)利要求1所述的一種基于頻譜分析儀刷新數(shù)據(jù)表的方法,其特征在于:所述步驟三包括:
5.根據(jù)權(quán)利要求2所述的一種基于頻譜分析儀刷新數(shù)據(jù)表的方法,其特征在于:所述a1的步驟包括:
6.根據(jù)權(quán)利要求2所述的一種基于頻譜分析儀刷新數(shù)據(jù)表的方法,其特征在于:所述步驟五包括: