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