저는 정말 Java에 익숙하지 않아 동적으로 그래프를 그릴 때 도움이 필요합니다. 내 Arduino에서 데이터를 수신하는 BLUWON을 사용하고 있습니다. BLuetoothChat 샘플 코드를 수정하여 광산에 맞게 수정했습니다. 필자가 알아야 할 유일한 방법은 String 배열에서 값을 추출하여 그래프에 동적으로 그릴 수있는 방법입니다.AChartEngine을 사용한 동적 플로팅에 대한 지침이 필요합니다.
Point.java에서package com.example.fypapp;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.Point;
import org.achartengine.model.TimeSeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.content.Context;
import android.graphics.Color;
public class LineGraph {
private GraphicalView view;
private TimeSeries dataset = new TimeSeries("Force Sensor Reading");
private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset();
private XYSeriesRenderer renderer = new XYSeriesRenderer(); //used for customizing
private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
@SuppressWarnings("deprecation")
public LineGraph()
{
//add single dataset to multiple dataset
mDataset.addSeries(dataset);
//Customization for line 1
renderer.setColor(Color.WHITE);
renderer.setPointStyle(PointStyle.CIRCLE);
renderer.setFillPoints(false);
//enable customization
mRenderer.setApplyBackgroundColor(true);
mRenderer.setBackgroundColor(Color.TRANSPARENT);
mRenderer.setChartTitle("Force Sensor Readings From Device");
float textSize = 30, textSmaller = 20, angle = 270;
mRenderer.setChartTitleTextSize(textSize);
mRenderer.setZoomEnabled(true, false);
//mRenderer.setZoomButtonsVisible(true);
mRenderer.setXTitle("Time (s)");
mRenderer.setYTitle("Grip force (kgf)");
mRenderer.setAxisTitleTextSize(textSize);
mRenderer.setYLabelsAngle(angle);
mRenderer.setLabelsTextSize(textSize);
mRenderer.setChartValuesTextSize(textSize);
mRenderer.setLegendTextSize(textSmaller);
mRenderer.setLabelsColor(Color.rgb(112, 128, 144)); //slate grey color
mRenderer.setAxesColor(Color.YELLOW);
mRenderer.setGridColor(Color.YELLOW);
mRenderer.setShowGrid(true);
mRenderer.setPanEnabled(true, false);
//adjusting margin width of y-axis (so y axis labels can be seen)
int[] i = mRenderer.getMargins();
i[0] += 50;//top
i[1] += 50;//left (increment here)
//i[2] = 0;//bottom
//i[3] = 0;//right
mRenderer.setMargins(i);
//add single renderer to multiple renderer
mRenderer.addSeriesRenderer(renderer);
}
public GraphicalView getView(Context context)
{
view = ChartFactory.getLineChartView(context, mDataset, mRenderer);
return view;
}
public void addNewPoints(com.example.fypapp.Point p)
{
dataset.add(p.getX(), p.getY());
}
}
(LineGraph.java의 addNewPoints 기능을위한 클래스)
LineGraph.java에서 : 나는 논문 코드로 남아있어까지 AChartEngine 사용에 대한 튜토리얼 떨어져 몇 가지 아이디어를했다package com.example.fypapp;
public class Point {
private int x;
private int y;
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public int getX()
{
return x;
}
public int getY()
{
return y;
}
}
솔직히 나는 왜 포인트 클래스가 필요한지 또는 어떻게 사용해야하는지 잘 모르겠습니다.
내 메인 클래스에는 Bluetooth 연결이 설정 될 때 호출되는 핸들러에 MESSAGE_READ라는 사례가 있습니다. MESSAGE_READ 케이스의 코드가 계속해서 다른 클래스의 실행()에서 호출되기 때문에 반복 계속됩니다
case MESSAGE_READ:
readMessage = (String) msg.obj;
if(readMessage != null)
{
Log.i(TAG, "Data sent is " + readMessage);
lineGraphPlot(readMessage); //a function I want to implement that plots the graph
}
count++;
break;
readMessage 공공 정적 문자열입니다, 아두 이노에서 업데이트 된 수치 데이터와 MESSAGE_READ를 호출 할 때.
lineGraph의 그래프에 readMessage 값을 동적으로 표시하는 lineGraphPlot이라는 함수를 어떻게 작성할 수 있는지 알고 싶습니다. 미리 감사드립니다.
어떻게 u는 메시지를 표시하고 싶어에서 achartengine의 샘플 코드는 모든 정보를 얻을 것이다 볼 수 있나요? 텍스트 뷰를 추가하고 테스트 값을 동적으로 업데이트 할 수 있습니다. – keshav
그 방법을 알 수 있겠습니까? 감사합니다 – user3307418
당신은 그래프 레이아웃 위에 텍스트 뷰를 추가하고 텍스트 메시지를 변경할 수 있습니다. 그리고 당신이 그래프에서 그것을하기를 원한다면 단지 주석 텍스트를 사용할 수 있습니다. – keshav