Ejemplo n.º 1
0
        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;
                }
            };
        }
Ejemplo n.º 2
0
        private void ZatvoriVrata()
        {
            TimerVrataOtvorenaStop();

            SerialPortElektronika.Write(new byte[] { 0x12 }, 0, 1);
            //WriteMessage2Lcd("Molimo da zatvorite vrata...");

            //TODO: upis alarma u bazu

            if (_frmPorukaVrata == null)
            {
                _frmPorukaVrata =
                    new frmPoruka("Vanjska vrata trezora otvorena bez aktivnosti predaje pologa duže od " + Settings.Default.TimerVrataOtvorena +
                                  " sekundi.");
                Invoke(new MethodInvoker(delegate { _frmPorukaVrata.Show(this); }));
            }

            TimerZvucniSignalStart();
        }