@@ -117,7 +117,6 @@ public class OscilloscopeActivity extends AppCompatActivity implements View.OnCl
117117 public boolean isXYPlotSelected ;
118118 public boolean sineFit ;
119119 public boolean squareFit ;
120- public boolean viewIsClicked ;
121120 public boolean isCH1FrequencyRequired ;
122121 public boolean isCH2FrequencyRequired ;
123122 public String triggerChannel ;
@@ -204,6 +203,8 @@ public class OscilloscopeActivity extends AppCompatActivity implements View.OnCl
204203 private HashMap <String , Integer > channelIndexMap ;
205204 private Integer [] channelColors = {Color .CYAN , Color .GREEN , Color .WHITE , Color .MAGENTA };
206205 private String [] loggingYdata = new String [4 ];
206+ public String xyPlotAxis1 = "CH1" ;
207+ public String xyPlotAxis2 = "CH2" ;
207208
208209 private enum CHANNEL {CH1 , CH2 , CH3 , MIC }
209210
@@ -257,7 +258,6 @@ public void onClick(View v) {
257258 curveFittingChannel2 = "None" ;
258259 xyPlotXAxisChannel = CHANNEL .CH1 .toString ();
259260 xyPlotYAxisChannel = CHANNEL .CH2 .toString ();
260- viewIsClicked = false ;
261261 analyticsClass = new AnalyticsClass ();
262262 isCH1FrequencyRequired = false ;
263263 isCH2FrequencyRequired = false ;
@@ -456,12 +456,9 @@ public void run() {
456456 }
457457 }
458458
459- if (scienceLab .isConnected () && viewIsClicked && isXYPlotSelected ) {
459+ if (scienceLab .isConnected () && isXYPlotSelected ) {
460460 xyPlotTask = new XYPlotTask ();
461- if (xyPlotXAxisChannel .equals (CHANNEL .CH2 .toString ()))
462- xyPlotTask .execute (xyPlotYAxisChannel );
463- else
464- xyPlotTask .execute (xyPlotXAxisChannel );
461+ xyPlotTask .execute (xyPlotAxis1 , xyPlotAxis2 );
465462 synchronized (lock ) {
466463 try {
467464 lock .wait ();
@@ -1106,69 +1103,65 @@ protected void onPostExecute(Void aVoid) {
11061103 }
11071104
11081105 public class XYPlotTask extends AsyncTask <String , Void , Void > {
1109- String analogInput ;
1110- float [] xFloatData = new float [1000 ];
1111- float [] yFloatData = new float [1000 ];
1106+ private String analogInput1 ;
1107+ private String analogInput2 ;
1108+ private float [] xFloatData ;
1109+ private float [] yFloatData ;
11121110
11131111 @ Override
11141112 protected Void doInBackground (String ... params ) {
1113+ analogInput1 = params [0 ];
1114+ analogInput2 = params [1 ];
11151115 HashMap <String , double []> data ;
1116- if ("CH2" .equals (xyPlotXAxisChannel ) || "CH2" .equals (xyPlotYAxisChannel )) {
1117- analogInput = params [0 ];
1118- data = scienceLab .captureTwo (1000 , 10 , analogInput , false );
1119- double y1Data [] = data .get ("y1" );
1120- double y2Data [] = data .get ("y2" );
1121- if ("CH2" .equals (xyPlotYAxisChannel )) {
1122- for (int i = 0 ; i < y1Data .length ; i ++) {
1123- xFloatData [i ] = (float ) y1Data [i ];
1124- yFloatData [i ] = (float ) y2Data [i ];
1116+ if (analogInput1 .equals (analogInput2 )) {
1117+ scienceLab .captureTraces (1 , samples , timeGap , analogInput1 , isTriggerSelected , null );
1118+ data = scienceLab .fetchTrace (1 );
1119+ double [] yData = data .get ("y" );
1120+ int n = yData .length ;
1121+ xFloatData = new float [n ];
1122+ yFloatData = new float [n ];
1123+ for (int i = 0 ; i < n ; i ++) {
1124+ xFloatData [i ] = (float ) yData [i ];
1125+ yFloatData [i ] = (float ) yData [i ];
1126+ }
1127+ } else {
1128+ int noChannels = 1 ;
1129+ if ((analogInput1 .equals (CHANNEL .CH1 .toString ()) && analogInput2 .equals (CHANNEL .CH2 .toString ())) || (analogInput1 .equals (CHANNEL .CH2 .toString ()) && analogInput2 .equals (CHANNEL .CH1 .toString ()))) {
1130+ noChannels = 2 ;
1131+ scienceLab .captureTraces (noChannels , 175 , timeGap , "CH1" , isTriggerSelected , null );
1132+ data = scienceLab .fetchTrace (1 );
1133+ double [] yData1 = data .get ("y" );
1134+ data = scienceLab .fetchTrace (2 );
1135+ double [] yData2 = data .get ("y" );
1136+ int n = Math .min (yData1 .length , yData2 .length );
1137+ xFloatData = new float [n ];
1138+ yFloatData = new float [n ];
1139+ for (int i = 0 ; i < n ; i ++) {
1140+ xFloatData [i ] = (float ) yData1 [i ];
1141+ yFloatData [i ] = (float ) yData2 [i ];
11251142 }
1143+
11261144 } else {
1127- for (int i = 0 ; i < y1Data .length ; i ++) {
1128- xFloatData [i ] = (float ) y2Data [i ];
1129- yFloatData [i ] = (float ) y1Data [i ];
1145+ noChannels = 4 ;
1146+ scienceLab .captureTraces (noChannels , 175 , timeGap , "CH1" , isTriggerSelected , null );
1147+ data = scienceLab .fetchTrace (channelIndexMap .get (analogInput1 ) + 1 );
1148+ double [] yData1 = data .get ("y" );
1149+ data = scienceLab .fetchTrace (channelIndexMap .get (analogInput2 ) + 1 );
1150+ double [] yData2 = data .get ("y" );
1151+ int n = Math .min (yData1 .length , yData2 .length );
1152+ xFloatData = new float [n ];
1153+ yFloatData = new float [n ];
1154+ for (int i = 0 ; i < n ; i ++) {
1155+ xFloatData [i ] = (float ) yData1 [i ];
1156+ yFloatData [i ] = (float ) yData2 [i ];
11301157 }
11311158 }
1132- } else {
1133- data = scienceLab .captureFour (1000 , 10 , analogInput , false );
1134- double [] y1Data = data .get ("y" );
1135- double [] y3Data = data .get ("y3" );
1136- double [] y4Data = data .get ("y4" );
1137- switch (xyPlotXAxisChannel ) {
1138- case "CH1" :
1139- for (int i = 0 ; i < y1Data .length ; i ++) {
1140- xFloatData [i ] = (float ) y1Data [i ];
1141- }
1142- break ;
1143- case "CH3" :
1144- for (int i = 0 ; i < y3Data .length ; i ++) {
1145- xFloatData [i ] = (float ) y3Data [i ];
1146- }
1147- break ;
1148- case "MIC" :
1149- for (int i = 0 ; i < y4Data .length ; i ++) {
1150- xFloatData [i ] = (float ) y4Data [i ];
1151- }
1152- break ;
1153- }
11541159
1155- switch (xyPlotYAxisChannel ) {
1156- case "CH1" :
1157- for (int i = 0 ; i < y1Data .length ; i ++) {
1158- yFloatData [i ] = (float ) y1Data [i ];
1159- }
1160- break ;
1161- case "CH3" :
1162- for (int i = 0 ; i < y3Data .length ; i ++) {
1163- yFloatData [i ] = (float ) y3Data [i ];
1164- }
1165- break ;
1166- case "MIC" :
1167- for (int i = 0 ; i < y4Data .length ; i ++) {
1168- yFloatData [i ] = (float ) y4Data [i ];
1169- }
1170- break ;
1171- }
1160+ }
1161+ try {
1162+ Thread .sleep (200 );
1163+ } catch (InterruptedException e ) {
1164+ e .printStackTrace ();
11721165 }
11731166 return null ;
11741167 }
@@ -1177,6 +1170,9 @@ protected Void doInBackground(String... params) {
11771170 protected void onPostExecute (Void aVoid ) {
11781171 super .onPostExecute (aVoid );
11791172 graph .plotData (xFloatData , yFloatData , 1 );
1173+ synchronized (lock ) {
1174+ lock .notify ();
1175+ }
11801176 }
11811177 }
11821178
0 commit comments