예제 #1
0
파일: frmMain.cs 프로젝트: bbuic/Trunk
        public frmMain()
        {
            InitializeComponent();

            if (!SerialPortElektronika. IsOpen)
                SerialPortElektronika.Open();

            try
            {
                _timerBackUp = new Timer(BackUp, null, TimeSpan.FromMinutes(1), TimeSpan.FromHours(24));
            }
            catch (Exception e)
            {
                Utils.Log(e);
            }

            //HENDLANJE PORUKA ELEKTRONIKE
            SerialPortElektronika.DataReceived += delegate
            {
                if(_obradaSerijskogPortaUTijeku)
                    return;
                try
                {
                    _obradaSerijskogPortaUTijeku = true;

                    switch (SerialPortElektronika.ReadByte())
                    {
                        case 0x20:

                            if(SerialPortElektronika.BytesToRead < 2 || TransakcijaUTijeku)
                                break;

                            byte[] buffer = new byte[2];
                            buffer[1] = (byte)this.SerialPortElektronika.ReadByte();
                            buffer[0] = (byte)this.SerialPortElektronika.ReadByte();
                            var kartica = ((BitConverter.ToInt16(buffer, 0)).ToString()).PadLeft(5, '0');

                            if (ObjectFactory.KarticaDataService.PostojiBrojKartice(kartica, true))
                            {
                                SerialPortElektronika.Write(new byte[] { 0x10 }, 0, 1);

                                _transakcija = new Transakcija {Kartica = kartica, DatumOd = DateTime.Now, Trezor = true};
                                ObjectFactory.TransakcijaDataService.UnesiTransakciju(_transakcija);

                                TimerZasunStart();
                                TransakcijaUTijeku = true;
                            }
                            break;

                        case 0x21: //vrata otvorena

                            if (!TransakcijaUTijeku)
                                break;

                            TimerZasunStop();
                            TimerVrataOtvorenaStart();
                            break;

                        case 0x23: //ubacaj vrecica

                            if(!TransakcijaUTijeku)
                                break;

                            TimerVrataOtvorenaReStart();

                            _transakcija.BrojVrecica += 1;
                            ObjectFactory.TransakcijaDataService.PromjeniTransakciju(_transakcija);

                            if (_frmPorukaVrata != null)
                                Invoke(new MethodInvoker(delegate { _frmPorukaVrata.Close(); _frmPorukaVrata.Dispose(); _frmPorukaVrata = null; }));
                            break;

                        case 0x22: //vrata zatorena

                            if (!TransakcijaUTijeku)
                                break;

                            TimerVrataOtvorenaStop();

                            TransakcijaUTijeku = false;

                            _transakcija.DatumDo = DateTime.Now;
                            ObjectFactory.TransakcijaDataService.PromjeniTransakciju(_transakcija);
                            _transakcija = null;

                            if (_frmPorukaVrata != null)
                                Invoke(new MethodInvoker(delegate { _frmPorukaVrata.Close(); _frmPorukaVrata.Dispose(); _frmPorukaVrata = null; }));
                            break;

                         case 0x24: //blokada na fotoceliji

                            if (_frmPorukaFoto == null)
                            {
                                _frmPorukaFoto =
                                    new frmPoruka("Blokada fotosenzora.");
                                Invoke(new MethodInvoker(delegate { _frmPorukaFoto.Show(this); }));
                            }

                            //TODO: napraviti upis alarma
                            break;

                        case 0x27: //maknula se blokada sa fotocelije
                            if (_frmPorukaFoto != null)
                                Invoke(new MethodInvoker(delegate { _frmPorukaFoto.Close(); _frmPorukaFoto.Dispose(); _frmPorukaFoto = null; }));
                            break;
                    }
                }
                catch (Exception e)
                {
                    Utils.Log(e);
                    try
                    {
                        SerialPortElektronika.Close();
                    }catch{}
                    Application.Restart();
                }
                finally
                {
                    if (SerialPortElektronika.BytesToRead > 0)
                        SerialPortElektronika.DiscardInBuffer();

                    this.Invoke(new MethodInvoker(delegate { TransakcijeModelService.Refresh(); }));

                    _obradaSerijskogPortaUTijeku = false;
                }
            };
        }
예제 #2
0
        public void UnesiTransakciju(Transakcija transakcija)
        {
            OleDbCommand command = new OleDbCommand("INSERT INTO DNTTransakcije (kartica, dolazak, vrecica, odlazak, trezor) VALUES (?, ?, ?, ?, ?)");

            command.Parameters.Add("@kartica", OleDbType.VarChar).Value = transakcija.Kartica;
            command.Parameters.Add("@dolazak", OleDbType.Date).Value = transakcija.DatumOd;
            command.Parameters.Add("@vrecica", OleDbType.SmallInt).Value = transakcija.BrojVrecica;
            command.Parameters.Add("@odlazak", OleDbType.Date).Value = transakcija.DatumDo ?? (object)DBNull.Value;
            command.Parameters.Add("@trezor", OleDbType.Boolean).Value = transakcija.Trezor;

            ExecuteNonQuery(command);
        }
예제 #3
0
파일: frmMain.cs 프로젝트: bbuic/Trunk
 private void ZatvoriZasun()
 {
     TimerZasunStop();
     TransakcijaUTijeku = false;
     _transakcija = null;
     SerialPortElektronika.Write(new byte[] {0x11}, 0, 1);
     //UvodnaPoruka();
 }
예제 #4
0
        public void PromjeniTransakciju(Transakcija transakcija)
        {
            OleDbCommand command = new OleDbCommand("UPDATE DNTTransakcije SET vrecica = ?, odlazak = ? WHERE dolazak = ?");

            command.Parameters.Add("@vrecica", OleDbType.SmallInt).Value = transakcija.BrojVrecica;
            command.Parameters.Add("@odlazak", OleDbType.Date).Value = transakcija.DatumDo ?? (object)DBNull.Value;
            command.Parameters.Add("@dolazak", OleDbType.Date).Value = transakcija.DatumOd;

            ExecuteNonQuery(command);
        }