Procházet zdrojové kódy

增加GT7系列的开短路测试,短路测试还有问题,仍需排查。

robbin před 3 roky
rodič
revize
87f0102d8e

+ 1 - 1
app/build.gradle

@@ -14,7 +14,7 @@ android {
         variant ->
             variant.outputs.all{
                 //´Ë´¦Ö¸¶¨Éú³ÉµÄapkÎļþÃû
-                outputFileName = "WingCoolAPK(GT9)_V2.0.0_20211008.apk"
+                outputFileName = "WingCoolAPK(GT9)_V2.0.1_20211011.apk"
             }
     }
     lintOptions {

+ 415 - 13
app/src/main/java/com/example/administrator/wingcool_gt9_apk/DataAnalysis.java

@@ -507,11 +507,40 @@ public class DataAnalysis extends AppCompatActivity
         (byte)0x9E,0x00,0x14,0x00,
     };
 
-    private byte[] bypCfgDrv = new byte[42];
-    private byte[] bypCfgSen = new byte[30];
+    private byte GT7xxxShortConfig[] = {
+            0x24,0x27,0x26,0x25,0x28,0x2A,0x29,0x2B,0x2C,0x2E,0x2D,0x34,0x2F,0x30,0x31,0x35,0x33,0x32,
+            0x36,0x37,0x39,0x38,0x3C,0x3A,0x3D,0x3B,0x3E,0x47,0x45,0x44,0x46,0x42,0x41,0x43,0x3F,0x40,
+            0x03,0x00,0x01,0x06,0x05,0x02,0x08,0x04,0x07,0x09,0x0B,0x0A,0x10,0x0D,0x0C,0x11,0x0F,0x0E,
+            0x12,0x14,0x13,0x15,0x16,0x17,0x18,0x19,0x1A,0x23,0x22,0x21,0x1E,0x1F,0x1B,0x1C,0x20,0x1D,
+            (byte)0xFF,(byte)0xFF,(byte)0xFF,(byte)0xFF,0x27,0x2A,0x29,0x28,0x2B,0x26,0x24,0x25,0x23,0x21,0x22,0x20,0x1E,0x1F,
+            0x1D,0x1C,0x1A,0x1B,0x18,0x19,0x17,0x16,0x11,0x12,0x14,0x13,0x15,0x0E,0x0F,0x10,0x0B,0x0C,
+            0x0D,0x08,0x09,0x0A,0x06,0x04,0x07,0x02,0x05,0x03,0x01,0x00,(byte)0xFF,(byte)0xFF,0x00,0x00,0x64,0x00,
+            0x20,0x03,0x20,0x03,0x20,0x03,(byte)0xC8,0x00,(byte)0xF4,0x01,(byte)0xF4,0x01,(byte)0xF4,0x01,(byte)0xF4,0x01,0x00,0x00,
+            0x00,0x00,0x00,0x00,0x04,0x00,0x06,0x00,0x44,0x00,0x59,0x00,0x4B,0x00,0x00,0x00,0x00,0x00,
+            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,(byte)0xE2,0x0A,
+    };
+
+    //GT7 配置界面显示和短路通道上报map
+    private byte DrvMap[] = {
+            66,65,63,64,61,62,60,59,57,58,56,54,55,53,51,52,50,45,48,47,46,49,
+            66,65,62,64,60,63,59,61,56,57,58,53,54,55,50,51,52,45,46,48,47,49,
+    };
+
+    private byte SenMap[] = {
+            0,3,2,1,4,6,5,7,8,10,9,12,13,14,17,16,11,15,18,19,21,20,23,25,22,
+            24,26,43,44,41,40,42,38,37,39,36,1,2,5,0,7,4,3,8,6,9,11,10,14,13,
+            17,16,12,15,18,20,19,21,22,23,24,25,26,41,42,44,39,40,43,38,37,36,
+    };
+
+
+    private byte[] bypCfgDrv = new byte[46];
+    private byte[] bypCfgSen = new byte[76];
 
-    private byte[] bypDrvShortFlag = new byte[44];
-    private byte[] bypSenShortFlag = new byte[72];
+    private byte[] bypDrvShortFlag = new byte[46];
+    private byte[] bypSenShortFlag = new byte[76];
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -1039,9 +1068,9 @@ public class DataAnalysis extends AppCompatActivity
 
                     if (byProductType == GT7)
                     {
-
+                        GT7xxxShortTestProc();
                     }else{
-                        ShortTestProc();
+                        GT9xxxShortTestProc();
                     }
 
                     SystemClock.sleep(100);
@@ -1407,8 +1436,8 @@ public class DataAnalysis extends AppCompatActivity
                         break;
                     }
 
-                    int imaxdataid = 255;
-                    int imindataid = 255;
+                    int imaxdataid = 65535;
+                    int imindataid = 65535;
 
                     maxdata = 0;
                     mindata = 65535;
@@ -1585,7 +1614,7 @@ public class DataAnalysis extends AppCompatActivity
         }
     };
 
-    //-----------------------------------short circuit test code start----------------------------------------------------------------------//
+    //-----------------------------------GT9 short circuit test code start----------------------------------------------------------------------//
     private int GT9xxxGetRxIndex(int nSensor)
     {
         for (int i = 0; i < 30; i++)
@@ -2008,10 +2037,10 @@ public class DataAnalysis extends AppCompatActivity
 
         boolean bFailed = false;
 
-        for (int i = 0; i < 44; i++) {
+        for (int i = 0; i < 46; i++) {
             bypDrvShortFlag[i] = (byte)255;
         }
-        for (int i = 0; i < 72; i++) {
+        for (int i = 0; i < 76; i++) {
             bypSenShortFlag[i] = (byte)255;
         }
 
@@ -2284,7 +2313,7 @@ public class DataAnalysis extends AppCompatActivity
         return false;
     }
 
-    private void ShortTestProc()
+    private void GT9xxxShortTestProc()
     {
         byte maddressHigh = (byte)0x80;
         byte maddressLow = (byte)0x40;
@@ -2346,7 +2375,372 @@ public class DataAnalysis extends AppCompatActivity
         mHandler.sendEmptyMessage(TEST_DATA_MESSAGE);
     }
 
-    //------------------------------------short circuit test code end------------------------------------------------------------------//
+    //------------------------------------GT9 short circuit test code end------------------------------------------------------------------//
+
+    //------------------------------------GT7 short circuit test code start----------------------------------------------------------------//
+    private int GT7xxxGetRxIndex(byte[] pbyRxAlign, int nSensor)
+    {
+        for (int i = 0; i < 72; i++)
+        {
+            if (pbyRxAlign[i] == nSensor)
+            {
+                return i;
+            }
+        }
+        return 255;
+    }
+    private int GT7xxxGetTxIndex(byte[] pTxAlign, int nDriver)
+    {
+        for (int i = 0; i < 44; i++)
+        {
+            if (pTxAlign[i] == nDriver)
+            {
+                return i;
+            }
+        }
+        return 255;
+    }
+
+    private void GT7xxxShortTestProc()
+    {
+        byte ShortTestResult = 0;
+
+        Update_log = "";
+        updateLogShow = "";
+
+        Update_log = getResources().getString(R.string.startshorttest);
+        mHandler.sendEmptyMessage(TEST_DATA_MESSAGE);
+
+        iicByteWrite((byte)0x43,(byte)0x7c,(byte)0x0f,(byte)0x00);
+
+        iicByteWrite((byte)0x80,(byte)0x41,(byte)0x0f,(byte)0x00);  //0x8041,command data
+        iicByteWrite((byte)0x80,(byte)0x42,(byte)0x0f,(byte)0xC0);  //0x8042,command checksum
+
+        iicByteWrite((byte)0x80,(byte)0x40,(byte)0x0f,(byte)0x40);  //0x8040,0x40:通知FW进入短路测试状态
+
+        SystemClock.sleep(300);
+
+    //    CString str;
+	//::GetPrivateProfileString(L"BasicData", L"DrvStartAddr", L"0x8171", str.GetBuffer(MAX_PATH), MAX_PATH, gstrChipIniFile);
+    //    str.ReleaseBuffer();
+    //    WORD wDrvAddr = CStringHexToWord(str);
+
+	//::GetPrivateProfileString(L"BasicData", L"SenStartAddr", L"0x8127", str.GetBuffer(MAX_PATH), MAX_PATH, gstrChipIniFile);
+    //    WORD wSenAddr = CStringHexToWord(str);
+
+	//::GetPrivateProfileString(L"Cfg", L"CFGAddr", L"0x8050", str.GetBuffer(MAX_PATH), MAX_PATH, gstrChipIniFile);
+    //    WORD wConfigAddr = CStringHexToWord(str);
+
+
+        for (int i = 0; i < 76; i++)
+        {
+            GT7xxxShortConfig[i] = (byte) i;
+
+            if (i > 72)
+                GT7xxxShortConfig[i] = (byte) 255;
+        }
+
+        for (int i = 0; i < 46; i++)
+        {
+            GT7xxxShortConfig[i + 76] = (byte) i;
+
+            if (i > 44)
+                GT7xxxShortConfig[i + 76] = (byte) 255;
+        }
+
+        for (int i = 0; i < 46; i++) {
+            bypDrvShortFlag[i] = (byte)255;
+        }
+        for (int i = 0; i < 76; i++) {
+            bypSenShortFlag[i] = (byte)255;
+        }
+
+        byte[] pConfigDrv = new byte[46];
+        byte[] pConfigSen = new byte[76];
+
+        //m_ConfigBak.m_nSenHalfNum = 22;
+        //m_ConfigBak.m_nDrvHalfNum = 22;
+        //m_ConfigBak.m_nSenMaxNum = 72;
+        //m_ConfigBak.m_nDrvMaxNum = 44;
+
+        //if (m_pDlg->m_bBackConfigOKFlag)
+        {
+            int k = 0;
+            for (int i = 0; i < 36; i++) //SenHalfNumber=36
+            {
+                int ch = bypCfgSen[i];
+
+                if (ch == 255)
+                    continue;
+
+                for (int j = 0; j < 36; j++)  //SenHalfNumber=36
+                {
+                    if (SenMap[j] == ch)
+                    {
+                        pConfigSen[k++] = (byte)(j + 36);  //SenHalfNumber=36
+                        break;
+                    }
+                }
+            }
+
+            for (int i = 36; i < 72; i++)
+            {
+                int ch = bypCfgSen[i];
+
+                if (ch == 255)
+                    continue;
+
+                if (i < 72)
+                {
+                    for (int j = 36; j < 72; j++)
+                    {
+                        if (SenMap[j] == ch)
+                        {
+                            pConfigSen[k++] = (byte)(j - 36);
+                            break;
+                        }
+                    }
+                }
+            }
+            k = 0;
+            for (int i = 0; i < 22; i++)  //DrvHalfNmuber=22
+            {
+                int ch = bypCfgDrv[i];
+
+                if (ch == 255)
+                    continue;
+
+                for (int j = 0; j < 22; j++)  //DrvHalfNmuber=22
+                {
+                    if (DrvMap[j] == ch)
+                    {
+                        pConfigDrv[k++] = (byte)(22 + j);  //DrvHalfNmuber=22
+                        break;
+                    }
+                }
+            }
+            for (int i = 23; i < 23 + 44 - 22; i++)  //DrvMaxNum=44
+            {
+                int ch = bypCfgDrv[i];
+
+                if (ch == 255)
+                    continue;
+
+                for (int j = 22; j < 44; j++)  //DrvMaxNum=44
+                {
+                    if (DrvMap[j] == ch)
+                    {
+                        pConfigDrv[k++] = (byte)(j - 22);  //DrvHalfNmuber=22
+                        break;
+                    }
+                }
+
+            }
+        }
+
+        long wCheckSum = 0;
+        for (int i = 0; i < GT7xxxShortConfig.length - 2; i += 2)
+        {
+            wCheckSum += GT7xxxShortConfig[i + 1] << 8 + GT7xxxShortConfig[i];
+        }
+        wCheckSum = 0 - wCheckSum;
+        GT7xxxShortConfig[GT7xxxShortConfig.length - 2] = (byte)(wCheckSum & 0xff);
+        GT7xxxShortConfig[GT7xxxShortConfig.length - 1] = (byte)(wCheckSum >> 8);
+
+        int temp = 2000;
+
+        while(temp > 0)
+        {
+            temp--;
+
+            if ((byte)0x01 == iicByteRead((byte)0x80,(byte)0x4A))  //为1则继续往下
+            {
+                SystemClock.sleep(30);
+
+                break;
+            }
+
+            SystemClock.sleep(20);
+        }
+
+        if (temp != 0)
+        {
+            if (iicWrite((byte)0x81, (byte)0x18, GT7xxxShortConfig, 0, GT7xxxShortConfig.length))  //下发正确,继续往下
+            {
+                iicByteWrite((byte)0x80,(byte)0x41,(byte)0x0f,(byte)0x00);  //0x8041,command data
+                iicByteWrite((byte)0x80,(byte)0x42,(byte)0x0f,(byte)0xBF);  //0x8042,command checksum
+
+                iicByteWrite((byte)0x80,(byte)0x40,(byte)0x0f,(byte)0x41);  //0x8040,0x40:通知FW已完成参数配置
+
+                temp = 100;
+
+                while(temp > 0)
+                {
+                    temp--;
+
+                    if ((byte)0x40 == iicByteRead((byte)0x80,(byte)0x4A))  //为0x40则继续往下
+                    {
+                        SystemClock.sleep(30);
+
+                        break;
+                    }
+
+                    SystemClock.sleep(20);
+                }
+
+                if (temp != 0)
+                {
+                    SystemClock.sleep(6000);  //6s
+
+                    temp = 3000;
+
+                    while(temp > 0)
+                    {
+                        temp--;
+
+                        if ((byte)0x43 == iicByteRead((byte)0x80,(byte)0x4A))  //为0x43则继续往下
+                        {
+                            SystemClock.sleep(30);
+
+                            break;
+                        }
+
+                        SystemClock.sleep(20);
+                    }
+
+                    if (temp != 0)
+                    {
+                        ShortTestResult = iicByteRead((byte)0x8A,(byte)0xC0);
+
+                        if (ShortTestResult == 0)
+                        {
+                            iicByteWrite((byte)0x41,(byte)0x80,(byte)0x0f,(byte)0x01);  //0x4180 set 0x01
+
+                            SystemClock.sleep(500);
+
+                            iicByteRead((byte)0x80,(byte)0x00);  //read 0x8000
+
+                            iicByteWrite((byte)0x80,(byte)0x41,(byte)0x0f,(byte)0x00);  //0x8041,command data
+                            iicByteWrite((byte)0x80,(byte)0x42,(byte)0x0f,(byte)0x56);  //0x8042,command checksum
+
+                            iicByteWrite((byte)0x80,(byte)0x40,(byte)0x0f,(byte)0xAA);  //0x8040,0xAA:关闭HID-IIC模式
+
+                            Update_log += getResources().getString(R.string.testpass);
+                            mHandler.sendEmptyMessage(TEST_DATA_MESSAGE);
+
+                            return;
+                        }
+                    }
+                }
+            }
+        }
+
+        if (ShortTestResult != 0)
+        {
+            byte ShortResisNum = iicByteRead((byte)0x8A,(byte)0xC2);
+            byte[] buf = new byte[4];
+            String str;
+
+            for (int i = 0; i < ShortResisNum * 4; i += 4)
+            {
+                temp = 0x8AC4 + i;
+
+                iicRead((byte)((temp&0xff00) >> 8),(byte)(temp&0x00ff),buf,4);
+
+                if ((buf[1] & 0x80) != 0)
+                {
+                    int ch = buf[1] & 0x7F;
+                    ch = GT7xxxGetTxIndex(pConfigDrv, ch);
+                    if (ch == 255)
+                        continue;
+                    //str.Format(L" Tx%d and", ch);
+                    //todo
+                }
+                else
+                {
+                    int ch = buf[1];
+                    //ch = gnRawDataRows - ch - 1;
+                    ch = GT7xxxGetRxIndex(pConfigSen, ch);
+                    if (ch == 255)
+                        continue;
+                    //str.Format(L" Rx%d and", ch);
+                    //todo
+                }
+
+                if (buf[0] == 0xF0)
+                {
+                    //str += L"GND:";
+                    //todo
+                }
+                else if (buf[0] == 0xF1)
+                {
+                    //str += L"AVDD:";
+                    //todo
+                }
+                else if ((buf[0] & 0x80) != 0)
+                {
+                    int ch = buf[0] & 0x7F;
+                    ch = GT7xxxGetTxIndex(pConfigDrv, ch);
+                    if (ch == 255)
+                        continue;
+                    //str.AppendFormat(L"Tx%d:", ch);
+                    //todo
+                }
+                else
+                {
+                    int ch = buf[0];
+                    //ch = gnRawDataRows - ch - 1;
+                    ch = GT7xxxGetRxIndex(pConfigSen, ch);
+                    if (ch == 255)
+                        continue;
+                    //str.AppendFormat(L"Rx%d:", ch);
+                    //todo
+                }
+                //str.AppendFormat(L"%dK ohm", buf[2] * 256 + buf[3]);
+                //todo
+
+                if (buf[2] * 256 + buf[3] > 800)
+                {
+                    //m_pDlg->m_pctlMessageList->AppendMessage(str, MESSAGE_PAY_ATTENTION);
+                    //todo
+                    continue;
+                }
+                //m_pDlg->m_pctlMessageList->AppendMessage(str, MESSAGE_ERR);
+                //m_pDlg->m_stTestSate[CDlgTest::OPEN_SHORT_TEST].enState = CDlgTest::TEST_FAILED;
+                //todo
+            }
+            //todo
+            /*
+            if (m_pDlg->m_stTestSate[CDlgTest::OPEN_SHORT_TEST].enState == CDlgTest::TEST_FAILED)
+            {
+                m_pDlg->m_pctlMessageList->AppendMessage(IDS_TEST_SHORT_NG, MESSAGE_ERR);
+            }
+            else
+            {
+                m_pDlg->m_pctlMessageList->AppendMessage(IDS_TEST_SHORT_FINISH, MESSAGE_WAR);
+            }
+
+             */
+        }
+
+        Update_log += getResources().getString(R.string.shorttestng);
+        mHandler.sendEmptyMessage(TEST_DATA_MESSAGE);
+
+        SystemClock.sleep(2000);
+
+        iicByteWrite((byte)0x41,(byte)0x80,(byte)0x0f,(byte)0x01);  //0x4180 set 0x01
+
+        SystemClock.sleep(500);
+
+        iicByteRead((byte)0x80,(byte)0x00);  //read 0x8000
+
+        iicByteWrite((byte)0x80,(byte)0x41,(byte)0x0f,(byte)0x00);  //0x8041,command data
+        iicByteWrite((byte)0x80,(byte)0x42,(byte)0x0f,(byte)0x56);  //0x8042,command checksum
+
+        iicByteWrite((byte)0x80,(byte)0x40,(byte)0x0f,(byte)0xAA);  //0x8040,0xAA:关闭HID-IIC模式
+    }
+
+    //------------------------------------GT7 short circuit test code end------------------------------------------------------------------//
 
     @Override
     public void onClick(final View view) {
@@ -2384,6 +2778,14 @@ public class DataAnalysis extends AppCompatActivity
 
                     edt_ColNum.setText(Integer.toString(colnum));
                     edt_RowNum.setText(Integer.toString(rownum));
+
+                    for (int i = 0; i < 44; i++) {
+                        bypCfgDrv[i] = mBytes[289 + i];
+                    }
+
+                    for (int i = 0; i < 72; i++) {
+                        bypCfgSen[i] = mBytes[215 + i];
+                    }
                 }
                 else {
                     Toast.makeText(this, getResources().getString(R.string.cfgerror), Toast.LENGTH_SHORT).show();

+ 1 - 1
app/src/main/res/values-en/strings.xml

@@ -100,7 +100,7 @@
     <string name="companyaddr">Address:Room 2008, Chuangxingda Business Building, No.36 Liuxian 3rd Road, Baoan District, Shenzhen</string>
     <string name="telephonenum">Telephone:186 8896 1937</string>
     <string name="emailaddr">Email:max@wingcool.cn</string>
-    <string name="version">APK Version:v2.0.0_20211008-Release Version</string>
+    <string name="version">APK Version:v2.0.1_20211011-Release Version</string>
 
     <!-- other -->
     <string name="app_name">WingCoolAPK</string>

+ 1 - 1
app/src/main/res/values/strings.xml

@@ -100,7 +100,7 @@
     <string name="companyaddr">地址:深圳市宝安区留仙三路 36 号创兴达商务大厦 2008 室</string>
     <string name="telephonenum">电话:186 8896 1937</string>
     <string name="emailaddr">邮箱:max@wingcool.cn</string>
-    <string name="version">APK版本:v2.0.0_20211008-发布版本</string>
+    <string name="version">APK版本:v2.0.1_20211011-发布版本</string>
 
     <!-- other -->
     <string name="app_name">WingCoolAPK</string>