diff --git a/app/build.gradle b/app/build.gradle
index 0c8e7ab..dacb4a8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,6 +10,7 @@ android {
targetSdkVersion 30
versionCode 1
versionName "1.0"
+ multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
@@ -24,6 +25,9 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
+ configurations.all {
+ resolutionStrategy.force 'com.google.android.gms:play-services-base:17.1.0'
+ }
}
dependencies {
@@ -33,9 +37,13 @@ dependencies {
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.github.felHR85:UsbSerial:6.1.0'
implementation 'com.github.ybq:Android-SpinKit:1.4.0'
+ implementation 'com.google.android.gms:play-services-base:17.1.0'
+ implementation 'org.apache.poi:poi:4.0.0'
+ implementation 'org.apache.poi:poi-ooxml:4.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+ implementation 'com.karumi:dexter:6.2.2'
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2fddac2..245ada7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,30 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+ android:name=".Service.UsbService"
+ android:enabled="true">
-
+
\ No newline at end of file
diff --git a/app/src/main/java/shanmukha/in/sickle_cell/Service/UsbService.java b/app/src/main/java/shanmukha/in/sickle_cell/Service/UsbService.java
index 06eb212..4485dae 100644
--- a/app/src/main/java/shanmukha/in/sickle_cell/Service/UsbService.java
+++ b/app/src/main/java/shanmukha/in/sickle_cell/Service/UsbService.java
@@ -1,28 +1,53 @@
package shanmukha.in.sickle_cell.Service;
+import android.Manifest;
import android.app.PendingIntent;
+import android.app.ProgressDialog;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.PackageManager;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbDeviceConnection;
import android.hardware.usb.UsbManager;
import android.os.Binder;
+import android.os.Environment;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.util.Log;
import android.widget.Toast;
+import androidx.core.content.ContextCompat;
+
import com.felhr.usbserial.CDCSerialDevice;
import com.felhr.usbserial.UsbSerialDevice;
import com.felhr.usbserial.UsbSerialInterface;
+import org.apache.poi.hssf.usermodel.HSSFCell;
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.Row;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import shanmukha.in.sickle_cell.Model.PojoParameters;
@@ -32,7 +57,10 @@ import static shanmukha.in.sickle_cell.UI.SerialData.fobj;
public class UsbService extends Service {
private Context appContext;
-
+ File filePath1 = null;
+ File filePath = null;
+ String directory_path;
+ private ProgressDialog loadingBar;
public static final String TAG = "UsbService";
public static int tr = 0;
@@ -76,19 +104,21 @@ public class UsbService extends Service {
try {
data = new String(arg0, "UTF-8");
+ Log.e("data received",data);
data.concat("/n");
if (data.contains(",")) {
-
+ appendLog("Hi");
String[] namesList = data.split(",");
BigDecimal d5 = new BigDecimal(namesList[3]);
ddash_427 = (float) (Float.parseFloat(String.valueOf((d5))) - 427.00);
- ddash_555 = (float) (Float.parseFloat(String.valueOf((d5))) - 555.00);
+ ddash_555 = (float) (Float.parseFloat(String.valueOf((d5))) - 539.00);
+ // ddash_539 = (float) (Float.parseFloat(String.valueOf((d5))) - 539.00);
BigDecimal d3 = new BigDecimal(namesList[2]);
@@ -351,16 +381,16 @@ public class UsbService extends Service {
@Override
public void run() {
while (true) {
- byte[] buffer = new byte[100];
+ byte[] buffer = new byte[81024];
int n = serialPort.syncRead(buffer, 0);
if (n > 0) {
byte[] received = new byte[n];
System.arraycopy(buffer, 0, received, 0, n);
String receivedStr = new String(received);
- // Log.e("Recived Data", receivedStr);
String data = null;
-
data = new String(received);
+ Log.e("Recived Data",data);
+
data.concat("/n");
if (fobj.getConnect_flag() == 1) {
@@ -442,6 +472,8 @@ public class UsbService extends Service {
}
if (fobj.getRun_flag() == 1) {
+
+
if (data.contains(String.valueOf(obj.getX_427()))) {
String ds2 = data.substring(data.lastIndexOf(":") + 1).trim();
f_427 = ds2;
@@ -463,6 +495,12 @@ public class UsbService extends Service {
}
+ try {
+ buttonCreateFile1(data);
+ readfile1();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
}
@@ -493,7 +531,14 @@ public class UsbService extends Service {
}
+ try {
+ buttonCreateFile(data);
+ readfile();
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
}
@@ -535,5 +580,161 @@ public class UsbService extends Service {
}
}
}
+ public void appendLog(String text)
+ {
+ File logFile = new File("sdcard/log.file");
+ if (!logFile.exists())
+ {
+ try
+ {
+ logFile.createNewFile();
+ }
+ catch (IOException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ try
+ {
+ //BufferedWriter for performance, true to set append to file flag
+ BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true));
+ buf.append(text);
+ buf.newLine();
+ buf.close();
+ }
+ catch (IOException e)
+ {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+
+
+ public void buttonCreateFile1(String data) throws IOException {
+ String directory_path = Environment.getExternalStorageDirectory().getPath() + "/Test Report/";
+ File file = new File(directory_path);
+ if (!file.exists()) {
+ file.mkdirs();
+ }
+ File file1 = new File(directory_path, "Data_Run" +".txt");
+ if (!file1.exists()) {
+
+ file1.createNewFile();
+
+ }
+ PrintWriter writer = new PrintWriter(file1);
+ writer.print("");
+// other operations
+ writer.close();
+ FileWriter writer1 = new FileWriter(file1, true);
+ writer1.append(data);
+ writer1.flush();
+ writer1.close();
+
+
+
+
+
+
+
+
+ }
+ public void buttonCreateFile(String data) throws IOException {
+ String directory_path = Environment.getExternalStorageDirectory().getPath() + "/Test Report/";
+ File file = new File(directory_path);
+ if (!file.exists()) {
+
+ file.mkdirs();
+ }
+ File file1 = new File(directory_path, "Data_Baseline" +".txt");
+ if (!file1.exists()) {
+
+ file1.createNewFile();
+
+ }
+ PrintWriter writer = new PrintWriter(file1);
+ writer.print("");
+// other operations
+ writer.close();
+ FileWriter writer1 = new FileWriter(file1, true);
+ writer1.append(data);
+ writer1.flush();
+ writer1.close();
+
+
+
+
+
+
+
+
+ }
+
+ public void readfile()
+ {
+ String directory_path = Environment.getExternalStorageDirectory().getPath() + "/Test Report/";
+ File file = new File(directory_path, "Data_Baseline" +".txt");
+
+
+
+
+//Get the text file
+
+//Read text from file
+ StringBuilder text = new StringBuilder();
+
+ try {
+ BufferedReader br = new BufferedReader(new FileReader(file));
+ String line;
+
+ while ((line = br.readLine()) != null) {
+ Thread.sleep(3);
+ Log.e("text", line);
+ /* text.append(line);
+ text.append('\n');*/
+ }
+ br.close();
+ }
+ catch (IOException | InterruptedException e) {
+ //You'll need to add proper error 1handling here
+ }
+
+//Find the view by its id
+
+ }
+ public void readfile1()
+ {
+ String directory_path = Environment.getExternalStorageDirectory().getPath() + "/Test Report/";
+ File file = new File(directory_path, "Data_Run" +".txt");
+
+
+
+
+//Get the text file
+
+//Read text from file
+ StringBuilder text = new StringBuilder();
+
+ try {
+ BufferedReader br = new BufferedReader(new FileReader(file));
+ String line;
+
+ while ((line = br.readLine()) != null) {
+ Thread.sleep(1);
+ Log.e("text", line);
+ /* text.append(line);
+ text.append('\n');*/
+ }
+ br.close();
+ }
+ catch (IOException | InterruptedException e) {
+ //You'll need to add proper error 1handling here
+ }
+
+//Find the view by its id
+
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/shanmukha/in/sickle_cell/UI/SerialData.java b/app/src/main/java/shanmukha/in/sickle_cell/UI/SerialData.java
index 80679be..cab6e33 100644
--- a/app/src/main/java/shanmukha/in/sickle_cell/UI/SerialData.java
+++ b/app/src/main/java/shanmukha/in/sickle_cell/UI/SerialData.java
@@ -1,5 +1,6 @@
package shanmukha.in.sickle_cell.UI;
+import android.Manifest;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
@@ -10,20 +11,36 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.hardware.usb.UsbDevice;
+import android.net.Uri;
+import android.os.Build;
import android.os.Bundle;
+import android.os.Environment;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
+import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
+import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+
+import com.karumi.dexter.Dexter;
+import com.karumi.dexter.MultiplePermissionsReport;
+import com.karumi.dexter.PermissionToken;
+import com.karumi.dexter.listener.PermissionDeniedResponse;
+import com.karumi.dexter.listener.PermissionGrantedResponse;
+import com.karumi.dexter.listener.PermissionRequest;
+import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
+import com.karumi.dexter.listener.single.PermissionListener;
import java.lang.ref.WeakReference;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -96,6 +113,7 @@ public class SerialData extends AppCompatActivity {
}
};
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -104,6 +122,71 @@ public class SerialData extends AppCompatActivity {
mHandler = new MyHandler(this);
textViewTitle = findViewById(R.id.textViewTitle1);
+
+ Dexter.withContext(this)
+ .withPermissions(
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE,
+ Manifest.permission.READ_EXTERNAL_STORAGE
+ ).withListener(new MultiplePermissionsListener() {
+ @RequiresApi(api = Build.VERSION_CODES.R)
+ @Override public void onPermissionsChecked(MultiplePermissionsReport report) {
+
+
+ if (Build.VERSION.SDK_INT == Build.VERSION_CODES.Q) {
+ Dexter.withContext(getApplicationContext())
+ .withPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
+ .withListener(new PermissionListener() {
+ @Override
+ public void onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {
+ Toast.makeText(SerialData.this, "allowed", Toast.LENGTH_SHORT).show();
+
+ }
+
+ @Override
+ public void onPermissionDenied(PermissionDeniedResponse permissionDeniedResponse) {
+
+ }
+
+ @Override
+ public void onPermissionRationaleShouldBeShown(PermissionRequest permissionRequest, PermissionToken permissionToken) {
+ permissionToken.continuePermissionRequest();
+ }
+ }).check();
+
+
+
+
+
+ ActivityCompat.requestPermissions(SerialData.this,
+ new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 1);
+ }
+
+
+
+
+
+
+
+
+ else if (!Environment.isExternalStorageManager()) {
+ Intent intent = new Intent();
+ intent.setAction(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
+ Uri uri = Uri.fromParts("package", "shanmukha.in.sickle_cell", null);
+ intent.setData(uri);
+ startActivity(intent);
+ Toast.makeText(SerialData.this, "allowed", Toast.LENGTH_SHORT).show();
+ }
+ }
+ @Override public void onPermissionRationaleShouldBeShown(List permissions, PermissionToken token) { token.continuePermissionRequest();
+ }
+ }).check();
+
+ ActivityCompat.requestPermissions(this,
+ new String[]{
+ Manifest.permission.MANAGE_EXTERNAL_STORAGE}, 1);
+
+ ActivityCompat.requestPermissions(this,
+ new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, 0);
Button sendButton = (Button) findViewById(R.id.buttonSend);
Button baseli = (Button) findViewById(R.id.baseline_c);
Button runi = (Button) findViewById(R.id.run_c);
@@ -139,22 +222,43 @@ public class SerialData extends AppCompatActivity {
try {
- String string22 = "led2 50\r";
-
- usbService.write(string22.getBytes());
+ String string23 = "led1 50\r";
+ usbService.write(string23.getBytes());
Thread.sleep(2000);
-
String string1 = "autoset\r";
usbService.write(string1.getBytes());
Thread.sleep(2000);
Thread.sleep(Long.parseLong("1000"));
String string4 = "run\r";
+ Thread.sleep(2000);
+
+ usbService.write(string4.getBytes());
+ Thread.sleep(2000);
Thread.sleep(2000);
- usbService.write(string4.getBytes());
+
+
+ String string22 = "led2 0\r";
+
+
+
+ usbService.write(string22.getBytes());
+ Thread.sleep(2000);
+
+ String string2 = "autoset\r";
+ usbService.write(string2.getBytes());
+ Thread.sleep(2000);
+
+ Thread.sleep(Long.parseLong("1000"));
+ String string6 = "run\r";
+
+
+ Thread.sleep(2000);
+
+ usbService.write(string6.getBytes());
Thread.sleep(2000);
int number427 = Integer.valueOf(obj.getX_427());
@@ -322,15 +426,19 @@ public class SerialData extends AppCompatActivity {
Log.e("O 427 pixel ", obj.getO_427());
+ ab_427 = Math.log10(Double.parseDouble(obj.getI_427())/Double.parseDouble(obj.getF_427()));
+ ab_555= Math.log10(Double.parseDouble(obj.getI_555())/Double.parseDouble(obj.getF_555()));
- ab_427 = Math.log10(Double.parseDouble(obj.getO_427()) / (Double.parseDouble(obj.getI_427()) - Double.parseDouble(obj.getF_427())));
+ Log.e("ab 427", String.valueOf(ab_427));
+
+ /* ab_427 = Math.log10(Double.parseDouble(obj.getO_427()) / (Double.parseDouble(obj.getI_427()) - Double.parseDouble(obj.getF_427())));
Log.e("without log value 427", String.valueOf(Double.parseDouble(obj.getO_427()) / (Double.parseDouble(obj.getI_427()) - Double.parseDouble(obj.getF_427()))));
Log.e("ab 427", String.valueOf(ab_427));
ab_555 = Math.log10(Double.parseDouble(obj.getO_555()) / (Double.parseDouble(obj.getI_555()) - Double.parseDouble(obj.getF_555())));
Log.e("without log value 555", String.valueOf(Double.parseDouble(obj.getO_555()) / (Double.parseDouble(obj.getI_555()) - Double.parseDouble(obj.getF_555()))));
-
+*/
Log.e("ab 555 ", String.valueOf(ab_555));
ratio = ab_555 / ab_427;
@@ -418,6 +526,14 @@ public class SerialData extends AppCompatActivity {
usbService.write(string45.getBytes());
Thread.sleep(4000);
+ String string23 = "print 1 3694\r";
+ Thread.sleep(3000);
+
+ usbService.write(string23.getBytes());
+ Thread.sleep(5000);
+
+
+
} catch (Exception e) {
Toast.makeText(SerialData.this, "Perform Run Step Again ", Toast.LENGTH_SHORT).show();
@@ -476,21 +592,32 @@ public class SerialData extends AppCompatActivity {
if (flag == 0) {
- String string22 = "led2 50\r";
- usbService.write(string22.getBytes());
- String string1 = "autoset\r";
- usbService.write(string1.getBytes());
try {
+ String string22 = "led2 25\r";
+
+ usbService.write(string22.getBytes());
+
Thread.sleep(Long.parseLong("1000"));
- String string4 = "run\r";
+
+
+
+
+
+
+
+
+ String string7 = "autoset\r";
+ usbService.write(string7.getBytes());
+ Thread.sleep(Long.parseLong("1000"));
+ String string8 = "run\r";
Thread.sleep(2000);
- usbService.write(string4.getBytes());
+ usbService.write(string8.getBytes());
Thread.sleep(2000);
int number427 = Integer.valueOf(obj.getX_427());
@@ -512,6 +639,21 @@ public class SerialData extends AppCompatActivity {
Thread.sleep(4000);
+
+
+ String string23 = "print 1 3694\r";
+ Thread.sleep(3000);
+
+ usbService.write(string23.getBytes());
+ Thread.sleep(5000);
+
+
+
+
+
+
+
+
if (obj.getI_427() == null && "".equals(obj.getI_427())) {
Toast.makeText(SerialData.this, "Perform Baseline Step Again ", Toast.LENGTH_SHORT).show();
@@ -552,6 +694,7 @@ public class SerialData extends AppCompatActivity {
alert.show();
+
} else {
fobj.setBaseline_flag(1);
fobj.setRun_flag(0);
@@ -597,6 +740,13 @@ public class SerialData extends AppCompatActivity {
Thread.sleep(4000);
+ String string23 = "print 1 3694\r";
+ Thread.sleep(3000);
+
+ usbService.write(string23.getBytes());
+ Thread.sleep(5000);
+
+
if (obj.getI_427() == null && "".equals(obj.getI_427())) {
@@ -626,6 +776,7 @@ public class SerialData extends AppCompatActivity {
sta.setBase_para_flag(1);
+
}
@@ -665,9 +816,12 @@ public class SerialData extends AppCompatActivity {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
- String string22 = "read\r";
-
+ /* String string22 = "read\r";
usbService.write(string22.getBytes());
+*/
+ String string22 = "read\r";
+ usbService.write(string22.getBytes());
+
}
@@ -713,7 +867,8 @@ public class SerialData extends AppCompatActivity {
if (flag == 0) {
- new Handler().postDelayed(new Runnable() {
+
+ new Handler().postDelayed(new Runnable() {
@Override
public void run() {
String string22 = "read\r";
@@ -721,6 +876,7 @@ public class SerialData extends AppCompatActivity {
usbService.write(string22.getBytes());
+
}
}, 5000);