<commit_before>﻿using CSL;
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace Acuanet
{

    //esta clase registra una salida
    class RegSalida
    {
        CS461_HL_API reader = new CS461_HL_API();
        TrustedServer server = new TrustedServer();
        LecConfigXML cxml;
        READER_STATUS reader_status;

        string strConexion;

        //constructor
        public RegSalida()
        {
            
            //cargamos la configuracion adecuada
            cxml = new LecConfigXML("config_oleada.xml");

            //prepara la conexion a la BD
            strConexion = "server=" + cxml.Text("ACUANET/BD/SBD_ip", "127.0.0.1")
                 + ";uid=" + cxml.Text("ACUANET/BD/SBD_usuario", "root")
                 + ";pwd=" + cxml.Text("ACUANET/BD/SBD_passwd", "")
                 + ";database=" + cxml.Text("ACUANET/BD/SBD_bdn", "ntritondb");

            // incia los servicios de la antena
            this.cargaConfig();

            // incia los servicios de la antena
            if (reader.connect())
            {
                setupReader();
               
            }
            else
            {
                MessageBox.Show("No se puede conectar con el Lector de la Antena", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


            server.TagReceiveEvent += new TagReceiveEventHandler(this.Oleada_TagReceiveEvent);
        }


        //metodo que inicia captura 
        public bool iniciaCaptura()
        {
            reader.purgeAllTags();
            server.Start();
            return true;
        }

        //metodo que finaliza captura
        public bool finalizaCaptura()
        {

            server.Stop();
            return false;
        }


        //metodo que registra la salida punto de partida para el evento
        public void registraSalida(int id_categoria)
        {
            reader_status = reader.getReaderStatus();

            DateTime dt = DateTime.Now;
      
            string sql = "INSERT INTO salida (categoria,fecha_hora_ini_local,milis_ini_local,fecha_hora_ini_antena,milis_ini_antena) VALUES (" + id_categoria + ",'" + dt.ToString("yyyy-MM-dd HH:mm:ss") + "'," + dt.Millisecond + ",'" + reader_status.UTC_Time.ToUniversalTime() + "'," + reader_status.UTC_Time.ToUniversalTime().Millisecond + ");";
            
            MySqlConnection dbConn = new MySqlConnection(strConexion);
            dbConn.Open();
            MySqlCommand cmd = new MySqlCommand(sql, dbConn);
            cmd.ExecuteNonQuery();

            dbConn.Close();
            dbConn = null;

        }

        //configurador del lector y la antena 
        #region Configurador Reader

        private void cargaConfig()
        {<commit_msg>Se crea el método para poner el reloj<commit_after>﻿using CSL;
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using MySql.Data;
using MySql.Data.MySqlClient;

using System.Net;
using System.Net.Sockets;
using System.IO;

namespace Acuanet
{

    //esta clase registra una salida
    class RegSalida
    {
        CS461_HL_API reader = new CS461_HL_API();
        TrustedServer server = new TrustedServer();
        LecConfigXML cxml;
        READER_STATUS reader_status;

        string strConexion;

        //constructor
        public RegSalida()
        {
            
            //cargamos la configuracion adecuada
            cxml = new LecConfigXML("config_oleada.xml");

            //prepara la conexion a la BD
            strConexion = "server=" + cxml.Text("ACUANET/BD/SBD_ip", "127.0.0.1")
                 + ";uid=" + cxml.Text("ACUANET/BD/SBD_usuario", "root")
                 + ";pwd=" + cxml.Text("ACUANET/BD/SBD_passwd", "")
                 + ";database=" + cxml.Text("ACUANET/BD/SBD_bdn", "ntritondb");

            // incia los servicios de la antena
            this.cargaConfig();

            // incia los servicios de la antena
            if (reader.connect())
            {
                setupReader();
               
            }
            else
            {
                MessageBox.Show("No se puede conectar con el Lector de la Antena", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


            server.TagReceiveEvent += new TagReceiveEventHandler(this.Oleada_TagReceiveEvent);
        }


        //metodo que inicia captura 
        public bool iniciaCaptura()
        {
            reader.purgeAllTags();
            server.Start();
            return true;
        }

        //metodo que finaliza captura
        public bool finalizaCaptura()
        {

            server.Stop();
            return false;
        }


        //metodo que registra la salida punto de partida para el evento
        public void registraSalida(int id_categoria)
        {
            
            
            reader_status = reader.getReaderStatus();
            
            DateTime dt = DateTime.Now;

            this.ponReloj(dt);
      
            string sql = "INSERT INTO salida (categoria,fecha_hora_ini_local,milis_ini_local,fecha_hora_ini_antena,milis_ini_antena) VALUES (" + id_categoria + ",'" + dt.ToString("yyyy-MM-dd HH:mm:ss") + "'," + dt.Millisecond + ",'" + reader_status.UTC_Time.ToUniversalTime() + "'," + reader_status.UTC_Time.ToUniversalTime().Millisecond + ");";
            
            MySqlConnection dbConn = new MySqlConnection(strConexion);
            dbConn.Open();
            MySqlCommand cmd = new MySqlCommand(sql, dbConn);
            cmd.ExecuteNonQuery();

            dbConn.Close();
            dbConn = null;

        }

        private void ponReloj(DateTime dt_local){
            String scmd = "setDateTime";
            StringBuilder sbReq = new StringBuilder();

            sbReq.Append(String.Format("{0}API?command={1}&session_id={2}", reader.getURI(), scmd, reader.session_id));


            string sfh = "&Year=" + dt_local.Year + "&Month=" + dt_local.Month +
                "&Day=" + dt_local.Day + "&Hour=" + dt_local.Hour + "&Minute=" + dt_local.Minute + "&Second=" + dt_local.Second + "";

               sbReq.Append(sfh);
           

            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sbReq.ToString());
            req.Timeout = 30;
        
        }

        //configurador del lector y la antena 
        #region Configurador Reader

        private void cargaConfig()
        {
{'fraction_non_alphanumeric': 0.10534351145038168, 'fraction_numerical': 0.0044274809160305345, 'mean_word_length': 1.8606986899563318, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 14}, 'pii_count': 2, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5803251', 'n_tokens_mistral': 2002, 'n_tokens_neox': 1907, 'n_words': 409}