Procházet zdrojové kódy

增加GT7系列的识别,能读到固件版本号和噪声数据,可以对ram进行读写操作
to do list:1、数据读取和显示,2、配置读取修改下发保存,3、固件下载,4、测试

robbin před 3 roky
rodič
revize
b91bbd5912

+ 6 - 4
app/src/main/java/com/example/administrator/wingcool_gt9_apk/Config.java

@@ -1807,8 +1807,9 @@ public class Config extends AppCompatActivity
                 for (UsbDevice usbDevice : deviceList.values()) {
                     //int productId = usbDevice.getProductId();
                     int vendorId = usbDevice.getVendorId();
-                    if (( vendorId == 0x27C0)
-                            ||(vendorId == 0x222A))    //奕力的VID
+                    if ((vendorId == 0x27C0)
+                            ||(vendorId == 0x222A)    //奕力的VID
+                            ||(vendorId == 0x056A))   //8191主动笔和Wacom主动笔
                     {
                         //这里说明下,这里的377 , 7205是我这台机子上独有,因为我这上面有多台设备,所以我在这里
                         //判断了下.只有一台设备的无需这一步.
@@ -1845,8 +1846,9 @@ public class Config extends AppCompatActivity
                 //int productId = usbDevice.getProductId();
                 int vendorId = usbDevice.getVendorId();
                 //if (productId == 0x0818 || productId == 0x0001 )
-                if (( vendorId == 0x27C0)
-                        ||(vendorId == 0x222A))    //奕力的VID
+                if ((vendorId == 0x27C0)
+                        ||(vendorId == 0x222A)    //奕力的VID
+                        ||(vendorId == 0x056A))   //8191主动笔和Wacom主动笔
                 {
                     if (mUsbManager.hasPermission(usbDevice)) {
 

+ 6 - 4
app/src/main/java/com/example/administrator/wingcool_gt9_apk/DataAnalysis.java

@@ -610,8 +610,9 @@ public class DataAnalysis extends AppCompatActivity
                         for (UsbDevice usbDevice : deviceList.values()) {
                             //int productId = usbDevice.getProductId();
                             int vendorId = usbDevice.getVendorId();
-                            if (( vendorId == 0x27C0)
-                                    ||(vendorId == 0x222A))    //奕力的VID
+                            if ((vendorId == 0x27C0)
+                                    ||(vendorId == 0x222A)    //奕力的VID
+                                    ||(vendorId == 0x056A))   //8191主动笔和Wacom主动笔
                             {
                                 if (mUsbManager.hasPermission(usbDevice)) {
                                     initDevice();
@@ -639,8 +640,9 @@ public class DataAnalysis extends AppCompatActivity
                 //int productId = usbDevice.getProductId();
                 int vendorId = usbDevice.getVendorId();
                 //if (productId == 0x0818 || productId == 0x0001 )
-                if (( vendorId == 0x27C0)
-                        ||(vendorId == 0x222A))    //奕力的VID
+                if ((vendorId == 0x27C0)
+                        ||(vendorId == 0x222A)    //奕力的VID
+                        ||(vendorId == 0x056A))   //8191主动笔和Wacom主动笔
                 {
                     if (mUsbManager.hasPermission(usbDevice)) {
 

+ 59 - 29
app/src/main/java/com/example/administrator/wingcool_gt9_apk/FirmwareUpdate.java

@@ -79,7 +79,7 @@ public class FirmwareUpdate extends AppCompatActivity
     private byte[] mBytes = new byte[1024];
     private byte[] mSendData = new byte[1024];
     private byte[] mConfigData = new byte[1024];
-    private String[] mVersionShow = new String[7];
+    private String[] mVersionShow = new String[16];
    // byte mSendData[] = null;
 
     private boolean isReceiverMessage = true;
@@ -95,6 +95,7 @@ public class FirmwareUpdate extends AppCompatActivity
     private Button btnReadVersion;
     private TextView mShow;
     private TextView tvUpDataResult;
+    private int iProductId;
     
     int FW_HEAD_LENGTH	=		14;
     int FW_SECTION_LENGTH	=	0x2000; 	/** 8K */
@@ -366,8 +367,9 @@ public class FirmwareUpdate extends AppCompatActivity
                         for (UsbDevice usbDevice : deviceList.values()) {
                             //int productId = usbDevice.getProductId();
                             int vendorId = usbDevice.getVendorId();
-                            if (( vendorId == 0x27C0)
-                                    ||(vendorId == 0x222A))    //奕力的VID
+                            if ((vendorId == 0x27C0)
+                                    ||(vendorId == 0x222A)    //奕力的VID
+                                    ||(vendorId == 0x056A))   //8191主动笔和Wacom主动笔
                             {
                                 if (mUsbManager.hasPermission(usbDevice)) {
                                     initDevice();
@@ -400,11 +402,11 @@ public class FirmwareUpdate extends AppCompatActivity
         Collection<UsbDevice> values = deviceList.values();
         if (!values.isEmpty()) {
             for (UsbDevice usbDevice : values) {
-                //int productId = usbDevice.getProductId();
                 int vendorId = usbDevice.getVendorId();
                 //if (productId == 0x0818 || productId == 0x0001 )
-                if (( vendorId == 0x27C0)
-                        ||(vendorId == 0x222A))    //奕力的VID
+                if ((vendorId == 0x27C0)
+                        ||(vendorId == 0x222A)    //奕力的VID
+                        ||(vendorId == 0x056A))   //8191主动笔和Wacom主动笔
                 {
 
                     if (mUsbManager.hasPermission(usbDevice)) {
@@ -463,6 +465,7 @@ public class FirmwareUpdate extends AppCompatActivity
                                     mUsbInterface = usbInterface;
                                     mUsbDeviceConnection = mUsbManager.openDevice(usbDevice);
                                     if(null != mUsbEndpointIn){
+                                        iProductId = usbDevice.getProductId();
                                         mHandler.sendEmptyMessage(CONNECTED_SUCCESS);
                                     }
                                 }
@@ -483,40 +486,67 @@ public class FirmwareUpdate extends AppCompatActivity
         int j = 0;
         int sendLoop = 1;
         byte addressH,addressL;
+        String hv = "";
         switch(view.getId()) {
             case R.id.version:     //read version
                 bottonMode = 0;
                 mSendData = mSendGetGt9VersionData;
                 isSendMessage = false;
 
-                addressH = (byte)0x81;
-                addressL = (byte)0x40;
-                iicRead(addressH,addressL,mBytes,32);
+                if ((iProductId == 0x0819) || (iProductId == 0x8191))
+                {
+                    addressH = (byte)0x82;
+                    addressL = (byte)0x40;
+                    iicRead(addressH,addressL,mBytes,16);
 
-                int v = mBytes[4] & 0xFF;
-                String hv = Integer.toHexString(v);
-                if (hv.length() < 2){
-                    hv = "0" + hv;
-                }
-                mVersionShow[0] = hv;
+                    for (int i = 0; i < 8; i++)
+                    {
+                        int v = mBytes[i] & 0xFF;
+                        mVersionShow[i] = Integer.toHexString(v);
+                    }
 
-                v = mBytes[5] & 0xFF;
-                hv = Integer.toHexString(v);
-                if (hv.length() < 2){
-                    hv = "0" + hv;
+                    if (mBytes[0] == 0x37 && mBytes[1] == 0x33 && mBytes[2] == 0x38 && mBytes[3] == 0x37){
+                        mShow.setText( "GT7387_" + mVersionShow[4] + "." + mVersionShow[5] + "." + mVersionShow[6] + "." + mVersionShow[7]);//输出显示
+                    }
+                    else if (mBytes[0] == 0x37 && mBytes[1] == 0x33 && mBytes[2] == 0x38 && mBytes[3] == 0x38){
+                        mShow.setText( "GT7387P_" + mVersionShow[4] + "." + mVersionShow[5] + "." + mVersionShow[6] + "." + mVersionShow[7]);//输出显示
+                    }
+                    else{
+                        mShow.setText( "Null" );//输出显示
+                    }
                 }
-                mVersionShow[1] = hv;
+                else
+                {
+                    addressH = (byte)0x81;
+                    addressL = (byte)0x40;
+                    iicRead(addressH,addressL,mBytes,16);
+
+                    int v = mBytes[4] & 0xFF;
+                    hv = Integer.toHexString(v);
+                    if (hv.length() < 2){
+                        hv = "0" + hv;
+                    }
+                    mVersionShow[0] = hv;
 
-                if (mBytes[0] == 0x39 && mBytes[1] == 0x31 && mBytes[2] == 0x31 && mBytes[3] == 0x32){
-                    mShow.setText( "GT9110H_" + mVersionShow[1].toString() + mVersionShow[0].toString() );//输出显示
-                }
-                else if (mBytes[0] == 0x36 && mBytes[1] == 0x31 && mBytes[2] == 0x30 && mBytes[3] == 0x39){
-                    mShow.setText( "GT6108H_" + mVersionShow[1].toString() + mVersionShow[0].toString() );//输出显示
-                }
-                else{
-                    mShow.setText( "Null" );//输出显示
+                    v = mBytes[5] & 0xFF;
+                    hv = Integer.toHexString(v);
+                    if (hv.length() < 2){
+                        hv = "0" + hv;
+                    }
+                    mVersionShow[1] = hv;
+
+                    if (mBytes[0] == 0x39 && mBytes[1] == 0x31 && mBytes[2] == 0x31 && mBytes[3] == 0x32){
+                        mShow.setText( "GT9110H_" + mVersionShow[1].toString() + mVersionShow[0].toString() );//输出显示
+                    }
+                    else if (mBytes[0] == 0x36 && mBytes[1] == 0x31 && mBytes[2] == 0x30 && mBytes[3] == 0x39){
+                        mShow.setText( "GT6108H_" + mVersionShow[1].toString() + mVersionShow[0].toString() );//输出显示
+                    }
+                    else{
+                        mShow.setText( "Null" );//输出显示
+                    }
                 }
 
+
                 break;
 
             case R.id.btnAutoUpdate:
@@ -525,7 +555,7 @@ public class FirmwareUpdate extends AppCompatActivity
                 isReceiverMessage = false;  //升级关闭循环接收信息
                 //mSendData = mSendGetGt9VersionData;
                 isSendMessage = false;
-                updateProcHandle();
+                //updateProcHandle();   //暂时不开放
                 //mHandler.sendEmptyMessage(UPDATE_FW);
                 break;
             case R.id.btnUpdate:

+ 1 - 1
app/src/main/java/com/example/administrator/wingcool_gt9_apk/GT9MainActivity.java

@@ -620,7 +620,7 @@ public class GT9MainActivity extends AppCompatActivity
                 if (( iVendorId == 0x27C0)
                         ||(iVendorId == 0x222A)    //奕力的VID
                         ||(iVendorId == 0x056A))   //8191主动笔和Wacom主动笔
-                {  //0x0001是奕力的PID
+                {
 
                     if (mUsbManager.hasPermission(usbDevice)) {
 

+ 6 - 4
app/src/main/java/com/example/administrator/wingcool_gt9_apk/IICOperation.java

@@ -406,8 +406,9 @@ public class IICOperation extends AppCompatActivity
                         for (UsbDevice usbDevice : deviceList.values()) {
                             //int productId = usbDevice.getProductId();
                             int vendorId = usbDevice.getVendorId();
-                            if (( vendorId == 0x27C0)
-                                    ||(vendorId == 0x222A))    //奕力的VID
+                            if ((vendorId == 0x27C0)
+                                    ||(vendorId == 0x222A)    //奕力的VID
+                                    ||(vendorId == 0x056A))   //8191主动笔和Wacom主动笔
                             {
 
                                 if (mUsbManager.hasPermission(usbDevice)) {
@@ -442,8 +443,9 @@ public class IICOperation extends AppCompatActivity
                 //int productId = usbDevice.getProductId();
                 int vendorId = usbDevice.getVendorId();
                 //if (productId == 0x0818 || productId == 0x0001 )
-                if (( vendorId == 0x27C0)
-                        ||(vendorId == 0x222A))    //奕力的VID
+                if ((vendorId == 0x27C0)
+                        ||(vendorId == 0x222A)    //奕力的VID
+                        ||(vendorId == 0x056A))   //8191主动笔和Wacom主动笔
                 {
 
                     if (mUsbManager.hasPermission(usbDevice)) {

+ 47 - 21
app/src/main/java/com/example/administrator/wingcool_gt9_apk/NoiseAnalysis.java

@@ -53,7 +53,7 @@ public class NoiseAnalysis extends AppCompatActivity implements OpenDevicesRecei
 
     private Context mAlertContext;
     //MainActivity mMainAct = new MainActivity();
-    private byte[] mRawdataBytes = new byte[42*30*2+64*2];
+    private byte[] mRawdataBytes = new byte[256];
 
     private static final int RAWDATA_MESSAGE = 0;
     private static final int LOG1_MESSAG = 1;
@@ -97,6 +97,7 @@ public class NoiseAnalysis extends AppCompatActivity implements OpenDevicesRecei
     private UsbInterface mUsbInterface;
     private StringBuffer mStringBuffer = new StringBuffer();
     private Context mDataContext;
+    private int iProductId;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -162,20 +163,42 @@ public class NoiseAnalysis extends AppCompatActivity implements OpenDevicesRecei
                     //获取噪声数据
                     //if((mUsbEndpointIn != null) || (mUsbEndpointOut != null)) {
                     if (bIsconnected == true){
-                        addressH = (byte) 0xc6;
-                        addressL = (byte) 0xe6;
-                        if (!iicRead(addressH, addressL, mRawdataBytes, 156)) {  //读取ADC噪声
-
-                            startFreq = 0;
-                            continue;
-                        } else {
-
-                            startFreq = mRawdataBytes[0];
-                            endFreq = mRawdataBytes[1];
-                            freqNum = endFreq-startFreq ;
-                            bitFreq = ((mRawdataBytes[2] & 0xFF) << 8) + (mRawdataBytes[3] & 0xFF);
-                            currentFreqIndex = mRawdataBytes[5];
-                            currentFreq = currentFreqIndex * bitFreq;
+                        if ((iProductId == 0x0819) || (iProductId == 0x8191))
+                        {
+                            addressH = (byte) 0xF3;
+                            addressL = (byte) 0xB4;
+                            if (!iicRead(addressH, addressL, mRawdataBytes, 156)) {  //读取ADC噪声
+                                startFreq = 0;
+                                continue;
+                            } else {
+
+                                iicRead((byte)0x81, (byte)0xBD, mConfigData,1);
+
+                                startFreq = mRawdataBytes[0];
+                                endFreq = mRawdataBytes[1];
+                                freqNum = endFreq - startFreq + 1;
+                                bitFreq = 1000000 / (mConfigData[0] & 0xFF);
+                                currentFreqIndex = mRawdataBytes[5];
+                                currentFreq = currentFreqIndex * bitFreq;
+                            }
+                        }
+                        else
+                        {
+                            addressH = (byte) 0xc6;
+                            addressL = (byte) 0xe6;
+                            if (!iicRead(addressH, addressL, mRawdataBytes, 156)) {  //读取ADC噪声
+
+                                startFreq = 0;
+                                continue;
+                            } else {
+
+                                startFreq = mRawdataBytes[0];
+                                endFreq = mRawdataBytes[1];
+                                freqNum = endFreq - startFreq + 1;
+                                bitFreq = ((mRawdataBytes[2] & 0xFF) << 8) + (mRawdataBytes[3] & 0xFF);
+                                currentFreqIndex = mRawdataBytes[5];
+                                currentFreq = currentFreqIndex * bitFreq;
+                            }
                         }
                     }
                     else{
@@ -197,8 +220,8 @@ public class NoiseAnalysis extends AppCompatActivity implements OpenDevicesRecei
                     //xAxis.setGranularity(1f); //比例间隔
                     if(startFreq != 0){
                         xAxis.setLabelCount(freqNum, true);//刻度数量 此函数只能显示26个标签
-                        xAxis.setAxisMinimum(startFreq*bitFreq);// x刻度最小值
-                        xAxis.setAxisMaximum((endFreq-1)*bitFreq); //x刻度最大值
+                        xAxis.setAxisMinimum(startFreq * bitFreq);// x刻度最小值
+                        xAxis.setAxisMaximum(endFreq * bitFreq); //x刻度最大值
                     }
                     else {
                         xAxis.setLabelCount(21, true);//刻度数量
@@ -405,8 +428,9 @@ public class NoiseAnalysis extends AppCompatActivity implements OpenDevicesRecei
                         for (UsbDevice usbDevice : deviceList.values()) {
                             //int productId = usbDevice.getProductId();
                             int vendorId = usbDevice.getVendorId();
-                            if (( vendorId == 0x27C0)
-                                    ||(vendorId == 0x222A))    //奕力的VID
+                            if ((vendorId == 0x27C0)
+                                    ||(vendorId == 0x222A)    //奕力的VID
+                                    ||(vendorId == 0x056A))   //8191主动笔和Wacom主动笔
                             {
                                 if (mUsbManager.hasPermission(usbDevice)) {
                                     //initAccessory(usbDevice);
@@ -443,8 +467,9 @@ public class NoiseAnalysis extends AppCompatActivity implements OpenDevicesRecei
                 //int productId = usbDevice.getProductId();
                 int vendorId = usbDevice.getVendorId();
                 //if (productId == 0x0818 || productId == 0x0001 )
-                if (( vendorId == 0x27C0)
-                        ||(vendorId == 0x222A))    //奕力的VID
+                if ((vendorId == 0x27C0)
+                        ||(vendorId == 0x222A)    //奕力的VID
+                        ||(vendorId == 0x056A))   //8191主动笔和Wacom主动笔
                 {
                     if (mUsbManager.hasPermission(usbDevice)) {
 
@@ -506,6 +531,7 @@ public class NoiseAnalysis extends AppCompatActivity implements OpenDevicesRecei
                                     mUsbInterface = usbInterface;
                                     mUsbDeviceConnection = mUsbManager.openDevice(usbDevice);
                                     if(null != mUsbEndpointIn){
+                                        iProductId = usbDevice.getProductId();
                                         bIsconnected = true;
                                     }
                                 }

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

@@ -99,7 +99,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:v1.1.3_20210818-Release Version</string>
+    <string name="version">APK Version:v1.1.3_20210826-Release Version</string>
 
     <!-- other -->
     <string name="app_name">WingCoolAPK</string>

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

@@ -99,7 +99,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版本:v1.1.3_20210818-发布版本</string>
+    <string name="version">APK版本:v1.1.3_20210826-发布版本</string>
 
     <!-- other -->
     <string name="app_name">WingCoolAPK</string>