Почему не все значения, которые я добавляю в свою базу данных из моего приложения для Android, вставляются?

Я делаю приложение , которое получает данные от медицинского устройства (электрокардиограмма) по Bluetooth . Когда я получаю данные от этого датчика, я загружаю их в списки и отправляю в базу данных. Однако, когда я пытаюсь их визуализировать, не все данные сохраняются в базе данных.

Я знаю, что данные есть в списках, потому что я проверяю System.out.print... их содержание. У кого-нибудь есть идеи, почему это происходит?

Это класс, в котором я выполняю необходимые преобразования и загружаю данные устройства в списки:

import android.os.Handler;
import android.util.Log;


public class DataParse implements Runnable
{
    private final String         TAG                 = getClass().getName();
    private final static int     BUFFER_SIZE         = 1024;
    private final int[]   PACKAGE_HEAD        = new int[]{0x55,0xaa};
    private final int     PKG_ECG_WAVE        = 0x01;
    private final int     PKG_ECG_PARAM       = 0x02;
    private final int     PKG_NIBP            = 0x03;
    private final int     PKG_SPO2            = 0x04;
    private final int     PKG_TEMP            = 0x05;
    private final int     PKG_SW_VER          = 0xfc;
    private final int     PKG_HW_VER          = 0xfd;
    private final int     PKG_SPO2_WAVE       = 0xfe;

    private int skipCounter = 0;
    private Handler mHandler;


    private byte[] recvData = new byte[BUFFER_SIZE];
    private int    emptyIndex = 0;
    private int    parseIndex = 0;

    public DataParse(Handler handler)
    {
        // TODO Auto-generated constructor stub
        this.mHandler = handler;
    }

    public void Add(byte[] buf, int bufSize)
    {
        boolean pkgStart = false;
        int pkgIndex = 0;
        int pkgLength = 0;
        byte[] pkgData = null;


        if(bufSize+emptyIndex <= BUFFER_SIZE)
        {
            System.arraycopy(buf, 0, recvData, emptyIndex, bufSize);
            //System.ar
            //System.out.println("recvData prueba: "+recvData);
            emptyIndex = (emptyIndex+bufSize) % BUFFER_SIZE;
        }
        else if( (bufSize+emptyIndex > BUFFER_SIZE) && (bufSize+emptyIndex < 2*BUFFER_SIZE))
        {
            System.arraycopy(buf, 0, recvData, emptyIndex, BUFFER_SIZE-emptyIndex);
            int temp = emptyIndex;
            emptyIndex = 0;
            System.arraycopy(buf, BUFFER_SIZE-temp, recvData, emptyIndex, bufSize-(BUFFER_SIZE-temp));
            emptyIndex = bufSize-(BUFFER_SIZE-temp);
        }
        else {
            Log.i(TAG, "Receive too much data.");
            return;
        }

        if(bufSize < 5) return;

        int i = parseIndex;
        while (i != emptyIndex) {

            if ((recvData[i]&0xff) == PACKAGE_HEAD[0]) {//recvData[i]&0xff para enmascarar datos, devulve solo el primer caracter de recvData
                int j = (i + 1)%BUFFER_SIZE;
                if (j != emptyIndex && (recvData[j]&0xff) == PACKAGE_HEAD[1]) {
                    int k = (j+1)%BUFFER_SIZE;
                    if(k != emptyIndex)
                    {
                        pkgLength = recvData[k]&0xff;
                        pkgData = new byte[pkgLength+2];
                        pkgStart = true;
                        pkgIndex = 0;
                        parseIndex = i;
                    }
                }
            }
            if (pkgStart && pkgLength > 0) {
                pkgData[pkgIndex] = recvData[i];
                pkgIndex++;

                if ((pkgLength != 0) && (pkgIndex == pkgLength + 2)) {
                    if(CheckSum(pkgData)){
                        ParsePackage(pkgData);
                    }
                    pkgStart = false;
                    parseIndex = (i + 1) % BUFFER_SIZE;
                }
            }
            i = (i + 1) % BUFFER_SIZE;
        }


    }

    @Override
    public void run() {
    }


    private void ParsePackage(final byte[] pkgData) {
        // TODO Auto-generated method stub
        int pkgType = pkgData[3]&0xff;

        switch (pkgType) {//tipo de paquete que llega

            case PKG_ECG_WAVE:
                skipCounter++;

                if(skipCounter == 1)
                {

                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            MainActivity.mECGWaveDraw.add(pkgData[4]&0xff);//Aqui es donde se mandan los datos para hacer la Grafica en la pantalla principal DEL APP
                                                                            //pkgData[4]&0xff es un valor entero
                        }
                    }).start();

                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            Globals.lstSendECGGraphData.add(Integer.toString(pkgData[4]&0xff));//Aqui es donde agrego los datos a las listas para enviarlos a la base de datos
                        }
                    }).start();

                    ServiceManager.onSendData();//Metodo para enviar los datos a la BD
                    skipCounter = 0;
                }
                break;
            case PKG_SPO2_WAVE:

                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        MainActivity.mSpO2WaveDraw.add(pkgData[4]&0xff);
                    }
                }).start();

                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        Globals.lstSendSPOGraphValueData.add(Integer.toString(pkgData[4]&0xff));
                        System.out.println("Datos SPO2 Grafico: "+Integer.toString(pkgData[4]&0xff));
                    }
                }).start();
                ServiceManager.onSendData();


                break;
            case PKG_ECG_PARAM:
                mHandler.obtainMessage(CONST.MESSAGE_ECG_PARAMS, 0xff&pkgData[6], 0xff&pkgData[5]).sendToTarget();
                break;
            case PKG_NIBP:
                mHandler.obtainMessage(CONST.MESSAGE_NIBP_PARAMS, 0xff&pkgData[6], 0xff&pkgData[8]).sendToTarget();

                break;
            case PKG_SPO2:
                mHandler.obtainMessage(CONST.MESSAGE_SPO2_PARAM, 0xff&pkgData[5], 0xff&pkgData[6]).sendToTarget();
                System.out.print("obtainMessage: "+mHandler.obtainMessage(CONST.MESSAGE_SPO2_PARAM, 0xff&pkgData[5], 0xff&pkgData[6]));
                System.out.println("Hexadecimal: "+pkgType);
                System.out.println("DatoHexadecimal: "+pkgData);
                break;
            case PKG_TEMP:
                mHandler.obtainMessage(CONST.MESSAGE_TEMP_PARAMS, 0xff&pkgData[5], 0xff&pkgData[6]).sendToTarget();
                break;
            case PKG_SW_VER:

                break;
            case PKG_HW_VER:

                break;
            default:
                break;
        }

    }

    private boolean CheckSum(byte[] packageData) {
        // TODO Auto-generated method stub
        int sum = 0;
        for(int i = 2; i < packageData.length-1; i++)
        {
            sum+=(packageData[i]&0xff);
        }

        if(((~sum)&0xff) == (packageData[packageData.length-1]&0xff))
        {
            return true;
        }

        return false;
    }
}

Это класс для отправки данных в базу данных на сервере. :

import org.json.JSONArray;
import org.json.JSONObject;
import com.loopj.android.http.AsyncHttpResponseHandler;

public class ServiceManager
{

    public static void onLoginUser(String user,String pw,final Login activity)
    {
        String url = Globals.baseUrl + "login.php"
                +"?user=" + user
                +"&pw=" + pw;

        HttpUtil.get(url, new AsyncHttpResponseHandler()
        {
            public void onFailure(Throwable paramThrowable) {
                String s = "fail";
                //activity.mDialogLogin.dismiss();
            }

            public void onFinish() {
                String s = "finish";
            }

            public void onSuccess(String paramString)
            {  //that is return when success..
                System.out.println("Entrando al onSuccess");
                try
                {
                    JSONObject localJSONObject1 = new JSONObject(paramString);
                    if (localJSONObject1.has("response"))
                    {
                        String response = localJSONObject1.getString("response");
                        if (response.equals("200"))
                        {
                            JSONArray jsArray = localJSONObject1.getJSONArray("users");
                            JSONObject model = jsArray.getJSONObject(0);
                            UserModel mModel = new UserModel();
                            mModel.mName = model.getString("user");
                            mModel.mId = model.getString("id");

                            int state = model.getInt("state");
                            if (state == 1)//era 0
                            {
                                Globals.mAccount = mModel;
                                activity.iniciaApp();
                            }
                        }
                        //activity.mDialogLogin.dismiss();
                    }
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                    activity.errorIniciarApp();
                    activity.mDialogLogin.dismiss();
                }
            }
        });
    }
    public static void onSendData()
    {
        String graphECG="";
        String graphOX = "";
        String valueSp = "";
        String valuePr = "";
        String valueResp = "";
        String valueHr = "";
        String valueTemp = "";
        String valueHighPressure = "";
        String valueLowPressure =  "";
        String valueAirFlow = "";
        String valueSPOGraphValue = "";
        String valueSPOValue1 = "";
        String valueSPOValue2 = "";
        String valueMov = "";
        String valueGal1 = "";
        String valueGal2 = "";
        String valueGal3 = "";
        String valueECG = "";
        String valueECGGraph = "";
        String valueECG2 = "";
        String valueECG3 = "";
        String valueEMG = "";
        String valueTempArd = "";
        String valueLote = "";
        String valueTipo = "";
        String valuePruebasDato1 = "";
        String valuePruebasDato2 = "";




        //Asignacion de los datos de las listas a las nuevas cadenas creadas arriba
        if (Globals.lstSendData.size() > 0)
            graphECG = Globals.lstSendData.get(0); //Obtiene lo que tienen la lista (ECG) en la clase Globals.java
        if (Globals.lstSendData1.size() > 0)
            graphOX = Globals.lstSendData1.get(0);//Obtiene lo que tienen la lista (OXIMETER) en la clase Globals.java
        if (Globals.lstSendSpData.size() > 0)
            valueSp = Globals.lstSendSpData.get(0);//Obtiene lo que tienen la lista (SpO2) en la clase Globals.java
        if (Globals.lstSendPrData.size() > 0)
            valuePr = Globals.lstSendPrData.get(0);//Obtiene lo que tienen la lista (Pr) en la clase Globals.java
        if (Globals.lstSendResData.size() > 0)
            valueResp = Globals.lstSendResData.get(0);//Obtiene lo que tienen la lista (ResData) en la clase Globals.java
        if (Globals.lstSendHrData.size() > 0)
            valueHr = Globals.lstSendHrData.get(0);//Obtiene lo que tienen la lista (HrData) en la clase Globals.java
        if (Globals.lstSendTempData.size() > 0)
            valueTemp = Globals.lstSendTempData.get(0);//Obtiene lo que tienen la lista (Temperature) en la clase Globals.java
        if (Globals.lstSendHighData.size() > 0)
            valueHighPressure = Globals.lstSendHighData.get(0);//Obtiene lo que tienen la lista (HighPressure) en la clase Globals.java
        if (Globals.lstSendLowData.size() > 0)
            valueLowPressure = Globals.lstSendLowData.get(0);//Obtiene lo que tienen la lista (LowPressure) en la clase Globals.java
        if(Globals.lstSendAirFlow.size()>0)
            valueAirFlow = Globals.lstSendAirFlow.get(0);
        if(Globals.lstSendSPOGraphValueData.size()>0)
            valueSPOGraphValue = Globals.lstSendSPOGraphValueData.get(0);
        if(Globals.lstSendSPOValue1Data.size()>0)
            valueSPOValue1 = Globals.lstSendSPOValue1Data.get(0);
        if(Globals.lstSendSPOValue2Data.size()>0)
            valueSPOValue2 = Globals.lstSendSPOValue2Data.get(0);
        if(Globals.lstSendMovData.size()>0)
            valueMov = Globals.lstSendMovData.get(0);
        if(Globals.lstSendGal1Data.size()>0)
            valueGal1 = Globals.lstSendGal1Data.get(0);
        if(Globals.lstSendGal2Data.size()>0)
            valueGal2 = Globals.lstSendGal2Data.get(0);
        if(Globals.lstSendGal3Data.size()>0)
            valueGal3 = Globals.lstSendGal3Data.get(0);
        if(Globals.lstSendECGGraphData.size()>0)
            valueECGGraph = Globals.lstSendECGGraphData.get(0);
        if(Globals.lstSendECGData.size()>0)
            valueECG = Globals.lstSendECGData.get(0);
        if(Globals.lstSendECGData2.size()>0)
            valueECG2 = Globals.lstSendECGData2.get(0);
        if(Globals.lstSendECGData3.size()>0)
            valueECG3 = Globals.lstSendECGData3.get(0);
        if(Globals.lstSendEMGData.size()>0)
            valueEMG = Globals.lstSendEMGData.get(0);

        if(Globals.lstSendTempARDData.size()>0)
            valueTempArd = Globals.lstSendTempARDData.get(0);


        if(Globals.lstSendDatoLote.size()>0)
            valueLote = Globals.lstSendDatoLote.get(0);
        if(Globals.lstSendDatoTipo.size()>0)
            valueTipo = Globals.lstSendDatoTipo.get(0);
        if(Globals.lstSendPruebasDato1.size()>0)
            valuePruebasDato1 = Globals.lstSendPruebasDato1.get(0);
        if(Globals.lstSendPruebasDato2.size()>0)
            valuePruebasDato2 = Globals.lstSendPruebasDato2.get(0);

        final String v_ecg = graphECG;
        final String v_ox = graphOX;
        final String v_sp = valueSp;
        final String v_pr = valuePr;
        final String v_resp = valueResp;
        final String v_hr = valueHr;
        final String v_temp = valueTemp;
        final String v_high = valueHighPressure;
        final String v_low = valueLowPressure;
        final String v_air = valueAirFlow;
        final String v_spoGraph = valueSPOGraphValue;
        final String v_spo1 = valueSPOValue1;
        final String v_spo2 = valueSPOValue2;
        final String v_mov = valueMov;
        final String v_gal1 = valueGal1;
        final String v_gal2 = valueGal2;
        final String v_gal3 = valueGal3;
        final String v_ECGGraphArduino = valueECGGraph;
        final String v_ECGarduino = valueECG;
        final String v_ECGarduino2 = valueECG2;
        final String v_ECGarduino3 = valueECG3;
        final String v_EMG = valueEMG;
        final String v_TempArd = valueTempArd;

        final String v_lote = valueLote;
        final String v_tipo = valueTipo;
        final String v_pruebasDato1 = valuePruebasDato1;
        final String v_pruebasDato2 = valuePruebasDato2;



        //Envio de los datos al servidor donde se almacenaran los datos en la BD
        String url = Globals.baseUrl + "receiveData.php"
                +"?ecg=" + graphECG
                +"&ox=" + graphOX
                +"&sp=" + valueSp
                +"&pr=" + valuePr
                +"&resp=" + valueResp
                +"&hr=" + valueHr
                +"&temp=" + valueTemp
                +"&high=" + valueHighPressure
                +"&low=" + valueLowPressure
                +"&air=" + valueAirFlow
                +"&SPOGraphValue=" + valueSPOGraphValue
                +"&SPOValue1=" + valueSPOValue1
                +"&SPOValue2=" + valueSPOValue2
                +"&MovValue="+valueMov
                +"&GalValue1="+valueGal1
                +"&GalValue2="+valueGal2
                +"&GalValue3="+valueGal3
                +"&EcgGraphValue="+valueECGGraph
                +"&EcgValue="+valueECG
                +"&EcgValue2="+valueECG2
                +"&EcgValue3="+valueECG3
                +"&EmgValue="+valueEMG
                +"&TempValue="+valueTempArd
                +"&LoteValue="+valueLote
                +"&TipoValue="+valueTipo
                +"&Dato1Value="+valuePruebasDato1
                +"&Dato2Value="+valuePruebasDato2
                +"&uid=" + Globals.mAccount.mId;
        HttpUtil.get(url, new AsyncHttpResponseHandler()
        {
            public void onFailure(Throwable paramThrowable) {
                String s = "fail";
            }

            public void onFinish() {
                String s = "finish";
            }
//

            public void onSuccess(String paramString) {  //that is return when success..
                try {
                    JSONObject localJSONObject1 = new JSONObject(paramString);
                    if (localJSONObject1.has("response")) {
                        String response = localJSONObject1.getString("response");
                        if (response.equals("200"))
                        {
                            try {

                                if (!v_ecg.equals(""))
                                    Globals.lstSendData.remove(0);
                                if (!v_ox.equals(""))
                                    Globals.lstSendData1.remove(0);
                                if (!v_sp.equals(""))
                                    Globals.lstSendSpData.remove(0);
                                if (!v_pr.equals(""))
                                    Globals.lstSendPrData.remove(0);
                                if (!v_resp.equals(""))
                                    Globals.lstSendResData.remove(0);
                                if (!v_hr.equals(""))
                                    Globals.lstSendHrData.remove(0);
                                if (!v_temp.equals(""))
                                    Globals.lstSendTempData.remove(0);
                                if (!v_high.equals(""))
                                    Globals.lstSendHighData.remove(0);
                                if (!v_low.equals(""))
                                    Globals.lstSendLowData.remove(0);
                                if(!v_air.equals(""))
                                    Globals.lstSendAirFlow.remove(0);

                                if(!v_spoGraph.equals(""))
                                    Globals.lstSendSPOGraphValueData.remove(0);
                                if(!v_spo1.equals(""))
                                    Globals.lstSendSPOValue1Data.remove(0);
                                if(!v_spo2.equals(""))
                                    Globals.lstSendSPOValue2Data.remove(0);
                                if(!v_mov.equals(""))
                                    Globals.lstSendMovData.remove(0);
                                if(!v_gal1.equals(""))
                                    Globals.lstSendGal1Data.remove(0);
                                if(!v_gal2.equals(""))
                                    Globals.lstSendGal2Data.remove(0);
                                if(!v_gal3.equals(""))
                                    Globals.lstSendGal3Data.remove(0);
                                if(!v_ECGGraphArduino.equals(""))
                                    Globals.lstSendECGGraphData.remove(0);
                                if(!v_ECGarduino.equals(""))
                                    Globals.lstSendECGData.remove(0);
                                if(!v_ECGarduino2.equals(""))
                                    Globals.lstSendECGData2.remove(0);
                                if(!v_ECGarduino3.equals(""))
                                    Globals.lstSendECGData3.remove(0);
                                if(!v_EMG.equals(""))
                                    Globals.lstSendEMGData.remove(0);
                                if(!v_TempArd.equals(""))
                                    Globals.lstSendTempARDData.remove(0);

                                if(!v_tipo.equals(""))
                                    Globals.lstSendDatoTipo.remove(0);
                                if(!v_lote.equals(""))
                                    Globals.lstSendDatoLote.remove(0);
                                if(!v_pruebasDato1.equals(""))
                                    Globals.lstSendPruebasDato1.remove(0);
                                if(!v_pruebasDato2.equals(""))
                                    Globals.lstSendPruebasDato2.remove(0);


                            }catch(java.lang.IndexOutOfBoundsException ex){}
                        }


                        if ((Globals.lstSendData.size() > 0) || (Globals.lstSendData1.size() > 0)
                                || (Globals.lstSendSpData.size() > 0) || (Globals.lstSendPrData.size() > 0)
                                || (Globals.lstSendResData.size() > 0) || (Globals.lstSendHrData.size() > 0)
                                || (Globals.lstSendTempData.size() > 0) || (Globals.lstSendHighData.size() > 0)
                                || (Globals.lstSendLowData.size() > 0) || (Globals.lstSendAirFlow.size()>0)
                                || (Globals.lstSendSPOValue1Data.size() > 0) || (Globals.lstSendSPOValue2Data.size()>0)
                                || (Globals.lstSendMovData.size()>0) || (Globals.lstSendGal1Data.size()>0)
                                || (Globals.lstSendGal3Data.size()>0) || (Globals.lstSendGal3Data.size()>0)
                                || (Globals.lstSendECGData.size()>0) || (Globals.lstSendEMGData.size()>0)
                                || (Globals.lstSendECGGraphData.size()>0) || (Globals.lstSendSPOGraphValueData.size()>0)
                                || (Globals.lstSendTempARDData.size()>0) || (Globals.lstSendECGData2.size()>0)
                                || (Globals.lstSendECGData3.size()>0) || (Globals.lstSendDatoLote.size()>0)
                                || (Globals.lstSendDatoTipo.size()>0) || (Globals.lstSendPruebasDato1.size()>0)
                                || (Globals.lstSendPruebasDato2.size()>0)
                                )
                        {
                            onSendData();
                        }
                        else
                        {
                            Globals.isActivity = false;
                        }

                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }


        });
    }
}

Я действительно надеюсь, что вы можете мне помочь, я был там некоторое время и не могу найти решение, заранее спасибо. Данные поступают через 1 мс, может ли это быть связано с неправильной вставкой?

0
задан 31.12.2016, 03:21
0 ответов

Хорошие, он мог бы быть, потому что ты объявляешь переменные с размещенным конечным словом?

Я думаю, что тебе не надо, кроме того это могла бы быть причина проблемы. Заявления, которые используют размещенное конечное слово:

Конец: покажи, что переменная - постоянного типа: он не допустит изменения после Вашего заявления и ассигнования стоимости. конец определяет, что признак не может быть sobreescrito или повторно определенный. Или же: оно не будет функционировать как “традиционная” переменная, а как постоянная величина. Каждая постоянная величина, объявленная с концом должна быть инициализировавшей в том же моменте объявлять ее. конец также используется как ключевое слово в другом контексте: конечный класс (конец) тот, у которого не могут быть классы, которые получали в наследство бы ее. Мы это увидим ниже, когда мы будем говорить о наследстве.

Кроме того сначала ты удаляешь информацию, я рекомендую тебе, что каждый раз, когда ты был должен использовать remove() или метод precido делай это всегда в конце концов, когда уже ты работал, так как он мог бы состоять в том, чтобы ты потерял ссылку.

0
ответ дан 03.12.2019, 17:58

Теги

Похожие вопросы