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; } }; }
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); }
private void ZatvoriZasun() { TimerZasunStop(); TransakcijaUTijeku = false; _transakcija = null; SerialPortElektronika.Write(new byte[] {0x11}, 0, 1); //UvodnaPoruka(); }
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); }