示例#1
0
 public void HasilCekTombol(ArgumenKendaliTombol args)
 {
     if (sesi < 10)
     {
         if (args.status && !hasilTekan[sesi])     //ngecek setiap tombol untuk dilakukan testing
         {
             hasilTekan[sesi]        = true;
             hasilDurasiRespon[sesi] = args.waktuRespon;
         }
     }
 }
示例#2
0
        public void CekTombol()
        {
            SimpanPosisiTombol();

            for (int i = 0; i < DaftarTombol.Count; i++)
            {
                //mulai proses similarity measurement ED
                double jarak = JarakEuclidean
                               (
                    DaftarPosisiTombol[i][0][0],
                    DaftarPosisiTombol[i][1][0],
                    PosisiMata[0][0],
                    PosisiMata[1][0]
                               );
                //mulai proses similarity measurement PPMC
                double korelasix = KorelasiPearson(DaftarPosisiTombol[i][0], PosisiMata[0]);
                double korelasiy = KorelasiPearson(DaftarPosisiTombol[i][1], PosisiMata[1]);

                //Proses ketika hasil PPMC dan ED sampai durasi terpenuhi
                daftarJarak[i][daftarHasilJarak[i]]         = jarak;
                daftarKorelasiX[i][daftarHasilKorelasiX[i]] = korelasix;
                daftarKorelasiY[i][daftarHasilKorelasiY[i]] = korelasiy;

                if (jarak < ThresholdJarak)
                {
                    daftarHasilJarak[i] += 1;
                }
                else
                {
                    daftarHasilJarak[i] = 0;
                    if (mode.Equals(MetodeDeteksi.ED))
                    {
                        daftarTimerTombol[i].Restart();
                    }
                }

                if (korelasix > ThresholdKorelasi)
                {
                    daftarHasilKorelasiX[i] += 1;
                }
                else
                {
                    daftarHasilKorelasiX[i] = 0;
                    if (mode.Equals(MetodeDeteksi.PPMCX))
                    {
                        daftarTimerTombol[i].Restart();
                    }
                }

                if (korelasiy > ThresholdKorelasi)
                {
                    daftarHasilKorelasiY[i] += 1;
                }
                else
                {
                    daftarHasilKorelasiY[i] = 0;
                    if (mode.Equals(MetodeDeteksi.PPMCY))
                    {
                        daftarTimerTombol[i].Restart();
                    }
                }

                if (korelasix >= ThresholdKorelasi || korelasiy >= ThresholdKorelasi)
                {
                    daftarHasilKorelasiXY[i] += 1;
                }
                else
                {
                    daftarHasilKorelasiXY[i] = 0;
                    if (mode.Equals(MetodeDeteksi.PPMCXY))
                    {
                        daftarTimerTombol[i].Restart();
                    }
                }

                bool statusjarak      = daftarHasilJarak[i] >= DurasiJarakEuclidean;
                bool statusKorelasiX  = daftarHasilKorelasiX[i] >= DurasiKorelasiPearson;
                bool statusKorelasiY  = daftarHasilKorelasiY[i] >= DurasiKorelasiPearson;
                bool statusKorelasiXY = daftarHasilKorelasiXY[i] >= DurasiKorelasiPearson;

                //Proses jika button mulai terdeteksi jaraknya sama dengan gaze

                if (statusjarak)
                {
                    daftarHasilJarak[i] = DurasiJarakEuclidean;
                }

                //proses jika button mulai terdeteksi korelasinya sama dengan gaze

                if (statusKorelasiX)
                {
                    daftarHasilKorelasiX[i] = DurasiKorelasiPearson;
                }

                if (statusKorelasiY)
                {
                    daftarHasilKorelasiY[i] = DurasiKorelasiPearson;
                }

                if (statusKorelasiXY)
                {
                    daftarHasilKorelasiXY[i] = DurasiKorelasiPearson;
                }

                bool status = false;

                switch (mode)
                {
                case MetodeDeteksi.ED:
                    status = statusjarak;
                    break;

                case MetodeDeteksi.PPMCX:
                    status = statusKorelasiX;
                    break;

                case MetodeDeteksi.PPMCY:
                    status = statusKorelasiY;
                    break;

                case MetodeDeteksi.PPMCXY:
                    status = statusKorelasiXY;
                    break;
                }

                if (status)
                {
                    daftarTimerTombol[i].Stop();
                }
                double[] data =
                {
                    daftarTimerTombol[i].ElapsedMilliseconds,
                    jarak,
                    korelasix,
                    korelasiy
                };
                ArgumenKendaliTombol hasilCekTombol = new ArgumenKendaliTombol(status, data);

                DaftarFungsi[i](hasilCekTombol);

                //Debug.WriteLine(korelasix);
            }
        }