Jump to content

Archived

This topic is now archived and is closed to further replies.

Haroldo Jr.

Leitura de Tags RFID C#

Recommended Posts

Bom dia galera.

 

Estou com um problema na minha aplicação. Tenho um aplicativo que em c# que cria um serviço de leitura de tags RFID, o aplicativo funciona legal, ele faz a leitura das tags normalmente, ele por exemplo ler a tag 001 essa tag passou pelo leitor 13:00, dai voltou a passar pelo leitor 13:03, o leitor ler e manda pro banco. E quando uma tag fica por perto ele fica inserindo direto os dados no banco. Preciso fazer com que seu leitor só mande os dados para o banco de 5 em 5 minutos depois que essa tag foi lida.

 

Desde já agradeço.

 

 

segue o código.

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;


namespace Persistencia.DAO
{
    public class DadosDAO
    {
        #region insert


        public void insert(VO.Dados dados, SqlConnection connection, out Base.Erro error)
        {
            error = new Base.Erro();
            string workStation = System.Environment.MachineName.ToString().Trim();
            string programa = "MIDDLEWARE";
            


            SqlConnection con = connection;
            SqlCommand cmd = con.CreateCommand();


            string msg = "";


            try
            {
                con.Open();


                string sql = "INSERT INTO TBMW0001(MWR0REDEPC, MWR0REDDTT, MWR0EPCPFX, MWR0IPREDR, MWR0EPCSTS, MWR0USRINC, MWR0PGMINC, MWR0WRKINC, MWR0DTTINC, MWR0USRUPD, MWR0PGMUPD, MWR0WRKUPD, MWR0DTTUPD) VALUES('";
                sql += dados.EPC + "', '";
                sql += dados.DataLeitura.Year + "/" + dados.DataLeitura.Month + "/" + dados.DataLeitura.Day + " " + dados.DataLeitura.Hour + ":" + dados.DataLeitura.Minute + ":" + dados.DataLeitura.Second + "', '";                
                sql += dados.Prefixo + "', '";
                sql += dados.Ip + "', '";
                sql += dados.Status + "', '";
                sql += dados.Usuario + "', '";
                sql += programa + "', '";
                sql += workStation + "', '";
                sql += DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + " " + DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second + "', '";
                //sql += DateTime.Now.ToShortTimeString().Trim() + "', '";
                sql += dados.Usuario + "', '";
                sql += programa + "', '";
                sql += workStation + "', '";
                sql += DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day + " " + DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second + "')";
                //sql += DateTime.Now.ToShortTimeString().Trim() + "')";


                cmd.CommandText = sql;
                cmd.ExecuteNonQuery();


                error.setError(0, msg);


            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }


            cmd.Dispose();
            con.Close();
        }


        #endregion


        #region update


        public void update(VO.Dados dados, SqlConnection connection, out Base.Erro error)
        {
            error = new Base.Erro();


            SqlConnection con = connection;
            SqlCommand cmd = con.CreateCommand();


            string msg = "";


            try
            {
                con.Open();


                string sql = "UPDATE TBMW0001 SET MWR0REDDTT = '";
                sql += dados.DataLeitura.Year + "/" + dados.DataLeitura.Month + "/" + dados.DataLeitura.Day + " " + dados.DataLeitura.Hour + ":" + dados.DataLeitura.Minute + ":" + dados.DataLeitura.Second + "', MWR0DTTUPD =  '";
                sql += dados.DataLeitura.Year + "/" + dados.DataLeitura.Month + "/" + dados.DataLeitura.Day + " " + dados.DataLeitura.Hour + ":" + dados.DataLeitura.Minute + ":" + dados.DataLeitura.Second + "' WHERE MWR0REDEPC = '" + dados.EPC + "'";


                cmd.CommandText = sql;
                cmd.ExecuteNonQuery();


                error.setError(0, msg);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }


            cmd.Dispose();
            con.Close();
        }


        #endregion


        #region listEPC


        public List<VO.Dados> listByEPC(string epc, SqlConnection connection, out Base.Erro error)
        {
            error = new Base.Erro();


            SqlConnection con = connection;
            SqlCommand cmd = con.CreateCommand();
            List<VO.Dados> list = new List<VO.Dados>();


            string msg = "";


            try
            {
                con.Open();


                string sql = "SELECT * FROM TBMW0001 WHERE MWR0EPCPFX = 'A001' AND MWR0REDEPC = '" + epc + "'";


                cmd.CommandText = sql;


                SqlDataReader data = cmd.ExecuteReader();


                while (data.Read())
                {
                    VO.Dados movimentacao = new VO.Dados();


                    movimentacao.EPC = data["MWR0REDEPC"].ToString().Trim();
                    list.Add(movimentacao);
                }


                error.setError(0, msg);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message);
            }


            cmd.Dispose();
            con.Close();


            return list;
        }


        #endregion
    }
}

Share this post


Link to post
Share on other sites

Você tem que deixar ele mandar quantas vezes quiser,

dai você tem que tirar os registros da tabela com outro programa...

Lembre-se o leitor de RFID só serve para ler e gravar em um arquivo texto porque se não ele pode perder leituras...

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.