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; } }; }
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(); }