Hii !!
I have extracted the ECG Sample Code from your source project and i want to update the same RealTime via Bluetooth. I am getting a nullpoint exception.
Below is my source code too along with exception.
Exception
06-18 15:44:02.708 15813-15813/com.advancetechindia.wirelessecg
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.advancetechindia.wirelessecg, PID: 15813
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.advancetechindia.wirelessecg/com.advancetechindia.wirelessecg.MainActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method
‘com.scichart.extensions.builders.DataSeriesBuilder$XyDataSeriesBuilder
com.scichart.extensions.builders.SciChartBuilder.newXyDataSeries(java.lang.Class,
java.lang.Class)’ on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2561)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method
‘com.scichart.extensions.builders.DataSeriesBuilder$XyDataSeriesBuilder
com.scichart.extensions.builders.SciChartBuilder.newXyDataSeries(java.lang.Class,
java.lang.Class)’ on a null object reference
at com.advancetechindia.wirelessecg.MainActivity.(MainActivity.java:394)
at java.lang.Class.newInstance(Native Method)
at android.app.Instrumentation.newActivity(Instrumentation.java:1100)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2551)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
Source Code
settingChart() is Called in onCreate() of Activity
//SciChart Work
protected final SciChartBuilder sciChartBuilder =
SciChartBuilder.instance();
private final static long TIME_INTERVAL = 20;private final IXyDataSeries<Double, Double> series0 = sciChartBuilder.newXyDataSeries(Double.class,
Double.class).withFifoCapacity(3850).build();
private final IXyDataSeries<Double, Double> series1 = sciChartBuilder.newXyDataSeries(Double.class,
Double.class).withFifoCapacity(3850).build();private ArrayList<Double> sourceData; private int _currentIndex; private int _totalIndex; private MainActivity.TraceAOrB whichTrace = MainActivity.TraceAOrB.TraceA; private final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(); private ScheduledFuture<?> schedule; private volatile boolean isRunning = true; SciChartSurface surface; private void settingSciChart() { sourceData=new ArrayList<>(); surface=(SciChartSurface)findViewById(R.id.ecg); initExample(); } private void initExample() { UpdateSuspender.using(surface, new Runnable() { @Override public void run() { final IAxis xBottomAxis = sciChartBuilder.newNumericAxis() .withVisibleRange(new DoubleRange(0d, 10d)) .withAutoRangeMode(AutoRange.Never) .withAxisTitle("Time (seconds)") .build(); final IAxis yRightAxis = sciChartBuilder.newNumericAxis() .withVisibleRange(new DoubleRange(-0.5d, 1.5d)) .withAxisTitle("Voltage (mV)") .build(); final IRenderableSeries rs1 = sciChartBuilder.newLineSeries() .withDataSeries(series0) .build(); final IRenderableSeries rs2 = sciChartBuilder.newLineSeries() .withDataSeries(series1) .build(); Collections.addAll(surface.getXAxes(), xBottomAxis); Collections.addAll(surface.getYAxes(), yRightAxis); Collections.addAll(surface.getRenderableSeries(), rs1, rs2); } }); schedule = scheduledExecutorService.scheduleWithFixedDelay(new Runnable() { @Override public void run() { UpdateSuspender.using(surface, appendDataRunnable); } }, 0, TIME_INTERVAL, TimeUnit.MILLISECONDS); } private final Runnable appendDataRunnable = new Runnable() { @Override public synchronized void run() { if (isRunning) { for (int i = 0; i < 10; i++) { appendPoint(400); } } } }; private synchronized void appendPoint(double sampleRate) { if (_currentIndex >= sourceData.size()) { _currentIndex = 0; } // Get the next voltage and time, and append to the chart double voltage = sourceData.get(_currentIndex); double time = (_totalIndex / sampleRate) % 10; if (whichTrace == MainActivity.TraceAOrB.TraceA) { series0.append(time, voltage); series1.append(time, Double.NaN); } else { series0.append(time, Double.NaN); series1.append(time, voltage); } _currentIndex++; _totalIndex++; if (_totalIndex % 4000 == 0) { whichTrace = whichTrace == MainActivity.TraceAOrB.TraceA ? MainActivity.TraceAOrB.TraceB : MainActivity.TraceAOrB.TraceA; } } enum TraceAOrB { TraceA, TraceB }
- Gourav Sharma asked 6 years ago
- last active 6 years ago