24小時聯(lián)系電話:18217114652、13661815404
中文
技術專題
嵌入式系統(tǒng)中的PDF生成
嵌入式系統(tǒng)中的PDF生成
傳統(tǒng)的數(shù)據(jù)記錄器將數(shù)據(jù)顯示為純文本,逗號分隔值(CSV)或可擴展標記語言(XML)。如果您具有支持軟件來處理數(shù)據(jù)的格式,這些格式的文件就可以很好地工作,但是,如果您正在尋找一種分發(fā)文件的快速方法,任何人都可以打開,則便攜式文檔格式(PDF)更適合。這是因為數(shù)據(jù)是以一致且易于管理的方式呈現(xiàn)的;除了文字墻外,還可以為用戶提供清晰布局的摘要,圖表和圖像。任何人都可以輕松打開或分發(fā)數(shù)據(jù),而無需任何軟件,而無需擁有計算機上已有的軟件。
我們已經(jīng)開發(fā)了嵌入式軟件,可以直接在微控制器(Wikipedia)上生成動態(tài)PDF文件,然后可以將其寫入SD卡或通過USB傳輸(該設備可以顯示為大容量存儲設備,就像您的閃存驅(qū)動器一樣) )。用作數(shù)據(jù)記錄器只是潛在的應用之一。
PC和嵌入式系統(tǒng)比較
我們首先使用C#編寫軟件,然后在PC上運行,因為這可以讓我們快速輕松地確定以代碼形式生成PDF所需的內(nèi)容–事實證明這相當簡單,盡管我們已經(jīng)知道在為嵌入式設備(在這種情況下為8位PIC單片機)編寫代碼時會遇到獨特的挑戰(zhàn)。
當編寫在PC上運行的軟件時,程序會有大量資源可供使用,下表顯示了典型PC和典型8位微控制器之間的比較。
個人電腦 |
微控制器 |
|
內(nèi)存(B) |
4,294,967,296 |
256 |
ROM(KB) |
1,073,741,824 |
8 |
時鐘速度(MHz) |
3000 |
16 |
完全不同!一臺PC的內(nèi)存(RAM)增加了1700萬倍,存儲(ROM)增加了1.34億倍,并且運行速度提高了188倍!因此,雖然很容易在PC的RAM中生成整個PDF文件,但在許多微控制器上卻根本不可能做到這一點。
通常,這不會造成太大的問題,因為可以開始寫入文件。但是,PDF格式是為快速查看而設計的-實現(xiàn)此目的的一種方法是使用文件末尾的表格,該表格引用所有組件(頁面,圖像,字體等)的位置。該表允許查看軟件直接讀取文件的所需部分,從而節(jié)省了時間和內(nèi)存。這種引用技術以及其他引用技術可能很難以編程方式進行處理。
解決方案
最簡單的解決方案是在返回并填充所有丟失的引用之前在RAM中生成整個PDF,但是,如前所述,由于嵌入式系統(tǒng)的限制,這是不可能的。通過使用多種預測性和補償性方法,生成軟件可以克服這一困難-逐步逐行生成文件并將每個文件推入外部存儲設備(例如SD卡)。通過這種方式,在任何時間點只有少量文件存儲在內(nèi)存中,從而確保有限的資源不會被耗盡,同時仍然允許大型,復雜的PDF文件。下面顯示了以此方式生成的一個簡單示例頁面。
在為嵌入式系統(tǒng)編寫代碼時,這是一個常見的困難–真正的挑戰(zhàn)在于理解微控制器的工作方式并了解其局限性??紤]到這一點,可以創(chuàng)建快速有效的系統(tǒng)。