MPAndroidChart 動態顯示藍芽資料

2021-10-03 01:17:14 字數 2164 閱讀 4040

在一次用matlab對前端串列埠資料處理時,某臉上露出一絲不易覺察的笑意,突發奇想地要把串列埠資料在手機上顯示出來。好在網上有成熟的例子,我的實現過程是建立在以下基礎上:

1、藍芽通訊採用《手機藍芽串列埠的除錯助手demo實現》提供的方法,簡單明瞭,上機即行。

2、資料顯示採用乙個優秀的第三方庫 mpandroidchart,《mpandroidchart 教程》(  莊巨集基)教程有詳細的介紹。

以上是兩位大神發表在dsdn上的blog。執行結果先上圖:

實現步驟:

一、嫁接介面。上述demo簡明扼要、穩定可靠,無須關注藍芽通訊的具體實現。以此為基礎改造,在layout中,新增mpandroidchart。

對 mpandroidchart進行一些基本的設定,可以參看《mpandroidchart 教程》,非常詳細。

二、嫁接藍芽資料響應:

藍芽資料的響應在

private final handler mhandler = new handler()函式中。在case message_read**段,《手機藍芽串列埠的除錯助手demo實現》demo中用的是自已生成的資料,將其嫁接為藍芽傳過來的實時資料 chdata。
// 該handler從bluetoothchatservice中獲取資訊

private final handler mhandler = new handler()

break;

case message_write:

break;

case message_read:

byte readbuf = (byte) msg.obj;

int len = msg.arg1/32; // 32個位元組,目前測試:回傳資料均為32的整數倍。

float chdata = new float[3][len];

chdata = data_syn.bytestofloat(readbuf, msg.arg1);

for(int i = 0; i < len; i++)

ntotalnum = ntotalnum + len;

int npadding = values.size() - xaxis_range;

log.e(tag,"values長度"+integer.tostring( values.size() )+

"|ntotalnum值 "+integer.tostring( ntotalnum ));

if (npadding > 0)

// linechart.setvisiblexrange( ntotalnum-xaxis_range,ntotalnum );

}setchartdata( );

linechart.invalidate();

break;

case message_device_name:

// 儲存已連線裝置的名稱

mconnecteddevicename = msg.getdata().getstring(device_name);

"連線到 " + mconnecteddevicename, toast.length_short)

.show();

break;

case message_toast:

msg.getdata().getstring(toast), toast.length_short)

.show();

break;

}} };

三、資料的動態更新。前端資料不斷更新,把接收到的歷史資料都顯示出現影響美觀。《mpandroidchart 教程》(八)採用的是removelastentry的方法來截短顯示,不改變資料本身。我的實現方法是,設定一定長度的顯示視窗(xaxis_range),直動態接移除多餘的資料,記憶體的資料即為顯示的資料。

int npadding = values.size() - xaxis_range;

if (npadding > 0)

}

四、總結。對於我等新手,借鑑網上優秀**資源,對建立信心還是蠻重要的。原始碼鏈結藉此致敬前面幾位老師的**分享。

MpandroidChart設定新增均線(均值線)

設定均值 limitline ll2 new limitline 7,均值 ll2.setlabel 均值 ll2.settextcolor color.parsecolor 5dbcfe ll2.setlinewidth 1f ll2.setenabled true ll2.setlinecolo...

WPF與緩動 四 弧形緩動

wpf與緩動 四 弧形緩動 周銀輝 弧形緩動就是其緩動曲線為一段圓弧,如何我們假設圓弧上的點的斜率為速度的話,那麼可以想像其速度的變化多麼具有戲劇性,其加速或減速來得很突然,與5次緩動差不多.參考以下 圓形緩動 protected override double getcurrentvaluecor...

Employment Planning 動規小練

employment planning 原題鏈結 對於當前月份所需人數,和僱傭最大所需人數之間的情況進行討論。由於解雇金額和僱傭金額的存在,會存在一次性僱傭更多的人以減少解雇金額的情況,所以要討論到所需最大人數。include include include include include incl...