ソースを参照

扩展配置能够下发和读取成功。
配置了扩展标志位,但扩展配置全是0的话,IC会不保存配置。

robbin 4 年 前
コミット
e0ee23c634

+ 19 - 22
app/src/main/java/com/example/administrator/wingcool_gt9_apk/Config.java

@@ -3750,8 +3750,9 @@ public class Config extends AppCompatActivity
                     configBuilder.append(mCfg813B.getText().toString() + ",");
                     configBuilder.append(mCfg813C.getText().toString() + ",");
                     configBuilder.append(mCfg813D.getText().toString() + ",");
-                    configBuilder.append(mCfg813E.getText().toString() + ",");
-                    //configBuilder.append("01");
+                    //configBuilder.append(mCfg813E.getText().toString() + ",");
+                    configBuilder.append("01" + ",");   //补上01
+                    configBuilder.append("00" + ",");   //补上00,多加一个,补齐是偶数
 
                     //bCfgEx = (byte)Integer.parseInt(mCfg805A.getText().toString());
                     //if ((bCfgEx & 0x40) == 0x40)  //有扩展配置,则需要发送
@@ -3922,7 +3923,7 @@ public class Config extends AppCompatActivity
                 value = value.trim();  //去除空格
                 value = value.replaceAll(" ", ""); //逗号转换为空格
                 //char mTextData[] = value.toCharArray();
-                byte[] mBufferData = new byte[1024];
+                //byte[] mBufferData = new byte[1024];
 
                 for (int b = 0; b < stringArr.length; b++) {
                     byte aByte = (byte) Integer.parseInt(stringArr[b], 16);
@@ -3972,7 +3973,7 @@ public class Config extends AppCompatActivity
 
 
                 checksum = 0;
-                for (int i = 239; i < 239 + 126; i += 2) {
+                for (int i = (239 + 1); i < (239 + 1 + 126); i += 2) {  //要从偶数位开始,否则下面获取数据相加会出错
 
                     //int k = ((int)mBytes[i] << 8) + mBytes[i + 1];
                     int k = buff.asShortBuffer().get(i>>1);
@@ -3982,37 +3983,33 @@ public class Config extends AppCompatActivity
                     if (hv.length() < 2){
                         hv = "0" + hv;
                     }
-                    mConfigShow[i] = hv;
+                    mConfigShow[i - 1] = hv;   //因为前面多加了一个,从偶数开始,这里要减回来
                     hv = Integer.toHexString(buff.array()[i + 1] & 0xff);
                     if (hv.length() < 2){
                         hv = "0" + hv;
                     }
-                    mConfigShow[i + 1] = hv;
+                    mConfigShow[i] = hv;
 
                 }
 
                 //将checksum填入配置
-                buff.array()[239 + 126] = (byte) ((0 - (short)checksum) >> 8);
-                buff.array()[239 + 127] = (byte) ((0 - (short)checksum) & 0xff);
+                buff.array()[239 + 1 + 126] = (byte) ((0 - (short)checksum) >> 8);  //多加了一个从偶数位开始
+                buff.array()[239 + 1 + 127] = (byte) ((0 - (short)checksum) & 0xff);
 
-                mConfigShow[239 + 126] = Integer.toString((short)checksum >> 8);//Integer.toString(buff.array()[239 + 126] & 0xff);
-                mConfigShow[239 + 127] = Integer.toString((short)checksum & 0xff);//Integer.toString(buff.array()[239 + 127] & 0xff);
+                //mConfigShow[239 + 126] = Integer.toString((short)checksum >> 8);//Integer.toString(buff.array()[239 + 126] & 0xff);
+                //mConfigShow[239 + 127] = Integer.toString((short)checksum & 0xff);//Integer.toString(buff.array()[239 + 127] & 0xff);
 
 
                 byte addressH = (byte)0xBF;
                 byte addressL = (byte)0x7B;
-
-                /*
-                iicWrite(addressH,addressL,buff.array(),239,128);
-                if (!recallCheck(addressH, addressL,buff.array(),239,128)) {
+                iicWrite(addressH,addressL,buff.array(),239 + 1,128);
+                if (!recallCheck(addressH, addressL,buff.array(),239 + 1,128)) {
                     mShow.setText("Recall check error,Send cfg failed");
                     return;
                 }
                 else{
                     mShow.setText("Recall check success,Send cfg success");
                 }
-                */
-
                 //扩展命令  0x03,0x01,0x0f,-128,0x47,0x00,0x39,
                 addressH = (byte)0x80;
                 addressL = (byte)0x50;
@@ -4034,8 +4031,8 @@ public class Config extends AppCompatActivity
 
                     //if ((bCfgEx & 0x40) == 0x40)
                     {
-                        mCfgBFF9.setText(Integer.toHexString(buff.array()[239 + 126] & 0xff));
-                        mCfgBFFA.setText(Integer.toHexString(buff.array()[239 + 127] & 0xff));
+                        mCfgBFF9.setText(Integer.toHexString(buff.array()[239 + 1 + 126] & 0xff));
+                        mCfgBFFA.setText(Integer.toHexString(buff.array()[239 + 1 + 127] & 0xff));
                     }
                 }
                 break;
@@ -4087,7 +4084,7 @@ public class Config extends AppCompatActivity
 
                     //mCfg813E.setText(Integer.toHexString((checksum >> 8) & 0xff));
                     //mCfg813F.setText(Integer.toHexString(checksum & 0xff));
-                    if ((buff.array()[10] & 0x40) == 0x40)  //有扩展配置,再做校验
+                    //if ((buff.array()[10] & 0x40) == 0x40)  //有扩展配置,再做校验
                     {
                         addressH = (byte)0xBF;
                         addressL = (byte)0x7B;
@@ -4117,9 +4114,9 @@ public class Config extends AppCompatActivity
                         }
 
                     }
-                    else {
-                        mShow.setText("Cfg Checksum is correct!");
-                    }
+                    //else {
+                    //    mShow.setText("Cfg Checksum is correct!");
+                    //}
                 }
                 else {
                     mShow.setText("Cfg Checksum is error!");