資料介紹
描述
冠狀病毒在全球范圍內(nèi)增長了很多,并且出現(xiàn)了許多公共數(shù)據(jù)集以提供有關(guān)病毒傳播的實(shí)時和歷史信息,但是您如何在自己的嵌入式設(shè)備中將所有這些信息繪制在圖表上呢?
在本文中,我們展示了如何從頭開始構(gòu)建圖表的圖形用戶界面 (GUI),連接到冠狀病毒信息的 REST 數(shù)據(jù)庫,以及如何在嵌入式設(shè)備上運(yùn)行它。收集的數(shù)據(jù)將繪制在代表全球病毒演變的折線圖上,我們將使用Toradex Colibri 模塊和NXP iMX6ULL 執(zhí)行所有測試,無需 GPU。
此圖表上顯示的數(shù)據(jù)可從Rapid API網(wǎng)站的冠狀病毒地圖部分免費(fèi)獲得。可以使用 Rest WebService 進(jìn)行連接,也可以在設(shè)備內(nèi)下載 JSON 數(shù)據(jù)和包。此代碼是使用TotalCross SDK編寫的,用于開發(fā)、構(gòu)建應(yīng)用程序并將其打包到嵌入式設(shè)備,如下圖所示。
Colibri iMX6ULL 是一款具有 Wi-Fi 和藍(lán)牙功能的 Toradex 計(jì)算機(jī)模塊,基于 NXP i.MX 6ULL?? 應(yīng)用處理器,具有適用于各種物聯(lián)網(wǎng)和嵌入式設(shè)備的 Arm Cortex-A7 內(nèi)核。這個強(qiáng)大的工具與 Totalcross SDK 一起使用,可以開發(fā)廣泛的應(yīng)用程序。所有這些示例代碼都可以在GitHub 上免費(fèi)獲得,您只需將開發(fā)環(huán)境配置為 TotalCross。在這里,我們有一個簡單的教程,它還提供了有關(guān)部署和運(yùn)行項(xiàng)目的信息。
要訪問冠狀病毒數(shù)據(jù),請?jiān)L問 Rapid API 網(wǎng)站。在冠狀病毒地圖上,獲取URL請求數(shù)據(jù);最新的報(bào)告菜單有代碼片段。該項(xiàng)目基本上有兩個主要類,CoronaChart和CoronaChartApp;它還有運(yùn)行類 RunCoronaChartApplication。數(shù)據(jù)離線時使用JSON文件,設(shè)備可以直接讀取信息;此文件已保存在資源文件夾中。
CoronaChart 類負(fù)責(zé)在圖表上構(gòu)建數(shù)據(jù)。CoronaChartApp 類是加載主 UI 的主窗口。它連接到 Web 服務(wù)并在圖表中運(yùn)行確認(rèn)、恢復(fù)和死亡的動畫。
private void fillData() {
[...]
if (offlineCheck.isChecked())
response =
getCoronavirusData("https://coronavirus-map.p.rapidapi.com/v1/summary/latest", HttpStream.GET);
else
response = new JSONObject(new String(Vm.getFile("request.json")));
JSONObject data = response.getJSONObject("data");
dates = data.names();
array = data.toJSONArray(dates);
for (int i = 0; i < array.length(); i++) {
date = dates.getString(i);
item = array.getJSONObject(i);
MyDate myDate = new MyDate(Integer.parseInt(Convert.remove(date, "-")));
confirmedList.add(new Data(myDate, item.getInt("total_cases")));,>
recoveredList.add(new Data(myDate, item.getInt("recovered")));,>
deathsList.add(new Data(myDate, item.getInt("deaths")));,>
}
[...]
}
最重要的方法是 fillData(),它用于從 Rapid API 以 JSON 格式加載信息。getCoronavirusData() 使用 Http Stream 連接到 API 并從站點(diǎn)獲取信息。它返回將在 fillData 上處理的 JSON 對象。必須使用 Rapid API 密鑰更改 secretKey 字符串才能使連接正常工作。
每次點(diǎn)擊開始按鈕時,它都會連接到 Web 服務(wù),下載所有信息并將其繪制在圖表上。也可以在資源文件夾中加載文件request.json 。Vm TotalCross 類具有操作文件的方法,因此我們可以打開帶有電暈信息的 JSON 文件。該文件將被加載到應(yīng)用程序上,將這些數(shù)據(jù)解析為字符串并解析為 JSONObject。
JSONObject getCoronavirusData(final String url, String httpType) {
[...]
HttpStream.Options o = new HttpStream.Options();
o.readTimeOut = 5000;
o.socketFactory = new SSLSocketFactory();
o.requestHeaders.put("x-rapidapi-host", "coronavirus-map.p.rapidapi.com");
o.requestHeaders.put("x-rapidapi-key", secretKey);
HttpStream hs = new HttpStream(new
URI("https://coronavirus-map.p.rapidapi.com/v1/spots/summary"), o);
ByteArrayStream bas = new ByteArrayStream(4096);
bas.readFully(hs, 10, 4096);
hs.close();
String string = new String(bas.getBuffer(), 0, bas.available());
request = string;
[…]
}
此 JSONObject 將被讀取并分離為確認(rèn)列表、恢復(fù)列表和死亡列表。加載構(gòu)建包時,文件 request.json 在設(shè)備上自動可用。除了我們圖表上的信息外,還有其他信息可能對未來的工作有用,例如活躍病例、危急、測試、死亡率和康復(fù)率。
項(xiàng)目中存在的大多數(shù)其他方法都涉及圖表中數(shù)據(jù)的組裝和動畫;可以在可供使用的代碼中研究它們。其余的代碼片段是關(guān)于屏幕的組裝,主類從 MainWindow 類擴(kuò)展,其覆蓋方法如 InitUI,它將構(gòu)造屏幕上的所有元素,如背景顏色、按鈕、復(fù)選框及其監(jiān)聽器方法。
關(guān)于技術(shù)
該項(xiàng)目中使用的TotalCross 技術(shù)提供了一個占用空間小的應(yīng)用程序(甚至使用 Java),非常適合這種設(shè)備。TotalCross 不使用 JVM(Java 虛擬機(jī)),但由其自己的開源虛擬機(jī) TCVM 支持。這使其能夠保證使用此框架開發(fā)的應(yīng)用程序的幾乎本機(jī)性能。此外,它使我們能夠用很少的命令創(chuàng)建出色的 UI,即使對于低端 MPU 也是如此。
按照這些步驟,您可以快速構(gòu)建您的冠狀病毒圖表并在嵌入式設(shè)備上運(yùn)行它。您可以根據(jù)需要將相同的知識應(yīng)用于不同的數(shù)據(jù)庫并創(chuàng)建自己的圖表。
- 社交距離提醒(冠狀病毒)開源案例
- 冠狀病毒實(shí)時更新器開源分享
- 【新型冠狀病毒物聯(lián)網(wǎng)啟示錄】之一:智慧城市的馬斯洛需求模型
- 嵌入式linux設(shè)備中應(yīng)用運(yùn)行日志的實(shí)現(xiàn)
- VivadoHLS嵌入式實(shí)時圖像處理系統(tǒng)的構(gòu)建與實(shí)現(xiàn)優(yōu)先出版 0次下載
- 嵌入式設(shè)備固件的安全分析和測評技術(shù) 8次下載
- 嵌入式設(shè)備上的USB通用功能 18次下載
- 嵌入式的系統(tǒng)構(gòu)建 37次下載
- 嵌入式系統(tǒng)的構(gòu)建 11次下載
- 嵌入式系統(tǒng)的構(gòu)建教程
- 嵌入式系統(tǒng)的構(gòu)建
- 嵌入式設(shè)備故障檢測和診斷系統(tǒng)設(shè)計(jì)
- 嵌入式Linux在PC104平臺上的構(gòu)建與實(shí)現(xiàn)
- 如何在嵌入式設(shè)備上運(yùn)行高性能Java
- 嵌入式設(shè)備的網(wǎng)絡(luò)化方法研究
- 嵌入式可編程片上系統(tǒng)是什么 411次閱讀
- 嵌入式fpga是什么意思 997次閱讀
- 什么是嵌入式系統(tǒng)?嵌入式系統(tǒng)的具體應(yīng)用 2102次閱讀
- 【從0開始創(chuàng)建AWTK應(yīng)用程序】編譯應(yīng)用到嵌入式Linux平臺運(yùn)行 520次閱讀
- 幾種常見嵌入式設(shè)備通信協(xié)議 1416次閱讀
- 嵌入式設(shè)備系統(tǒng)日志記錄方法 4993次閱讀
- 嵌入式代碼高效運(yùn)行指南 761次閱讀
- 保護(hù)連接的嵌入式設(shè)備上的數(shù)據(jù) 587次閱讀
- 基于雙以太網(wǎng)處理器Jupiter實(shí)現(xiàn)嵌入式設(shè)備網(wǎng)絡(luò)的設(shè)計(jì) 3673次閱讀
- 基于WEB技術(shù)與嵌入式技術(shù)實(shí)現(xiàn)對設(shè)備的控制與診斷 612次閱讀
- 基于Qtopia的嵌入式俄文環(huán)境詳解 1290次閱讀
- 關(guān)于嵌入式系統(tǒng)以及嵌入式平臺下的學(xué)科分工詳解 1855次閱讀
- 基于PXA255開發(fā)板外圍字符設(shè)備的嵌入式Linux字符設(shè)備驅(qū)動設(shè)計(jì)與應(yīng)用 1138次閱讀
- 構(gòu)建eCos嵌入式系統(tǒng)的步驟教程 3823次閱讀
- 嵌入式視覺系統(tǒng)的構(gòu)建模塊 1567次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多