|
@@ -24,10 +24,12 @@ import android.os.Environment;
|
|
|
import android.os.Handler;
|
|
|
import android.os.Message;
|
|
|
import android.os.SystemClock;
|
|
|
+import android.support.annotation.NonNull;
|
|
|
import android.support.v4.app.ActivityCompat;
|
|
|
import android.support.v4.content.ContextCompat;
|
|
|
import android.support.v7.app.AppCompatActivity;
|
|
|
import android.util.DisplayMetrics;
|
|
|
+import android.util.Log;
|
|
|
import android.view.Gravity;
|
|
|
import android.view.KeyEvent;
|
|
|
import android.view.View;
|
|
@@ -46,10 +48,14 @@ import java.io.BufferedReader;
|
|
|
import java.io.File;
|
|
|
import java.io.FileInputStream;
|
|
|
import java.io.IOException;
|
|
|
+import java.io.InputStream;
|
|
|
import java.io.InputStreamReader;
|
|
|
+import java.io.RandomAccessFile;
|
|
|
import java.io.Reader;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
|
+import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Locale;
|
|
|
import java.util.concurrent.ExecutorService;
|
|
@@ -148,7 +154,21 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
String updateLogShow= ""; //短路测试信息合并起来存放字符串
|
|
|
|
|
|
private byte showFlag = 0; //
|
|
|
- private byte btTestStep = 0;
|
|
|
+ private static final byte RAWDATA_FLAG = 0x01; //rawdata
|
|
|
+ private static final byte MANUALDATA_FLAG = 0x02; //manualdiff and manualreff
|
|
|
+ private static final byte DIFFDATA_1BYTE_FLAG = 0x03; //1 byte diffdata(GT9xxx)
|
|
|
+ private static final byte DIFFDATA_2BYTES_FLAG = 0x04; //2 bytes diffdata
|
|
|
+ private static final byte REFFDATA_FLAG = 0x05; //reffdata
|
|
|
+ private static final byte TESTING_FLAG = 0x06; //testing
|
|
|
+ private static final byte TEST_END_FLAG = 0x07; //test end
|
|
|
+ private static final byte STYLUSDATA_FLAG = 0x08; //stylus data
|
|
|
+ private static final byte STOP_FLAG = 0x09; //stop
|
|
|
+
|
|
|
+ private byte btTestStep = 0; //1.maximum and minimum test 2.change to normal mode 3.shorttest
|
|
|
+ private boolean bSaveShortTestResult = false;
|
|
|
+ private String strSaveRawdata1 = " ", strSaveRawdata2 = " ", strSaveRawdata3 = " ", strSaveRawdata4 = " ", strSaveRawdata5 = " ", strSaveRawdata6 = " ", strSaveRawdata7 = " ", strSaveRawdata8 = " ";
|
|
|
+ private String strSaveRawdata9 = " ", strSaveRawdata10 = " ", strSaveRawdata11 = " ", strSaveRawdata12 = " ", strSaveRawdata13 = " ", strSaveRawdata14 = " ", strSaveRawdata15 = " ", strSaveRawdata16 = " ";
|
|
|
+ private String strSaveRawDataMax = " ", strSaveRawDataMin = " ";
|
|
|
|
|
|
private boolean bShowDataFlag = false;
|
|
|
|
|
@@ -633,17 +653,17 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
//btn_StylusDataShow.setEnabled(false);
|
|
|
//btn_Stop.setEnabled(false);
|
|
|
|
|
|
- //选择本地文件
|
|
|
+ //选择文件
|
|
|
btn_ImportFileButton = (Button) findViewById(R.id.importtestpara);
|
|
|
btn_ImportFileButton.setOnClickListener(new View.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(View v) {
|
|
|
//ActivityCompat.requestPermissions( Config.this, new String[]{android
|
|
|
// .Manifest.permission.READ_EXTERNAL_STORAGE}, 2);
|
|
|
- Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
|
|
|
+ Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
|
|
|
intent.setType("*/*");//设置类型,我这里是任意类型,任意后缀的可以这样写。
|
|
|
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
|
|
- startActivityForResult(intent, 2);
|
|
|
+ startActivityForResult(intent, 1);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@@ -701,42 +721,60 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
String configString = "";
|
|
|
Uri uri = data.getData();
|
|
|
String fileString = "";
|
|
|
- if (requestCode == 1) { //U 盘 文 件
|
|
|
+ if (requestCode == 1 && resultCode == Activity.RESULT_OK) { //U 盘 文 件
|
|
|
+
|
|
|
+ //uri = null;
|
|
|
+ //if (data != null){
|
|
|
+ // uri = data.getData();
|
|
|
+ //}
|
|
|
|
|
|
- byte[] filebuffer;
|
|
|
- int len;
|
|
|
try {
|
|
|
+ InputStream inputStream = getContentResolver().openInputStream(uri);
|
|
|
+ BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
|
|
|
+ String line;
|
|
|
+ StringBuilder stringBuilder = new StringBuilder();
|
|
|
|
|
|
- //String fileString = "";
|
|
|
- File storage = new File("/storage");
|
|
|
- File[] files = storage.listFiles();
|
|
|
- for (final File file : files) {
|
|
|
- if (file.canRead()) {
|
|
|
- if (!file.getName().equals(Environment.getExternalStorageDirectory().getName())) {
|
|
|
- //满足该条件的文件夹就是u盘在手机上的目录
|
|
|
- fileString = (file.getPath()+"/GTxxxx_wingcool.tp");
|
|
|
- fileString = fileString.replaceAll(":", "/"); //将:改为/,以防某些系统文件目录读出是:
|
|
|
- edit_search.setText(fileString);
|
|
|
- }
|
|
|
- }
|
|
|
+ while ((line = reader.readLine()) != null){
|
|
|
+ stringBuilder.append(line);
|
|
|
}
|
|
|
|
|
|
- buffer = new StringBuffer();
|
|
|
- //String storageState = Environment.getExternalStorageState();
|
|
|
- //if (storageState.equals(Environment.MEDIA_MOUNTED)) {
|
|
|
- FileInputStream fileInputStream = new FileInputStream(fileString);
|
|
|
- filebuffer = new byte[1024];
|
|
|
- len = fileInputStream.read(filebuffer);
|
|
|
- while (len > 0) {
|
|
|
- buffer.append(new String(filebuffer, 0, len));
|
|
|
- len = fileInputStream.read(filebuffer);
|
|
|
- }
|
|
|
- fileInputStream.close();
|
|
|
- //}
|
|
|
+ reader.close();
|
|
|
|
|
|
- configString = buffer.toString();
|
|
|
+ configString = stringBuilder.toString();
|
|
|
+
|
|
|
+ //edit_search.setText(fileData);
|
|
|
+ edit_search.setText(uri.getPath());
|
|
|
+
|
|
|
+ //edtShortCircuitInfo.setText(configString);
|
|
|
+
|
|
|
+ int i,j,k,l= 0;
|
|
|
+
|
|
|
+ String stringMaxVal,stringMinVal;
|
|
|
+
|
|
|
+ i = configString.indexOf("[Node threshold]");
|
|
|
+
|
|
|
+ j = configString.indexOf("Max=", i);
|
|
|
+
|
|
|
+ k = configString.indexOf("Min=", i);
|
|
|
+
|
|
|
+ l = configString.indexOf("[TEST]", i);
|
|
|
+
|
|
|
+ stringMaxVal = configString.substring(j + 4, k);
|
|
|
+ stringMinVal = configString.substring(k + 4, l);
|
|
|
+
|
|
|
+ //value = value.trim(); //去除空格
|
|
|
+ //configString = configString.replaceAll("0x", ""); //0x转换为没有
|
|
|
+ //editdetail.setText(configString.toString()); //buffer.toString())就是读出的内容字符
|
|
|
+
|
|
|
+ String[] stringMaxValArr = stringMaxVal.split(",");
|
|
|
+ String[] stringMinValArr = stringMinVal.split(",");
|
|
|
+
|
|
|
+ for (i = 0; i < stringMaxValArr.length - 1; i++){
|
|
|
+ iRawDataMaxVal[i] = Integer.parseInt(stringMaxValArr[i], 10);
|
|
|
+ iRawDataMinVal[i] = Integer.parseInt(stringMinValArr[i], 10);
|
|
|
+ }
|
|
|
|
|
|
- } catch (IOException ex) {
|
|
|
+ } catch (IOException c) {
|
|
|
edit_search.setText(uri.getPath() + "——" + getResources().getString(R.string.invalidfile));
|
|
|
return;
|
|
|
}
|
|
@@ -940,7 +978,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
//{
|
|
|
// byProductType = GT7;
|
|
|
//}
|
|
|
- if ((iProductId == 0x0829) || (iProductId == 0x0528))
|
|
|
+ if ((iProductId == 0x0829) || (iProductId == 0x0528) || (iProductId == 0x0928))
|
|
|
{
|
|
|
byProductType = GT29336;
|
|
|
}
|
|
@@ -1340,7 +1378,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
int i;
|
|
|
int length = 0;
|
|
|
//switch to read data mode
|
|
|
- if (showFlag == 1) {
|
|
|
+ if (showFlag == RAWDATA_FLAG) {
|
|
|
if (byProductType == GT29336) { //send 0x00 0x00 0x04 0x02 0x06 0x00 to [0x10174],read rawdata
|
|
|
mBytes[0] = 0x00;
|
|
|
mBytes[1] = 0x00;
|
|
@@ -1362,7 +1400,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
length = 7;
|
|
|
}
|
|
|
}
|
|
|
- else if (showFlag == 7)
|
|
|
+ else if (showFlag == DIFFDATA_2BYTES_FLAG)
|
|
|
{
|
|
|
if (byProductType == GT29336) { //send 0x00 0x00 0x04 0x01 0x05 0x00 to [0x10174],read diffdata
|
|
|
mBytes[0] = 0x00;
|
|
@@ -1457,14 +1495,14 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
byte mdata;
|
|
|
int ilength = colnum * rownum * 2;
|
|
|
|
|
|
- if (showFlag == 8)
|
|
|
+ if (showFlag == STYLUSDATA_FLAG)
|
|
|
{
|
|
|
ilength = (colnum + rownum + 2) * 2;
|
|
|
}
|
|
|
|
|
|
switch (showFlag){
|
|
|
- case 1: //rawdata
|
|
|
- case 6: //test
|
|
|
+ case RAWDATA_FLAG: //rawdata
|
|
|
+ case TESTING_FLAG: //test
|
|
|
if (byProductType == GT29336) {
|
|
|
if (!iicRead32Bits((byte) 0x01, (byte) 0xA6, (byte) 0x7C, mRawdataBytes, ilength)) {
|
|
|
return false;
|
|
@@ -1475,10 +1513,10 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
- //case 2: //manual diffdata
|
|
|
- //case 4: //reffdata
|
|
|
- case 7: //diffdata低位在前
|
|
|
- case 3: //diffdata
|
|
|
+ //case MANUALDATA_FLAG: //manual diffdata
|
|
|
+ //case TEST_END_FLAG: //reffdata
|
|
|
+ case DIFFDATA_2BYTES_FLAG: //diffdata低位在前
|
|
|
+ case DIFFDATA_1BYTE_FLAG: //diffdata
|
|
|
if (byProductType == GT29336) {
|
|
|
if (!iicRead32Bits((byte) 0x01, (byte) 0xC1, (byte) 0x4C, mRawdataBytes, ilength)) {
|
|
|
return false;
|
|
@@ -1497,7 +1535,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
int tempcol = 0;
|
|
|
int i = 0;
|
|
|
|
|
|
- if (showFlag != 8) {
|
|
|
+ if (showFlag != STYLUSDATA_FLAG) {
|
|
|
//控制行数
|
|
|
for (int row = 0; row < rownum; row++) { //Sen
|
|
|
//控制列数
|
|
@@ -1530,7 +1568,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
return false;
|
|
|
}
|
|
|
}else {
|
|
|
- if (showFlag == 1) //rawdata
|
|
|
+ if (showFlag == RAWDATA_FLAG) //rawdata
|
|
|
{
|
|
|
if (!IicWriteOneByte((byte) 0x01, (byte) 0x03, (byte) 0x08, (byte) 0x0f, (byte) 0)) {
|
|
|
return false;
|
|
@@ -1576,7 +1614,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
maddressHigh = (byte) 0x82;
|
|
|
}
|
|
|
|
|
|
- if (showFlag == 6)
|
|
|
+ if (showFlag == TESTING_FLAG)
|
|
|
{
|
|
|
btTestStep = 1; //
|
|
|
|
|
@@ -1586,11 +1624,11 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
|
|
|
//btTestStep = 2;
|
|
|
|
|
|
- showFlag = 1; //先进入读原始值状态
|
|
|
+ showFlag = RAWDATA_FLAG; //先进入读原始值状态
|
|
|
|
|
|
changeToDebugMode();
|
|
|
|
|
|
- showFlag = 6; //切回测试模式
|
|
|
+ showFlag = TESTING_FLAG; //切回测试模式
|
|
|
|
|
|
stTestLogShow = "";
|
|
|
|
|
@@ -1598,7 +1636,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
stTestLogShow = stTestLogShow.concat(stTestLog);
|
|
|
}
|
|
|
int checktimes;
|
|
|
- while(showFlag != 4) {
|
|
|
+ while(showFlag != TEST_END_FLAG) {
|
|
|
|
|
|
if(count-- == 0)
|
|
|
{
|
|
@@ -1614,7 +1652,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
}
|
|
|
}else {
|
|
|
|
|
|
- if (showFlag == 1) { //rawdata
|
|
|
+ if (showFlag == RAWDATA_FLAG) { //rawdata
|
|
|
if (!iicRead32Bits((byte) 0x01, (byte) 0x03, (byte) 0x08, mBytes, 1)) { //轮询读取0x010308
|
|
|
SystemClock.sleep(1);
|
|
|
continue;
|
|
@@ -1630,7 +1668,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
|
|
|
if (mBytes[0] == (byte)0x80) //读到0x80则跳出去读数据
|
|
|
{
|
|
|
- if (showFlag != 6) {
|
|
|
+ if (showFlag != TESTING_FLAG) {
|
|
|
if (byDisplayFrame == byDisplayFrameCount) {
|
|
|
for (int i = 0; i < mRawdataBytes.length; i++) {
|
|
|
mRawdataBytes[i] = (byte) 0x00;
|
|
@@ -1648,20 +1686,20 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
}
|
|
|
if (byDisplayFrame == byDisplayFrameCount) {
|
|
|
|
|
|
- if ((showFlag != 6) && (showFlag != 8) && (showFlag != 5) && (count < 999)) { //测试模式、读取主动笔数据和停止时
|
|
|
+ if ((showFlag != TESTING_FLAG) && (showFlag != STYLUSDATA_FLAG) && (showFlag != STOP_FLAG) && (count < 999)) { //测试模式、读取主动笔数据和停止时
|
|
|
byDisplayFrameCount = 0;
|
|
|
}
|
|
|
|
|
|
if (getRawdata() == true) {
|
|
|
|
|
|
switch (showFlag) {
|
|
|
- case 1://rawdata
|
|
|
- case 7:// GT7XXX diffdata
|
|
|
+ case RAWDATA_FLAG://rawdata
|
|
|
+ case DIFFDATA_2BYTES_FLAG:// GT7XXX diffdata
|
|
|
|
|
|
mHandler.sendEmptyMessage(RAWDATA_MESSAGE);
|
|
|
|
|
|
break;
|
|
|
- case 2://manual diff
|
|
|
+ case MANUALDATA_FLAG://manual diff
|
|
|
if (count == 999) //第一帧备份rawdata作为基准
|
|
|
{
|
|
|
if (byProductType == GT7) {
|
|
@@ -1683,18 +1721,18 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
mHandler.sendEmptyMessage(MANUALDIFF_MESSAGE);
|
|
|
// mHandler.sendEmptyMessage(RAWDATA_MESSAGE);
|
|
|
break;
|
|
|
- case 3://diffdata
|
|
|
+ case DIFFDATA_1BYTE_FLAG://diffdata
|
|
|
mHandler.sendEmptyMessage(DIFF_MESSAGE);
|
|
|
break;
|
|
|
- case 5: //stop
|
|
|
+ case STOP_FLAG: //stop
|
|
|
changeToNormalMode();
|
|
|
SystemClock.sleep(40);
|
|
|
- showFlag = 4;
|
|
|
+ showFlag = TEST_END_FLAG;
|
|
|
count = 1000;
|
|
|
btTestStep = 0;
|
|
|
SystemClock.sleep(10);
|
|
|
break;
|
|
|
- case 6: //test
|
|
|
+ case TESTING_FLAG: //test
|
|
|
if (btTestStep == 1) {
|
|
|
mHandler.sendEmptyMessage(TEST_DATA_MESSAGE);
|
|
|
}
|
|
@@ -1796,15 +1834,18 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
|
|
|
//btTestStep = 4;
|
|
|
|
|
|
- showFlag = 4; //stop
|
|
|
+ showFlag = TEST_END_FLAG; //stop
|
|
|
count = 1000;
|
|
|
btTestStep = 0;
|
|
|
+
|
|
|
+ ActivityCompat.requestPermissions( DataAnalysis.this, new String[]{android
|
|
|
+ .Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
- case 8: //stylusdata
|
|
|
+ case STYLUSDATA_FLAG: //stylusdata
|
|
|
mHandler.sendEmptyMessage(STYLUS_DATA_MESSAGE);
|
|
|
break;
|
|
|
default:
|
|
@@ -1875,7 +1916,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
{
|
|
|
//iDataShow[i] = ((mRawdataBytes[idtemp + 1] & 0xFF) << 8) + (mRawdataBytes[idtemp] & 0xFF);
|
|
|
|
|
|
- if ((showFlag == 7) && (iDataShow[i] > 50)){ //GT7XXX diffdata
|
|
|
+ if ((showFlag == DIFFDATA_2BYTES_FLAG) && (iDataShow[i] > 50)){ //GT7XXX diffdata
|
|
|
textView.setTextColor(Color.parseColor("#FF0000"));
|
|
|
}
|
|
|
|
|
@@ -2090,7 +2131,13 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
|
|
|
textGridLayout.removeAllViews();
|
|
|
|
|
|
+ byTestCount++;
|
|
|
+
|
|
|
+ if (byTestCount <= 3)
|
|
|
+ break;
|
|
|
+
|
|
|
i = 0;
|
|
|
+ String rawdata_temp_string = " ";
|
|
|
//控制行数
|
|
|
for (int row = 0; row < rownum; row++) { //sen
|
|
|
//控制列数
|
|
@@ -2098,6 +2145,11 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
|
|
|
int temp = col * rownum + row; //Rawdata存放和测试阈值存放,行列相反
|
|
|
|
|
|
+ rawdata_temp_string += Integer.toString(datatemp[i] & 0xFFFF) + ",";
|
|
|
+
|
|
|
+ if (col == colnum - 1)
|
|
|
+ rawdata_temp_string += "\n";
|
|
|
+
|
|
|
//获取最大值
|
|
|
if (datatemp[i] > iRawDataMaxVal[temp]) {
|
|
|
byOverMaxCount[i]++;
|
|
@@ -2118,7 +2170,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
i++;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ rawdata_temp_string += "\n";
|
|
|
/*
|
|
|
if (maxdata > iMaximum) //统计最大值大于阈值的次数
|
|
|
{
|
|
@@ -2136,10 +2188,84 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
// byMaximumOverCount++;
|
|
|
//}
|
|
|
|
|
|
- byTestCount++;
|
|
|
- stTestLog = getResources().getString(R.string.sampling) + Integer.toString(byTestCount) + getResources().getString(R.string.frame);
|
|
|
|
|
|
- if (byTestCount >= 16) {
|
|
|
+ //if (byTestCount > 3)
|
|
|
+ {
|
|
|
+ stTestLog = getResources().getString(R.string.sampling) + Integer.toString(byTestCount - 3) + getResources().getString(R.string.frame);
|
|
|
+
|
|
|
+ switch (byTestCount - 3)
|
|
|
+ {
|
|
|
+ case 1:
|
|
|
+ strSaveRawdata1 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 2:
|
|
|
+ strSaveRawdata2 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 3:
|
|
|
+ strSaveRawdata3 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 4:
|
|
|
+ strSaveRawdata4 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 5:
|
|
|
+ strSaveRawdata5 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 6:
|
|
|
+ strSaveRawdata6 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 7:
|
|
|
+ strSaveRawdata7 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 8:
|
|
|
+ strSaveRawdata8 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 9:
|
|
|
+ strSaveRawdata9 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 10:
|
|
|
+ strSaveRawdata10 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 11:
|
|
|
+ strSaveRawdata11 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 12:
|
|
|
+ strSaveRawdata12 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 13:
|
|
|
+ strSaveRawdata13 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 14:
|
|
|
+ strSaveRawdata14 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 15:
|
|
|
+ strSaveRawdata15 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 16:
|
|
|
+ strSaveRawdata16 = rawdata_temp_string;
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (byTestCount >= 16 + 3) {
|
|
|
stTestLogShow = "";
|
|
|
|
|
|
stTestLog = getResources().getString(R.string.maxmintestfinish);
|
|
@@ -2213,7 +2339,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- //showFlag = 5; //stop
|
|
|
+ //showFlag = STOP_FLAG; //stop
|
|
|
btTestStep = 2;
|
|
|
//btn_RawdataShow.setEnabled(true);
|
|
|
//btn_DiffdataShow.setEnabled(true);
|
|
@@ -2238,7 +2364,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
}
|
|
|
/*
|
|
|
else if (btTestStep == 4){
|
|
|
- showFlag = 4; //stop
|
|
|
+ showFlag = TEST_END_FLAG; //stop
|
|
|
count = 1000;
|
|
|
btTestStep = 0;
|
|
|
|
|
@@ -4199,6 +4325,8 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
Update_log = getResources().getString(R.string.startshorttest);
|
|
|
mHandler.sendEmptyMessage(TEST_DATA_MESSAGE);
|
|
|
|
|
|
+ bSaveShortTestResult = false;
|
|
|
+
|
|
|
if (!ShortTestrRunCode())
|
|
|
{
|
|
|
Update_log += ", short test run code failed, test is NG!!";
|
|
@@ -4315,6 +4443,8 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
|
|
|
msubcommand = (byte)0x2A ; //最高位置1,写命令42 ENABLE_ESD_CHECK
|
|
|
IicWriteOneByte(addrfirstbyte, addrsecondbyte, addrthirdbyte, msubcommand, mdata);
|
|
|
+
|
|
|
+ bSaveShortTestResult = true;
|
|
|
}
|
|
|
|
|
|
//------------------------------------GT29xx short circuit test code end---------------------------------------------------------------//
|
|
@@ -4332,7 +4462,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
|
|
|
switch (view.getId()) {
|
|
|
case R.id.stop: //back
|
|
|
- showFlag = 5;
|
|
|
+ showFlag = STOP_FLAG;
|
|
|
|
|
|
btn_RawdataShow.setEnabled(true);
|
|
|
btn_DiffdataShow.setEnabled(true);
|
|
@@ -4525,7 +4655,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
edt_RowNum.setText(Integer.toString(rownum));
|
|
|
}
|
|
|
|
|
|
- if (showFlag != 8) {
|
|
|
+ if (showFlag != STYLUSDATA_FLAG) {
|
|
|
textGridLayout.removeAllViews();
|
|
|
|
|
|
textGridLayout.setColumnCount(colnum + 1);
|
|
@@ -4551,7 +4681,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
switch (view.getId()) {
|
|
|
case R.id.rawdata: //Read RawData
|
|
|
|
|
|
- showFlag = 1;
|
|
|
+ showFlag = RAWDATA_FLAG;
|
|
|
|
|
|
changeToDebugMode();
|
|
|
//count = 1000;
|
|
@@ -4573,10 +4703,10 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
|
|
|
case R.id.diffdata:
|
|
|
|
|
|
- //showFlag = 3;
|
|
|
+ //showFlag = DIFFDATA_1BYTE_FLAG;
|
|
|
//if (byProductType == GT7)
|
|
|
{
|
|
|
- showFlag = 7; //GT7系列的差值是2bytes,按照RawData的方式去显示
|
|
|
+ showFlag = DIFFDATA_2BYTES_FLAG; //GT7系列的差值是2bytes,按照RawData的方式去显示
|
|
|
}
|
|
|
|
|
|
changeToDebugMode();
|
|
@@ -4594,8 +4724,8 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
|
|
|
break;
|
|
|
|
|
|
- case R.id.reffdata:
|
|
|
- showFlag = 4;
|
|
|
+ case R.id.reffdata: //暂时没用
|
|
|
+ showFlag = REFFDATA_FLAG;
|
|
|
count = 1000;
|
|
|
showAddressHigh = (byte) 0x81;
|
|
|
showAddressLow = (byte) 0xc0;
|
|
@@ -4616,7 +4746,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
break;
|
|
|
|
|
|
case R.id.manualdiff:
|
|
|
- showFlag = 2;
|
|
|
+ showFlag = MANUALDATA_FLAG;
|
|
|
btn_Manualreff.setEnabled(true);
|
|
|
changeToDebugMode();
|
|
|
showAddressHigh = (byte) 0x8b;
|
|
@@ -4634,7 +4764,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
break;
|
|
|
|
|
|
case R.id.manualreff: //set up manual ref
|
|
|
- showFlag = 2;
|
|
|
+ showFlag = MANUALDATA_FLAG;
|
|
|
btn_Manualreff.setEnabled(true);
|
|
|
count = 1000;
|
|
|
|
|
@@ -4650,7 +4780,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
case R.id.stylusdata: //主动笔数据
|
|
|
if (byProductType == GT7) //GT7系列才显示
|
|
|
{
|
|
|
- showFlag = 8;
|
|
|
+ showFlag = STYLUSDATA_FLAG;
|
|
|
|
|
|
changeToDebugMode();
|
|
|
|
|
@@ -4849,7 +4979,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- showFlag = 6;
|
|
|
+ showFlag = TESTING_FLAG;
|
|
|
byTestCount = 0;
|
|
|
byMaximumOverCount = 0;
|
|
|
byMinimumOverCount = 0;
|
|
@@ -4876,11 +5006,33 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
bTestMaxResult = true;
|
|
|
bTestMinResult = true;
|
|
|
|
|
|
- showFlag = 6;
|
|
|
+ showFlag = TESTING_FLAG;
|
|
|
byTestCount = 0;
|
|
|
byMaximumOverCount = 0;
|
|
|
byMinimumOverCount = 0;
|
|
|
byReTestCount = 0;
|
|
|
+
|
|
|
+ strSaveRawDataMax = "";
|
|
|
+ strSaveRawDataMin = "";
|
|
|
+ //控制行数
|
|
|
+ for (int row = 0; row < rownum; row++) { //sen
|
|
|
+ //控制列数
|
|
|
+ for (int col = 0; col < colnum; col++) { //drv
|
|
|
+
|
|
|
+ int temp = col * rownum + row; //Rawdata存放和测试阈值存放,行列相反
|
|
|
+
|
|
|
+ strSaveRawDataMax += Integer.toString(iRawDataMaxVal[temp] & 0xFFFF) + ",";
|
|
|
+ strSaveRawDataMin += Integer.toString(iRawDataMinVal[temp] & 0xFFFF) + ",";
|
|
|
+
|
|
|
+ if (col == colnum - 1) {
|
|
|
+ strSaveRawDataMax += "\n";
|
|
|
+ strSaveRawDataMin += "\n";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ strSaveRawDataMax += "\n";
|
|
|
+ strSaveRawDataMin += "\n";
|
|
|
+
|
|
|
if (count == 1000) {
|
|
|
//tvDataContent.setText("["+getResources().getString(R.string.rawdata)+"]");
|
|
|
showRawdata();
|
|
@@ -4888,7 +5040,7 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
break;
|
|
|
/*
|
|
|
case R.id.stop: //back
|
|
|
- showFlag = 5;
|
|
|
+ showFlag = STOP_FLAG;
|
|
|
|
|
|
btn_RawdataShow.setEnabled(true);
|
|
|
//btn_DiffdataShow.setEnabled(true);
|
|
@@ -4949,13 +5101,13 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
|
|
|
*/
|
|
|
switch (showFlag){
|
|
|
- case 1: //GT9 rawdata
|
|
|
- case 2: //manualdiff
|
|
|
- case 3: //diffdata
|
|
|
- case 6: //test
|
|
|
- case 7: //GT738X rawdata
|
|
|
- case 8: //stylusdata
|
|
|
- showFlag = 5;
|
|
|
+ case RAWDATA_FLAG: //GT9 rawdata
|
|
|
+ case MANUALDATA_FLAG: //manualdiff
|
|
|
+ case DIFFDATA_1BYTE_FLAG: //diffdata
|
|
|
+ case TESTING_FLAG: //test
|
|
|
+ case DIFFDATA_2BYTES_FLAG: //GT738X rawdata
|
|
|
+ case STYLUSDATA_FLAG: //stylusdata
|
|
|
+ showFlag = STOP_FLAG;
|
|
|
|
|
|
btn_RawdataShow.setEnabled(true);
|
|
|
btn_DiffdataShow.setEnabled(true);
|
|
@@ -4966,8 +5118,8 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
btn_Test.setEnabled(true);
|
|
|
|
|
|
break;
|
|
|
- case 4: //test end
|
|
|
- case 5: //stop
|
|
|
+ case TEST_END_FLAG: //test end
|
|
|
+ case STOP_FLAG: //stop
|
|
|
default:
|
|
|
finish();
|
|
|
break;
|
|
@@ -4976,4 +5128,228 @@ public class DataAnalysis extends AppCompatActivity
|
|
|
}
|
|
|
return super.onKeyDown(keyCode, event);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
|
|
+ switch (requestCode) {
|
|
|
+ case 1:
|
|
|
+ String filePath;// = Environment.getExternalStorageDirectory() + "/saveconfig/";
|
|
|
+ String fileName;
|
|
|
+ String temp_string;
|
|
|
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
|
|
+ //创建文件夹
|
|
|
+ if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
|
|
|
+
|
|
|
+ StringBuilder configBuilder = new StringBuilder("");
|
|
|
+
|
|
|
+ //1.save config
|
|
|
+ configBuilder.append("[Chip Config]\n");
|
|
|
+ int iConfigSize = 64 + (int)(byConfigBak[60] & 0xFF) * 256 + (byConfigBak[59] & 0xFF); //the head lend is 64
|
|
|
+
|
|
|
+ for (int i = 0; i < iConfigSize; i++) {
|
|
|
+ configBuilder.append("0x" + Integer.toHexString(byConfigBak[i] & 0xFF) + ",");
|
|
|
+ }
|
|
|
+ configBuilder.append("\n\n");
|
|
|
+
|
|
|
+ //2.save Chanel Number
|
|
|
+ configBuilder.append("[Chanel Number]\n");
|
|
|
+ configBuilder.append("SensorNum:" + edt_RowNum.getText() + "\n");
|
|
|
+ configBuilder.append("DriverNum:" + edt_ColNum.getText() + "\n\n");
|
|
|
+
|
|
|
+ //3.save test result
|
|
|
+ configBuilder.append("[Test Result]\n");
|
|
|
+
|
|
|
+ temp_string = "Pass";
|
|
|
+ if (bTestMaxResult == false || bTestMinResult == false)
|
|
|
+ {
|
|
|
+ temp_string = "Failed";
|
|
|
+ }
|
|
|
+ configBuilder.append("MaxMinTest:" + temp_string + "\n");
|
|
|
+
|
|
|
+ temp_string = "Pass";
|
|
|
+ if (bSaveShortTestResult == false)
|
|
|
+ {
|
|
|
+ temp_string = "Failed";
|
|
|
+ }
|
|
|
+ configBuilder.append("ShortTest:" + temp_string + "\n");
|
|
|
+ configBuilder.append(edtShortCircuitInfo.getText() + "\n\n");
|
|
|
+
|
|
|
+ //4.save maxvalue & minvalue
|
|
|
+ configBuilder.append("[MaximumThresholdArray]\n");
|
|
|
+ configBuilder.append(strSaveRawDataMax);
|
|
|
+ configBuilder.append("[MinimumThresholdArray]\n");
|
|
|
+ configBuilder.append(strSaveRawDataMin);
|
|
|
+
|
|
|
+ //5.save rawdata
|
|
|
+ configBuilder.append("[Rawdata[0]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata1);
|
|
|
+ configBuilder.append("[Rawdata[1]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata2);
|
|
|
+ configBuilder.append("[Rawdata[2]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata3);
|
|
|
+ configBuilder.append("[Rawdata[3]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata4);
|
|
|
+ configBuilder.append("[Rawdata[4]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata5);
|
|
|
+ configBuilder.append("[Rawdata[5]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata6);
|
|
|
+ configBuilder.append("[Rawdata[6]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata7);
|
|
|
+ configBuilder.append("[Rawdata[7]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata8);
|
|
|
+ configBuilder.append("[Rawdata[8]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata9);
|
|
|
+ configBuilder.append("[Rawdata[9]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata10);
|
|
|
+ configBuilder.append("[Rawdata[10]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata11);
|
|
|
+ configBuilder.append("[Rawdata[11]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata12);
|
|
|
+ configBuilder.append("[Rawdata[12]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata13);
|
|
|
+ configBuilder.append("[Rawdata[13]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata14);
|
|
|
+ configBuilder.append("[Rawdata[14]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata15);
|
|
|
+ configBuilder.append("[Rawdata[15]]\n");
|
|
|
+ configBuilder.append(strSaveRawdata16);
|
|
|
+
|
|
|
+ filePath = Environment.getExternalStorageDirectory() + "/test_result/";
|
|
|
+ //File file = new File(filePath);
|
|
|
+
|
|
|
+ temp_string = "GT";
|
|
|
+ String hv = "";
|
|
|
+ iicRead32Bits((byte)0x01, (byte)0x00, (byte)0x14,mBytes, 23);
|
|
|
+
|
|
|
+ for (int i = 10; i < 15; i++) //Get PID
|
|
|
+ {
|
|
|
+ if (mBytes[i] == 0)
|
|
|
+ break;
|
|
|
+
|
|
|
+ int v = (mBytes[i] - 48) & 0xFF; //ASCII码减去48
|
|
|
+ hv = Integer.toHexString(v);
|
|
|
+ temp_string += hv;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (temp_string.length() < 6)
|
|
|
+ {
|
|
|
+ temp_string = "Null";
|
|
|
+ } else{
|
|
|
+
|
|
|
+ temp_string += "_";
|
|
|
+
|
|
|
+ for (int i = 18; i < 22; i++) //Get version
|
|
|
+ {
|
|
|
+ int v = mBytes[i] & 0xFF;
|
|
|
+ hv = Integer.toHexString(v);
|
|
|
+ if (hv.length() < 2){
|
|
|
+ hv = "0" + hv;
|
|
|
+ }
|
|
|
+
|
|
|
+ temp_string += hv;
|
|
|
+
|
|
|
+ if (i < 21)
|
|
|
+ {
|
|
|
+ temp_string += ".";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ temp_string += "_v" + Integer.toString(byConfigBak[34] & 0xFF) + "_";
|
|
|
+ temp_string += edt_RowNum.getText() + "x" + edt_ColNum.getText() + "_";
|
|
|
+
|
|
|
+
|
|
|
+ if (bTestMaxResult == false || bTestMinResult == false || bSaveShortTestResult == false)
|
|
|
+ {
|
|
|
+ temp_string += "NG_";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ temp_string += "OK_";
|
|
|
+ }
|
|
|
+
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
|
|
|
+ Date date = new Date(System.currentTimeMillis()); //获取当前系统时间
|
|
|
+
|
|
|
+ fileName = temp_string + simpleDateFormat.format(date) + ".csv";//editname.getText().toString();
|
|
|
+ writeTxtToFile(configBuilder.toString().trim(), filePath, fileName);
|
|
|
+
|
|
|
+ //mShow.setText(fileName + getResources().getString(R.string.saveto) + filePath.toString());
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
|
|
+ //创建文件夹
|
|
|
+ if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 3:
|
|
|
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
|
|
|
+ //权限已成功申请
|
|
|
+ }else{
|
|
|
+ //用户拒绝授权
|
|
|
+ Toast.makeText(this,getResources().getString(R.string.nopermission), Toast.LENGTH_SHORT).show();
|
|
|
+ finish();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 将字符串写入到文本文件中
|
|
|
+ public void writeTxtToFile(String strcontent, String filePath, String fileName) {
|
|
|
+ // 生成文件夹之后,再生成文件,不然会出错
|
|
|
+ makeFilePath(filePath, fileName);
|
|
|
+
|
|
|
+ String strFilePath = filePath + fileName;
|
|
|
+ // 每次写入时,都换行写
|
|
|
+ String strContent = strcontent + "\r\n";
|
|
|
+ try {
|
|
|
+ File file = new File(strFilePath);
|
|
|
+ if (!file.exists()) {
|
|
|
+ Log.d("TestFile", "Create the file:" + strFilePath);
|
|
|
+ file.getParentFile().mkdirs();
|
|
|
+ file.createNewFile();
|
|
|
+ }
|
|
|
+ RandomAccessFile raf = new RandomAccessFile(file, "rwd");
|
|
|
+ raf.seek(file.length());
|
|
|
+ raf.write(strContent.getBytes());
|
|
|
+ raf.close();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 生成文件
|
|
|
+ public File makeFilePath(String filePath, String fileName) {
|
|
|
+ File file = null;
|
|
|
+ makeRootDirectory(filePath);
|
|
|
+ try {
|
|
|
+ file = new File(filePath + fileName);
|
|
|
+ if (!file.exists()) {
|
|
|
+ file.createNewFile();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return file;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 生成文件夹
|
|
|
+ public static void makeRootDirectory(String filePath) {
|
|
|
+ File file = null;
|
|
|
+ try {
|
|
|
+ file = new File(filePath);
|
|
|
+ if (!file.exists()) {
|
|
|
+ file.mkdir();
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|